ci-server-engineer/knowledge/manuals/IM36K10L10-01EN.md
cliu bf7d88a027 R1.05 re-check batch 3: alarms, audit, authorization, classes, HAC, reporting, pyTOOLS
Full manual diffs (L15, C20, E30, L25, J40, C10 §2, L10, P10, P11, J20,
C30, P20, R40, E10) and read-only checks on the shared R1.05 test server.
Skills and summaries moved to R1.05; new skill pytools (IM 36K10P40) from
docs (no Python on the test server). Issues ISS-132..181; corrections to
version-differences (E10, E30, P11, dss_ath_grp_u0104); C10 summary lists
the 3 new authorization actions; r105-verification V10-V17.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:21:36 +11:00

9.9 KiB
Raw Blame History


manual: IM 36K10L10-01EN title: Class/Object Engineering edition: 4th Edition, Feb. 2026 (first summarized from the 3rd Edition, Sep. 2023) version: R1.05 (first written for R1.03) status: from docs; opc.sup, process_start.cmd, the PROCESS data files and opcdbg (database check, get class/object, signals, attributes, reset class, dump, performance main info) checked on the R1.03 test system 2026-09-30. R1.05 re-check 2026-10-09 (read-only, R1.05 test server): manual text unchanged except contact information (full word diff); opc.sup, prc.sup, dataset definitions, class source templates and Java logging files identical; start scripts differ only as listed in §1; database check and OPCEXE1 performance main info re-run

Class/Object Engineering (R1.05)

R1.05 (4th Edition, Feb. 2026): the revision table lists only contact information, and a word-by-word diff with the 3rd Edition found nothing else. Section numbers are unchanged.

PROCESS Service runs objects: instances of classes (programs written in the Traditional or Java PROCESS Service language) that link a set of items through signals and are run by trigger groups, signal changes or timers. Internally all its process names start with OPC ("Object oriented Process Control") — nothing to do with the OPC Foundation standard. Section numbers refer to the manual. Language details: IM36K10P10-01EN.md (Traditional) and IM36K10P11-01EN.md (Java).

1. Processes (§1)

Process Role
OPCMAN Manager: keeps the configuration (trigger groups, classes, objects); every client request goes through it
OPCCOM / OPCJCOM Compiler for Traditional / Java classes
OPCACT / OPCJACT Activator: creates/deletes objects (runs the class prolog / create()), creates and deletes the items an object makes
OPCLOA Loader: passes run information to the executors; keeps a private copy of the data store on a front-end node
OPCEXE / OPCJEXE Executor: runs the objects (Traditional / Java); creates the ALARM-statement items
opcdbg Command-line debugger (see §4)

Rules for distributed systems: OPCMAN, the compilers and activators run together on the host node, one of each. Loader/executor pairs may run on other nodes; several executors per node are allowed, each serving its own priority range (0–999).

Installed (R1.03 test system; same on R1.05): process_start.cmd starts opcloa; on the host node also opcman, opcact, opccom; then four Traditional executors opcexe1…opcexe4 and one Java executor opcjexe (a javaw process). OPCJCOM/OPCJACT are not started by the script; OPCMAN starts them on demand (process_jcom_start.cmd, process_jact_start.cmd) and they exit after an idle time. Java process logging is configured in %TLS_WAP_PATH%\cfg\properties\opcj{act,com,exe}logging.properties.

R1.05 differences (verified 2026-10-09, R1.05 test server):

  • The Java processes run on the bundled JDK Eclipse Temurin 11.0.28 (tls\jre; R1.03: 11.0.18), and their class path adds tls\exe\lib\* (on R1.05 it holds about 100 bundled third-party jars; on R1.03 the folder held only installer.txt).
  • process_start.cmd ends by calling every ?*_process_start.cmd in tls\com, and process_stop.cmd first calls every ?*_process_stop.cmd: a hook for application scripts, as in the other service scripts (system-management ISS-121).
  • Running processes seen: opcloa, opcman, opcact, opccom, four opcexe and one javaw running the Java executor opcjexe (as on R1.03).
  • Preinstalled classes: AOG_BASE, AOG_JBASE, PRC_STATUS_BASE (also on R1.03) and new Java samples for OPC UA methods, UAC_MTD_JBASE and UAS_MTD_JBASE (R1.04; see IM36K10L45-01EN.md §10.6 and §11.4 and skill data-access).

2. Setup files (§2)

opc.sup holds settings for all PROCESS processes; a file named after one process's BUS queue (e.g. opcman.sup) overrides it for that process only. The Java processes read only opc.sup. Change it with the Setup File Editor (skill portal-setup); a restart is needed.

Main keywords and the installed values (differences from the manual: ISS-026). opc.sup and prc.sup are byte-identical on R1.03 and R1.05 (2026-10-09):

Keyword Meaning Installed
CLASS-TEMPLATE, JCLASS-TEMPLATE Source template for new classes not set → %TLS_DAT_PATH%\opc_src_tpl.asc / opc_jsrc_tpl.asc
EVENT-BUFFER = node, size, time-out ITEM Service buffers item events for PROCESS -1, 1000, 0.1 (all nodes)
IMMED-EVENTS One extra update per item when an executor starts NO (manual: default YES)
COLD-START Front-end loads everything from the host at start (legacy) NO
AUDIT Audit trail for configuration and value changes NO
FLOW-CONTROL = interval, timeout (s) Heartbeat from ITEM Service; 0,0 disables 30,60 (manual default 300/360)
TRIGGER-QUEUE-SIZE Queued triggers per object; at 90 % a "Loosing real-time" warning 100
ALARM-ITEMS, ALARM-PRIORITY Items and priorities for the language's ALARM statement not set
HOST-NODE PROCESS host node -1 (the system host)
ALM-PROC, ADT-PROC, ITM-PROC Queue names of ALARM, AUDIT, ITEM Service ITM-PROC = ITM
PROC-TIME = wait s, jact min, jcom min Start wait and idle time-outs of OPCJACT/OPCJCOM; 0 = 30 min 20,0,0
QUEUE-SIZE = process, kB BUS queue sizes OPCEXE1–4 300, OPCMAN 400, OPCLOA 252
PRIORITY-RANGE = executor, from, to Priority range per executor; must not overlap OPCEXE1 0–249, OPCEXE2 250–499, OPCEXE3 500–749, OPCEXE4 750–999
LOCK-CHECK (s) Manager housekeeping interval 10
SCHEDULER-INTERVAL (ms) Finest run resolution for Traditional objects 500
TRACE Debug output of OPCEXE to stdout NO
STATISTICS Performance statistics for opcdbg (Traditional; Java always on) NO
PRINT PRINT statement output goes to the message log YES
SYMTAB-SIZE, INCTAB-SIZE, ALARMTAB-SIZE, TIMERTAB-SIZE, ATTRIBTAB-SIZE, SIGTAB-SIZE, LABELTAB-SIZE, VARTAB-SIZE, FNCTAB-SIZE, STRPOOL-SIZE, CODE-SIZE Compiler table sizes (Traditional) 4000, 100, 40, 40, 1000, 1000, 100, 4000, 200, 32 kB, 1000 kB

Also in the file: hidden keywords FLDSEP = "," and IGNEXI = 1 (not described). opcini.sup holds only a licence line (differs per installation); leave it alone.

The object's priority decides which executor runs it: sample objects with priority 0 run in OPCEXE1 (seen with opcdbg, "Running in : 1, OPCEXE1").

3. Ways to create classes and objects (§3)

  1. Engineering Module (normal GUI way).
  2. opcdbg (repair situations).
  3. An application using the PROCESS routine interface.
  4. Quick load with dssqld (CLASS_DF, OBJECT_DF, TRIGGER_DF) — used by this repo; see skill class-object-engineering.

4. Debugger opcdbg (§4)

Interactive; first asks the OPC host node (0 = this node), then the action: 1 trigger groups, 2 classes, 3 objects, 4 performance, 5 utilities, -1 exit. opcdbg 0 <action> skips the first two questions. Answers can be piped in (one per line); end with -1 lines so it exits, and keep a time-out: on end of input it repeats the last prompt forever.

Menu Useful actions
Classes (2) 5 get class (by Name or Id — asked first), 7 compile, 8 reset class (all its objects on a node), 12 triggers, 16 all attributes, 18 all signals, 19/20 get/modify attribute value, 21 hide/unhide code
Objects (3) 4 get object (N/I first), 6 reset, 7 trigger, 12 all attributes, 14 all signals (with item ids), 15 debug on/off (writes a trace file), 16/17 get/modify attribute value, 18 object status (runs, executor)
Performance (4) Asks front-end node and executor name (default OPCEXE, installed names are OPCEXE1…4); 1 main info, 5 class info, 7 object info, 8 reset statistics, 9 statistics on/off, 10/11 top-10 classes/objects
Utilities (5) 1 reset host/front-end, 2 pending front-end updates, 3/4 dump classes/objects, 5 database check (read-only), 6 database repair (deletes incomplete data; back up first), 7 disassemble class, 8 clean up "item used" marks, 9 memory dump

Verified on R1.05 2026-10-09: the database check (utilities 5) and the performance main info for OPCEXE1 behave as on R1.03 (database check without warnings). The main info for OPCJEXE gave no output to piped input within 40 s (ISS-157; try it interactively).

Verified 2026-09-30 (R1.03): Reset class asks class name, node and a file for a reset report (not in the manual; empty line = none). Times are printed in GMT. The dump files (3/4) are not in quick load format and dssqld -i rejects them (ISS-027); export CLASS_DF / OBJECT_DF with dssqld -e instead. Cleanup item used file fixes items that cannot be deleted because a removed object still marks them as used.

5. Data store (Appendix 1)

Owned by PROCESS Service, in %TLS_DAT_PATH%: opc_clsdef (class definitions), class source (installed name opc_clssrc, manual opc_clasrc), opc_clsobj (compiled code), opc_objdef, opc_attrib (attribute values of classes and objects), opc_signal (item per signal, with storage info), opc_trgdef, opc_trgact (trigger group ↔ class/object links), opc_msgovf (pending updates to front-ends). They depend on each other: losing one corrupts the whole store; check with opcdbg utilities 5, repair with 6. Back them up together (they are part of the tls\dat backup).

Related datasets (read with dssqld -e, see IM36K10J10-01EN.md; definitions in tls\src\*.dss identical on R1.03 and R1.05, 2026-10-09): CLASS_DF, OBJECT_DF, TRIGGER_DF, CLASS_SIGNAL_DF, OBJECT_SIGNAL_DF (object:signal → item), CLASS_ATTR_VAL, OBJECT_ATTR_VAL (attribute values, writable with dssqld -m), CLASS_INCLUDED_DF, CLASS_RESET_COMMAND (system-wide reset command used by the Engineering Module; not practiced).