Tested on the R1.05 test server 2026-10-09..12 with a user project (own objects only); not yet on CI-Eng-Sample (ISS-188). Only results that were tested are included; inferences, code-only and manual-only points and the untested sample layout change were left out. - layouts: 'logout' is a secondary logout, always disabled on the R1.05 web client; 'exit' closes the window and ends the session (ISS-182). - create-display: R1.05 web client table (String items in text vs textField, fixed text alignment, start-hidden limits ISS-183, two visibility conditions, On entry display actions, rectangle blinking, verified connections, first load). - java-class 4a: signal arrays at scale, write on change, attribute arrays, offline javac/javap check; change-reset-class: new signals need the object recreated, attributes lost (ISS-185); opcdbg reset in cmd, TRIGGER_1 via dssqld -m. - string-items (ISS-187), users-groups, modbus-station (400 registers, comm loss), export-dataset (NAME range filter), item-alarming. - new task system-management/package-project.md; tools/ModbusSim.java (tested on R1.05: FC03/04/06/16, exceptions, modes); AMSI (ISS-186). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.9 KiB
task: Change a class that already has objects (compile and reset) version: R1.05 (first written for R1.03) source: IM 36K10L10-01EN 4th ed. (Feb. 2026) §4 (Reset class); IM 36K10P11-01EN 4th ed. §2.3, §10.4; practiced with CI-Eng-Sample class CIENG_TANK 2026-09-30 status: verified on R1.03 (2026-09-30, Engineering Module reset 2026-10-01). Not re-tested on R1.05; it needs the sample loaded again on the shared test server (awaiting decision, ISS-158). Manuals unchanged and CLASS_DF / CLASS_RESET_COMMAND definitions identical on R1.05 (2026-10-09), so the R1.03 results are expected to hold Re-tested on R1.05 2026-10-09 on the shared test server with the user's approval (temporary sample records, everything removed, before/after snapshot identical): compile sets RESET_REQUIRED 1 and the object keeps the old code; dssqld RESET 1 still does nothing (ISS-028); opcdbg Classes action 8 resets (RESET_REQUIRED 0, new PRINT text at once); OBJECT_ATTR_VAL CAPACITY 400 → volume 200 at level 50 (V15). Compile and reset leave opc_t*.asc/.lst/.rst files in %TLS_LST_PATH%; delete them after a test.
Change a class that has objects
Objects keep running the old compiled code until their class is reset (verified). A reset
restarts every object of the class; by the manual, ONCE trigger groups fire again. Items the
objects created were kept, with their values (verified).
1. New source and compile
dssqld -m with the class name, COMPILE 1 and the new METHOD:
@FIELDS
NAME,COMPILE,METHOD
@CLASS_DF
"CIENG_TANK",1,@"
CLASS CIENG_TANK;
…
ENDCLASS CIENG_TANK;
"@
Errors 0 = compiled. On a compile error the old code stays; see load-class-object.md for
reading the error listing.
Export the class (load-class-object.md §2): after the compile RESET_REQUIRED = 1 and
OBJECTS_RESET = 0 of OBJECTS n. Verified: the object still printed the old text.
2. Reset the class
Works — opcdbg, Classes, action 8 Reset class: class name, node (0 = this node), file
for a reset report (empty = none; this prompt is not in the manual):
printf '2\n8\n<CLASS>\n0\n\n-1\n-1\n' | timeout 30 opcdbg 0
(Bash. Interactively, type the same answers.) In Windows cmd, put the answers in a file
(2, 8, <CLASS>, 0, empty line, -1, -1, one per line, CRLF) and run
opcdbg 0 < reset_class.txt (verified on R1.05 2026-10-12). A dssqld -m with NAME,TRIGGER_1,COMPILE,METHOD
also changes the class's trigger group (verified on R1.05). Keep the time-out: opcdbg repeats its last
prompt forever when the input runs out.
Afterwards RESET_REQUIRED = 0 and the object used the new code at once (verified).
Also works — Engineering Module: Configuration › I/O processing › Classes › right-click the
class › Reset. The Class - reset window shows Reset required / Extended reset required,
options Force extended reset and Abort after first failure, progress (reset n of m, failed)
and a reset report; click Reset (verified by the user 2026-10-01: 1 of 1 object reset,
RESET_REQUIRED 0). This window is the front end of dataset CLASS_RESET_COMMAND.
Does not work (verified 2026-09-30, ISS-028):
dssqld -mwithNAME,RESET="<class>",1(also withRESET_NODE= the host node name): accepted with 0 errors but nothing happens.dssqld -monOBJECT_DFwithRESET1: refused withOPC-E-OBJ_RSTREQ, The class needs to be reset first.CLASS_RESET_COMMAND(system-wide reset, fieldsRESET,GENERATE_REPORT,PROGRESS,OBJECTS_RESET…): the dataset allows only read and update,dssqld -ereturns no record,dssqld -mgives Not found,dssqld -iis refused (DSS-E-NO_AUTH). Verified 2026-10-01.
3. Changing prompts or signals
Only a change in the method bodies was practiced on R1.03. When the class prolog changes (new
signals, prompts, attributes, created items), check EXTENDED_RESET_REQUIRED in CLASS_DF
after compiling; what an extended reset does was not tested. The safe way is to recreate the
objects (remove, load) — note that removing an object deletes the items it created, with their
history links.
R1.05, Java (verified 2026-10-12, user project on the R1.05 test server, 2026-10-09 to 10-12): new signals are refused while objects exist. dssqld -m of
the class with extra define…Signal fields gives only DSI-E-OPCCOMERR, Compilation failed with 1 error(s) / DSSP-E-UPDREC in the .qlo; the reason is in the newest %TLS_ROOT_PATH%\tls\lst\opc_t*.lst:
**** ERROR: Attribute or signal definitions cannot be changed while objects are derived from the class. The old class keeps running. Procedure that worked: remove the object (@OBJECT_DF, -r),
dssqld -m the class, wait for the compile, insert the object again. The object's attributes are
lost with it; the tested class rebuilt its data on the first run of the new object from items it
also writes (its log message confirmed the attributes were empty).