2.9 KiB
| task | version | source | status |
|---|---|---|---|
| Change a class that already has objects (compile and reset) | R1.03 | IM 36K10L10-01EN §4 (Reset class); IM 36K10P11-01EN §2.3, §10.4; practiced with CI-Eng-Sample class CIENG_TANK 2026-09-30 | verified |
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.) 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. 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.