Compare commits
No commits in common. "edb9948891a7ae341611facac2048a80aebfb1ae" and "5e58499fe5c81b55a131292aab135040516378c7" have entirely different histories.
edb9948891
...
5e58499fe5
25 changed files with 12 additions and 449 deletions
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
name: class-object-engineering
|
||||
description: >-
|
||||
CI Server R1.03 PROCESS Service classes, objects and trigger groups. Use when the user wants
|
||||
to create a trigger group, write or compile a class (traditional language), create objects
|
||||
from a class, or load classes and objects with quick load files. Sources IM 36K10G10-01EN
|
||||
(Tutorial) and IM 36K10J10-01EN; to be extended with IM 36K10L10, P10 and P11 in phase 6.
|
||||
---
|
||||
|
||||
# Class and object engineering (R1.03)
|
||||
|
||||
Background: `knowledge/manuals/IM36K10G10-01EN.md` (chapter 5) and
|
||||
`knowledge/manuals/IM36K10J10-01EN.md` (sections 2.4 and 5.3). Known issues for PROCESS
|
||||
Service: `knowledge/manuals/IM36K01A50-01EN.md`.
|
||||
|
||||
Rules: run `system-check` first; creating classes and objects changes the running system.
|
||||
|
||||
| Task | File | Status |
|
||||
|---|---|---|
|
||||
| Trigger group, class (compiled on load) and object via quick load | `tasks/load-class-object.md` | verified |
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
---
|
||||
task: Create a trigger group, class and object with quick load files
|
||||
version: R1.03
|
||||
source: IM 36K10G10-01EN §5.1–5.3; IM 36K10J10-01EN §5.6; practiced with CI-Eng-Sample 2026-09-30
|
||||
status: verified
|
||||
---
|
||||
|
||||
# Trigger group, class and object via quick load
|
||||
|
||||
Load in this order (each with `dssqld -i <file>.qli -l <file>.qlo`, check `Errors` = 0);
|
||||
remove in reverse (object, class, trigger group) with `NAME`-only files and `dssqld -r`.
|
||||
|
||||
**1. Trigger group** (`TRIGGER_DF`, name max 16 characters):
|
||||
|
||||
```
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,TRIGGER_INTERVAL
|
||||
|
||||
@TRIGGER_DF
|
||||
"CIENG_1S","CI-Eng-Sample one second trigger","1 seconds"
|
||||
```
|
||||
|
||||
**2. Class** (`CLASS_DF`, name max 16 characters). The source goes in the `METHOD` memo field,
|
||||
between `@"` and `"@` on their own lines; `COMPILE` 1 compiles it on load; `TRIGGER_1`
|
||||
attaches a trigger group:
|
||||
|
||||
```
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,PF_LANGUAGE,TRIGGER_1,COMPILE,LISTING_WANTED,METHOD
|
||||
|
||||
@CLASS_DF
|
||||
"CIENG_INCR","Count CI-Eng-Sample.DEMO.COUNTER 1..100","Traditional","CIENG_1S",1,1,\
|
||||
@"
|
||||
CLASS CIENG_INCR;
|
||||
PROLOG
|
||||
SIGNAL INPUT := "CI-Eng-Sample.DEMO.COUNTER";
|
||||
BODY
|
||||
METHOD UP_AND_DOWN;
|
||||
BODY
|
||||
IF (INPUT >= 100) THEN
|
||||
INPUT := 0;
|
||||
ENDIF;
|
||||
INPUT := INPUT + 1;
|
||||
ENDMETHOD UP_AND_DOWN;
|
||||
ENDCLASS CIENG_INCR;
|
||||
"@
|
||||
```
|
||||
|
||||
The item a `SIGNAL` names must exist first (or be created by the class with `FROM … MAKE`).
|
||||
|
||||
**3. Object** (`OBJECT_DF`): full name in its section, and the class:
|
||||
|
||||
```
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,CLASS
|
||||
|
||||
@OBJECT_DF
|
||||
"CI-Eng-Sample.DEMO.INCR1","Counts DEMO.COUNTER every second","CIENG_INCR"
|
||||
```
|
||||
|
||||
## Check
|
||||
|
||||
Run `itmval -g -n CI-Eng-Sample.DEMO.COUNTER` a few seconds apart: the value rises by one per
|
||||
second. To inspect a class, export it with a filter file (`@SELECT`, then
|
||||
`'NAME = "<class>"'`, then `@CLASS_DF`).
|
||||
|
||||
Example files: `examples/CI-Eng-Sample/05_trigger_df.qli`, `06_class_df.qli`, `07_object_df.qli`,
|
||||
`86_` to `88_remove_*.qli`.
|
||||
|
|
@ -24,7 +24,7 @@ Rules:
|
|||
|
||||
| Task | Where | Status |
|
||||
|---|---|---|
|
||||
| Check a machine against the setup and security requirements | `tasks/setup-check.md` | verified |
|
||||
| Check a machine against the setup and security requirements | `tasks/setup-check.md` | draft, awaiting confirmation |
|
||||
| New installation (physical, VM, dual-redundant): order of work, Windows settings, Vnet/IP, install, IT security, licence | Setup summary §2 | from docs |
|
||||
| Start/stop, reinstall, upgrade (incl. HAC), extend licence, uninstall | Setup summary §3 | from docs |
|
||||
| Install CI Server Remote Connect; web ports | Setup summary §2.4 | from docs |
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
task: Check a machine against the CI Server setup and security requirements
|
||||
version: R1.03
|
||||
source: IM 36K01C10-01EN §1, §2.1.2, §3.2.12; IM 36K01C30-01EN §2.2, §3.2; practiced on the test system 2026-09-30
|
||||
status: verified (2026-09-30)
|
||||
status: draft, awaiting confirmation
|
||||
---
|
||||
|
||||
# Setup check (read-only)
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
name: item-engineering
|
||||
description: >-
|
||||
CI Server R1.03 sections, items and sub-items. Use when the user wants to create or change
|
||||
sections, items or sub-items (integrator, min-max, pulse, rate-of-change), set limits,
|
||||
scale or value format, block or unblock items or sections, or understand item status and
|
||||
option flags. Sources IM 36K10G10-01EN (Tutorial); to be extended with IM 36K10C10 in phase 5.
|
||||
---
|
||||
|
||||
# Item engineering (R1.03)
|
||||
|
||||
Background: `knowledge/manuals/IM36K10G10-01EN.md` (chapter 3). Bulk creation of sections and
|
||||
items uses quick load files: skill `system-management`, task `load-remove-records.md`.
|
||||
Reading and writing values: `system-management` task `read-write-item.md`.
|
||||
|
||||
Rules:
|
||||
- Run the `system-check` skill first; follow the user's chosen way of working for any change.
|
||||
- Names: `Section.Sub-section.Item`, max 255 bytes, no `:` or `.` inside a name, case insensitive.
|
||||
|
||||
| Task | File | Status |
|
||||
|---|---|---|
|
||||
| Sub-items (integrator, min-max) | `tasks/sub-items.md` | verified |
|
||||
| Block / unblock an item; write to a blocked item | `tasks/block-item.md` | verified |
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
---
|
||||
task: Block / unblock an item and write to a blocked item
|
||||
version: R1.03
|
||||
source: IM 36K10G10-01EN §3.3, §3.4; practiced with CI-Eng-Sample 2026-09-30
|
||||
status: verified
|
||||
---
|
||||
|
||||
# Block / unblock an item
|
||||
|
||||
A blocked item is not updated (e.g. during device maintenance). Blocking can be done per item,
|
||||
sub-item or section; sub-items of a blocked item keep working. **Changes live behaviour:**
|
||||
follow the user's chosen way of working.
|
||||
|
||||
Block (`BLOCKED` 1) or unblock (`BLOCKED` 0) with an update file and `dssqld -m`:
|
||||
|
||||
```
|
||||
@FIELDS
|
||||
NAME,BLOCKED
|
||||
|
||||
@ITEM_DF
|
||||
"<Section>.<Tag>",1
|
||||
```
|
||||
|
||||
```
|
||||
dssqld -m block.qli -l block.qlo
|
||||
```
|
||||
|
||||
(Engineering Module: right-click the item or section › *Block/Unblock*.)
|
||||
|
||||
## Behaviour (verified on `CI-Eng-Sample.TANK1.INFLOW`)
|
||||
|
||||
- Blocked: option flag `blk` appears in `itmval -g`; the status number is unchanged (stayed 9).
|
||||
- `itmval -p -n <item> -v <value>` on a blocked item is **silently ignored** (no error, value
|
||||
unchanged; `knowledge/issues.md` ISS-011). Add `-o` to overwrite:
|
||||
`itmval -p -n <item> -v <value> -o`.
|
||||
- After unblocking, `blk` is replaced by `ublk` (meaning not yet confirmed, see ISS-001).
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
---
|
||||
task: Create sub-items (integrator, min-max)
|
||||
version: R1.03
|
||||
source: IM 36K10G10-01EN §3.1.5, §3.2.3; practiced with CI-Eng-Sample 2026-09-30
|
||||
status: verified
|
||||
---
|
||||
|
||||
# Sub-items
|
||||
|
||||
A sub-item hangs under an item (`<Section>.<Tag>.<Sub>`) and processes the main item's value.
|
||||
Types: `Integrator`, `Min-Max`, `Pulse`, `Rate-of-Change`, `Typeless`. Sub-items cannot connect
|
||||
to equipment, cannot have sub-items, and are **not** blocked when the main item is blocked.
|
||||
|
||||
Quick load (`SUB_ITEM_DF`; the main item must exist):
|
||||
|
||||
```
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,SUB_TYPE,TIME_UNIT,MIN_MAX
|
||||
|
||||
@SUB_ITEM_DF
|
||||
"CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDS","Pump 1 running time (seconds)","Integrator","",""
|
||||
"CI-Eng-Sample.TANK1.LEVEL.MAX","Tank 1 maximum level","Min-Max","","Maximum"
|
||||
```
|
||||
|
||||
Load with `dssqld -i <file>.qli -l <file>.qlo`; remove with a `NAME`-only file and `dssqld -r`
|
||||
(before removing the main item).
|
||||
|
||||
## Behaviour (verified)
|
||||
|
||||
- **Integrator** adds *value × seconds*: with the main item at 1 it grows by 1 per second.
|
||||
`TIME_UNIT` (e.g. `Hour`) made no difference (`knowledge/issues.md` ISS-010); to show hours,
|
||||
divide by 3600 where the value is used.
|
||||
- **Min-Max** with `MIN_MAX` = `Maximum` (or `Minimum`) keeps the highest (lowest) value
|
||||
written to the main item: writing 30, 70, 50 gave 70.
|
||||
- `TIME_UNIT` (Second, Minute, Hour, Day) belongs to Rate-of-Change (from docs, not practiced).
|
||||
|
||||
Example files: `examples/CI-Eng-Sample/02b_sub_item_df.qli`, `90b_remove_sub_item_df.qli`.
|
||||
|
|
@ -13,4 +13,3 @@ NAME,SECTION_PATH,SECTION_NAME,DESCRIPTION
|
|||
"CI-Eng-Sample.TANK1","CI-Eng-Sample","TANK1","Sample tank 1"
|
||||
"CI-Eng-Sample.PUMP1","CI-Eng-Sample","PUMP1","Sample pump 1"
|
||||
"CI-Eng-Sample.SYSTEM","CI-Eng-Sample","SYSTEM","Sample system monitoring"
|
||||
"CI-Eng-Sample.DEMO","CI-Eng-Sample","DEMO","Tutorial examples (class/object)"
|
||||
|
|
|
|||
|
|
@ -18,4 +18,3 @@ LOW_LOW_LIMIT,LOW_LIMIT,HIGH_LIMIT,HIGH_HIGH_LIMIT,SCALE_LOW_LIMIT,SCALE_HIGH_LI
|
|||
"CI-Eng-Sample.SYSTEM.DISK_C","Disk C: from intdskmon","Real","999.9",0,0,0,0,0,100
|
||||
"CI-Eng-Sample.SYSTEM.PING_LOCALHOST","localhost reachable, from inttcpmon","Integer","9",0,0,0,0,0,1
|
||||
"CI-Eng-Sample.SYSTEM.PROC_ALM","ALARM process (alm) running, from intmon","Integer","9",0,0,0,0,0,1
|
||||
"CI-Eng-Sample.DEMO.COUNTER","Counter 1..100 driven by object DEMO.INCR1","Integer","999",0,0,0,0,0,100
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! CI-Eng-Sample sub-items (Tutorial IM 36K10G10-01EN 3.1.5, 3.2.3), CI Server R1.03.00
|
||||
! Integrator: adds value x seconds (RUNNING = 1 -> running seconds; TIME_UNIT has no effect, verified).
|
||||
! Min-Max: keeps the maximum (or minimum) of the main item.
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,SUB_TYPE,TIME_UNIT,MIN_MAX
|
||||
|
||||
@SUB_ITEM_DF
|
||||
"CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDS","Pump 1 running time (seconds)","Integrator","",""
|
||||
"CI-Eng-Sample.TANK1.LEVEL.MAX","Tank 1 maximum level","Min-Max","","Maximum"
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! CI-Eng-Sample trigger group: every second (CI Server R1.03.00)
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,TRIGGER_INTERVAL
|
||||
|
||||
@TRIGGER_DF
|
||||
"CIENG_1S","CI-Eng-Sample one second trigger","1 seconds"
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! CI-Eng-Sample class (traditional language), compiled on load (COMPILE = 1)
|
||||
! Based on the INCREMENT example in the CI Server Tutorial (IM 36K10G10-01EN 5.2)
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,PF_LANGUAGE,TRIGGER_1,COMPILE,LISTING_WANTED,METHOD
|
||||
|
||||
@CLASS_DF
|
||||
"CIENG_INCR","Count CI-Eng-Sample.DEMO.COUNTER 1..100","Traditional","CIENG_1S",1,1,@"
|
||||
CLASS CIENG_INCR;
|
||||
PROLOG
|
||||
SIGNAL INPUT := "CI-Eng-Sample.DEMO.COUNTER";
|
||||
BODY
|
||||
METHOD UP_AND_DOWN;
|
||||
BODY
|
||||
IF (INPUT >= 100) THEN
|
||||
INPUT := 0;
|
||||
ENDIF;
|
||||
INPUT := INPUT + 1;
|
||||
ENDMETHOD UP_AND_DOWN;
|
||||
ENDCLASS CIENG_INCR;
|
||||
"@
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! CI-Eng-Sample object created from class CIENG_INCR
|
||||
@FIELDS
|
||||
NAME,DESCRIPTION,CLASS
|
||||
|
||||
@OBJECT_DF
|
||||
"CI-Eng-Sample.DEMO.INCR1","Counts DEMO.COUNTER every second","CIENG_INCR"
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! Remove CI-Eng-Sample objects
|
||||
@FIELDS
|
||||
NAME
|
||||
|
||||
@OBJECT_DF
|
||||
"CI-Eng-Sample.DEMO.INCR1"
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! Remove CI-Eng-Sample classes
|
||||
@FIELDS
|
||||
NAME
|
||||
|
||||
@CLASS_DF
|
||||
"CIENG_INCR"
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! Remove CI-Eng-Sample trigger groups
|
||||
@FIELDS
|
||||
NAME
|
||||
|
||||
@TRIGGER_DF
|
||||
"CIENG_1S"
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
@LANGUAGE
|
||||
ENGLISH
|
||||
|
||||
@VERSION
|
||||
1.03.00
|
||||
|
||||
! Remove CI-Eng-Sample sub-items
|
||||
@FIELDS
|
||||
NAME
|
||||
|
||||
@SUB_ITEM_DF
|
||||
"CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDS"
|
||||
"CI-Eng-Sample.TANK1.LEVEL.MAX"
|
||||
|
|
@ -17,4 +17,3 @@ NAME
|
|||
"CI-Eng-Sample.SYSTEM.DISK_C"
|
||||
"CI-Eng-Sample.SYSTEM.PING_LOCALHOST"
|
||||
"CI-Eng-Sample.SYSTEM.PROC_ALM"
|
||||
"CI-Eng-Sample.DEMO.COUNTER"
|
||||
|
|
|
|||
|
|
@ -12,5 +12,4 @@ NAME
|
|||
"CI-Eng-Sample.TANK1"
|
||||
"CI-Eng-Sample.PUMP1"
|
||||
"CI-Eng-Sample.SYSTEM"
|
||||
"CI-Eng-Sample.DEMO"
|
||||
"CI-Eng-Sample"
|
||||
|
|
|
|||
|
|
@ -39,13 +39,6 @@ cmd /c "<repo>\examples\CI-Eng-Sample\remove.cmd"
|
|||
| `CI-Eng-Sample.SYSTEM.DISK_C` | Item, Real | Target for `intdskmon` (reports **used** %) |
|
||||
| `CI-Eng-Sample.SYSTEM.PING_LOCALHOST` | Item, Integer | Target for `inttcpmon` (1 = reachable) |
|
||||
| `CI-Eng-Sample.SYSTEM.PROC_ALM` | Item, Integer | Target for `intmon` (1 = `alm` process running) |
|
||||
| `CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDS` | Sub-item, Integrator | Running time in seconds (adds value × seconds) |
|
||||
| `CI-Eng-Sample.TANK1.LEVEL.MAX` | Sub-item, Min-Max | Highest level seen |
|
||||
| `CI-Eng-Sample.DEMO` | Section | Tutorial examples |
|
||||
| `CI-Eng-Sample.DEMO.COUNTER` | Item, Integer | Counts 1…100, one step per second, written by `DEMO.INCR1` |
|
||||
| `CIENG_1S` | Trigger group | Every second |
|
||||
| `CIENG_INCR` | Class (traditional) | Increments `DEMO.COUNTER`, wraps at 100; compiled on load |
|
||||
| `CI-Eng-Sample.DEMO.INCR1` | Object | Instance of `CIENG_INCR` |
|
||||
| `CIENG_EVENT` | Item storage group | Event/Item, lifetime 1 week, rollover 1 day |
|
||||
|
||||
All items are internal (no station), so the project works without any PLC or simulator.
|
||||
|
|
@ -57,11 +50,9 @@ New items start with status 13 (`NOT INIT`) until a value is written.
|
|||
|---|---|
|
||||
| `01_section_df.qli` | Sections (`SECTION_DF`); parents before children |
|
||||
| `02_item_df.qli` | Items (`ITEM_DF`) |
|
||||
| `02b_sub_item_df.qli` | Sub-items (`SUB_ITEM_DF`) |
|
||||
| `03_his_group_df.qli` | Item storage group (`HIS_GROUP_DF`) |
|
||||
| `04_item_his_df.qli` | Items in the storage group (`ITEM_HIS_DF`, name `<group>:<item>`) |
|
||||
| `05_trigger_df.qli`, `06_class_df.qli`, `07_object_df.qli` | Trigger group, class (source in the `METHOD` memo, `@"` … `"@`, `COMPILE` 1), object |
|
||||
| `86_`…`92_remove_*.qli` | Names to delete, in reverse order |
|
||||
| `89_`…`92_remove_*.qli` | Names to delete, in reverse order |
|
||||
| `load.cmd`, `remove.cmd` | Run the steps in the right order |
|
||||
| `monitoring/*.sup.txt` | Setup-file lines for the monitoring processes (not applied by `load.cmd`) |
|
||||
|
||||
|
|
@ -76,7 +67,7 @@ testing. See the `system-management` skill, task `monitoring-processes.md`.
|
|||
|
||||
| Phase | Adds |
|
||||
|---|---|
|
||||
| 6 | Template items, a class with attributes/prompts, objects that create items |
|
||||
| 6 | Template items, a class and objects |
|
||||
| 8 | Alarm settings on sample items |
|
||||
| 9 | More storage groups (scan/time, aggregation) |
|
||||
| 10 | A display and symbol |
|
||||
|
|
|
|||
|
|
@ -6,12 +6,7 @@ rem Restart CI Server afterwards: new storage groups only start storing after a
|
|||
cd /d "%~dp0"
|
||||
dssqld -i 01_section_df.qli -l 01_section_df.qlo
|
||||
dssqld -i 02_item_df.qli -l 02_item_df.qlo
|
||||
dssqld -i 02b_sub_item_df.qli -l 02b_sub_item_df.qlo
|
||||
dssqld -i 03_his_group_df.qli -l 03_his_group_df.qlo
|
||||
rem Short pause: linking items straight after creating the group failed once.
|
||||
powershell -NoProfile -Command "Start-Sleep -Seconds 5"
|
||||
dssqld -i 04_item_his_df.qli -l 04_item_his_df.qlo
|
||||
rem Processing: trigger group, class (compiled on load via COMPILE = 1), object
|
||||
dssqld -i 05_trigger_df.qli -l 05_trigger_df.qlo
|
||||
dssqld -i 06_class_df.qli -l 06_class_df.qlo
|
||||
dssqld -i 07_object_df.qli -l 07_object_df.qlo
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
@echo off
|
||||
rem Remove CI-Eng-Sample from a CI Server R1.03 TEST system (also deletes its history).
|
||||
rem Run in an elevated prompt while CI Server is running; call this script by full path.
|
||||
rem Order: object, class, trigger group, storage links, stop + delete storage group, items, sections (children first).
|
||||
rem Order: storage links, stop + delete storage group, items, sections (children first).
|
||||
rem A storage group with an active unit cannot be deleted (HIS-E-GROUPHASUNT), so the
|
||||
rem group first gets a stop time one minute ahead; the script waits until it has passed.
|
||||
cd /d "%~dp0"
|
||||
dssqld -r 86_remove_object_df.qli -l 86_remove_object_df.qlo
|
||||
dssqld -r 87_remove_class_df.qli -l 87_remove_class_df.qlo
|
||||
dssqld -r 88_remove_trigger_df.qli -l 88_remove_trigger_df.qlo
|
||||
dssqld -r 89_remove_item_his_df.qli -l 89_remove_item_his_df.qlo
|
||||
powershell -NoProfile -Command "$t=(Get-Date).AddMinutes(1).ToString('dd-MM-yyyy HH:mm:ss'); \"@LANGUAGE`r`nENGLISH`r`n`r`n@VERSION`r`n1.03.00`r`n`r`n@FIELDS`r`nNAME,STOP_TIME`r`n`r`n@HIS_GROUP_DF`r`n\"\"CIENG_EVENT\"\",\"\"$t\"\"`r`n\" | Set-Content -Encoding ascii 90a_stop_his_group_df.qli"
|
||||
dssqld -m 90a_stop_his_group_df.qli -l 90a_stop_his_group_df.qlo
|
||||
echo Waiting 75 seconds for the storage group stop time to pass...
|
||||
powershell -NoProfile -Command "Start-Sleep -Seconds 75"
|
||||
dssqld -r 90_remove_his_group_df.qli -l 90_remove_his_group_df.qlo
|
||||
dssqld -r 90b_remove_sub_item_df.qli -l 90b_remove_sub_item_df.qlo
|
||||
dssqld -r 91_remove_item_df.qli -l 91_remove_item_df.qlo
|
||||
dssqld -r 92_remove_section_df.qli -l 92_remove_section_df.qlo
|
||||
del 90a_stop_his_group_df.qli
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
|
|||
|
||||
| ID | Date | Area | Issue | Status | Next step / resolution | Update on close |
|
||||
|---|---|---|---|---|---|---|
|
||||
| ISS-001 | 2026-09-30 | ITEM (`itmval`) | Writing an item with `itmval -p -n AID.WRPS.SIM.INFLOW -v 400` added the `uoff` option flag (options 0x…8a → 0x…8e). The flag stayed after writing the original value back. Meaning of `uoff` unknown; not found in the EN manuals by text search. | open | 2026-09-30: writing internal sample items (`CI-Eng-Sample.*`, no station) does **not** set `uoff` (options stay 0x…88), so it is tied to station-connected items (the AID item was already `off`, its station not communicating). Still to find: meaning and how to clear it (ITEM Service IM 36K10L35/L36, Engineering Module I/O Processes IM 36K10C10). Revisit in phase 5 with a station item. 2026-09-30 later: unblocking a sample item left the flag `ublk` (after `blk` was cleared), so `u…` flags may mean "was …" (un-blocked / un-offline). Still unconfirmed. | `.claude/skills/system-management/tasks/read-write-item.md` (replace the `uoff` note under "Read the current value"); `knowledge/progress.md` row "Write an item with `itmval -p`" |
|
||||
| ISS-001 | 2026-09-30 | ITEM (`itmval`) | Writing an item with `itmval -p -n AID.WRPS.SIM.INFLOW -v 400` added the `uoff` option flag (options 0x…8a → 0x…8e). The flag stayed after writing the original value back. Meaning of `uoff` unknown; not found in the EN manuals by text search. | open | 2026-09-30: writing internal sample items (`CI-Eng-Sample.*`, no station) does **not** set `uoff` (options stay 0x…88), so it is tied to station-connected items (the AID item was already `off`, its station not communicating). Still to find: meaning and how to clear it (ITEM Service IM 36K10L35/L36, Engineering Module I/O Processes IM 36K10C10). Revisit in phase 5 with a station item. | `.claude/skills/system-management/tasks/read-write-item.md` (replace the `uoff` note under "Read the current value"); `knowledge/progress.md` row "Write an item with `itmval -p`" |
|
||||
| ISS-002 | 2026-09-30 | DATABASE (`dsschk`) | `dsschk -d ITEM_DF -v` (check only) exits 0 with no console output and nothing new in `umhlog.log`. Where results are reported is unknown. | closed | Closed 2026-09-30 (confirmed by user). 2026-09-30: `dsschk -e -v` prints a start/end line per dataset (228 checked, no problems) and logs to `umhlog.log`. Plain `dsschk` only compares copies between nodes, so it prints nothing on a single-node system. `ismchk` needs a database file name (usage: `ismchk data_base_name`), not run yet. | Create `.claude/skills/system-management/tasks/consistency-check.md` and add it to that skill's `SKILL.md`; `knowledge/manuals/IM36K10J10-01EN.md` §4.1.1 consistency tools (add where output goes); `knowledge/progress.md` row "Consistency check" |
|
||||
| ISS-003 | 2026-09-30 | DATABASE (`dssqld`) | Filtered export (`dssqld -e <out> <filter>.qli`) failed with a guessed filter syntax (`@ITEM_DF`, `@FIELD`, `@SELECT`). | closed | Closed 2026-09-30 (confirmed by user). 2026-09-30: the quick load **data** format is now known and verified (`@LANGUAGE`, `@VERSION`, `@FIELDS`, `@<DATASET>`, quoted CSV records, `\` continuation, `!` comments; IM 36K10L45 §9.11). Filter syntax found (IM 36K10L50 §3.6) and practiced, awaiting confirmation: a file with `@SELECT`, then the filter in single quotes (strings in double quotes), then `@<DATASET>`; run `dssqld -e <out> <filter>.qli`. `ITEM_HISTORY` returns nothing unless the filter names `ITEM_NAME` and a `SAMPLE_TIME` range (`SAMPLE_TIME > "dd-mm-yyyy hh:mm:ss" and SAMPLE_TIME < ...`). | `.claude/skills/system-management/tasks/export-dataset.md` section "Filtered exports"; `knowledge/manuals/IM36K10J10-01EN.md` §5.6 step 1; `knowledge/progress.md` row "Export a dataset" |
|
||||
| ISS-004 | 2026-09-30 | ITEM (`itmval`) | `itmval -g -a <1..5>` returns `ITM-E-WRONG_ATT` on `AID.WRPS.*` items, so reading limits is unproven. | closed | Closed 2026-09-30 (confirmed by user). On `CI-Eng-Sample.TANK1.LEVEL` (limits set) `-a 1..5` returned deadband 0, low 20, high 80, low-low 10, high-high 90. The error only occurs on items without limits. | `.claude/skills/system-management/tasks/read-write-item.md` (limits section); `knowledge/progress.md` row "Read an item with `itmval -g`" |
|
||||
|
|
@ -28,6 +28,3 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
|
|||
| ISS-007 | 2026-09-30 | INTEGRATION (monitoring) | `intdskmon` wrote 61.9 for a C: drive that is 61.9 % used / 38.1 % free, although the manual says it monitors the disk free space rate. `intspawn` did nothing when the command path was ~130 characters; a short path worked (limit unknown). | open | Confirm the disk value meaning and the path limit. | `.claude/skills/system-management/tasks/monitoring-processes.md`; `knowledge/manuals/IM36K10J10-01EN.md` §4.1.6; `examples/CI-Eng-Sample/monitoring/` |
|
||||
| ISS-008 | 2026-09-30 | ACCESS (web/OPC UA server?) | `ci_start.log` on the test system shows `CppServerAPI::Run() failed: InitializeSslCtx(): SSL_CTX_use_certificate_chain_file() failed.` right after ACCESS Service starts. Which component and certificate is not known. | open | Identify in phase 7 (OPC Interface IM 36K10E20, Data Access IM 36K10L45). | `.claude/skills/installation-security/tasks/setup-check.md`; the phase 7 skill |
|
||||
| ISS-009 | 2026-09-30 | Security Guide | DCOM port range printed as 20500–20550 in the firewall table but "2500–20550" in the OPC configuration table. Taken as a typo for 20500–20550. | open | Confirm on a system with IT security applied. | `knowledge/manuals/IM36K01C30-01EN.md` §4 |
|
||||
|
||||
| ISS-010 | 2026-09-30 | ITEM (sub-items) | The Integrator sub-item adds value × seconds; setting `TIME_UNIT` = Hour made no difference (1 per second while the main item was 1). The Tutorial lists a time unit only for Rate-of-Change. | open | Confirm with ITEM Service manuals (IM 36K10L35/L36) in phase 5: is there a scaling option for integrators? | `examples/CI-Eng-Sample/02b_sub_item_df.qli`; `knowledge/manuals/IM36K10G10-01EN.md` |
|
||||
| ISS-011 | 2026-09-30 | ITEM (blocking) | A write to a blocked item with `itmval -p` (without `-o`) is silently ignored: no error message, value unchanged. | open | Check in phase 5 whether any status/return code signals this. | `.claude/skills/system-management/tasks/read-write-item.md` |
|
||||
|
|
|
|||
|
|
@ -1,108 +0,0 @@
|
|||
---
|
||||
manual: IM 36K10G10-01EN
|
||||
title: CI Server Tutorial
|
||||
edition: 3rd Edition, Sep. 2023
|
||||
version: R1.03
|
||||
status: from docs; item, sub-item, blocking, trigger group, class and object steps verified with dssqld/itmval on CI-Eng-Sample (2026-09-30)
|
||||
---
|
||||
|
||||
# CI Server Tutorial (R1.03)
|
||||
|
||||
A guided tour of the main engineering tasks in the Engineering Module and Edit Module. Each
|
||||
chapter points to the full manual for its area; the table shows where this repo covers it.
|
||||
|
||||
| Chapter | Topic | Covered in detail by |
|
||||
|---|---|---|
|
||||
| 1 | Engineering Module window: menu, configuration tree, work area (properties sheets), message area, edit history (undo/redo) | IM 36K10C10 (phase 5) |
|
||||
| 2 | Authorization groups and users | IM 36K10C10 (phase 5) |
|
||||
| 3 | Sections, items, sub-items, blocking, value updates, item statuses | IM 36K10C10, L35/L36 (phase 5) |
|
||||
| 4 | Displays in the Edit Module; HTML displays | IM 36K10C50, R30 (phase 10) |
|
||||
| 5 | Trigger groups, classes, objects, symbols linked to objects | IM 36K10L10, P10 (phase 6), C50 (phase 10) |
|
||||
| 6 | I/O: lines, stations, scan types, points | IM 36K10L40/L41 (phase 5) |
|
||||
| 7 | Item alarms | IM 36K10L15, C20 (phase 8) |
|
||||
| 8 | Reports and printers | IM 36K10P20, R40, C30 (phase 11) |
|
||||
| 9 | Audit trail | IM 36K10L25 (phase 12) |
|
||||
| 10 | RDBMS data exposure (`dbc.sup`) | IM 36K10L45 (phase 7) |
|
||||
| 11 | Item search | IM 36K10C10 (phase 5) |
|
||||
| 12 | Excel Add-in | IM 36K10E10 (phase 11) |
|
||||
| 13 | History: storage groups, units, collection types, aggregation, archiving | IM 36K10L20, C40 (phase 9) |
|
||||
|
||||
## Key points
|
||||
|
||||
**Users (ch. 2)**: create an authorization group (the set of allowed functions, e.g. `ALL`
|
||||
with every function), then a user assigned to it. A user is needed to log on to the Edit
|
||||
Module and Operator Interface.
|
||||
|
||||
**Items (ch. 3)**
|
||||
- Full name `Section.Sub-section.Item` (max 255 bytes; no `:` or `.` inside a name; case
|
||||
insensitive). Sections can be blocked as a whole, e.g. for maintenance.
|
||||
- Types: Boolean, Integer, Real, String (max length 80 by default, up to 168 without audit).
|
||||
- Four limits (LL, L, H, HH) plus a deadband set the status LOWLOW…HIGHHIGH; the deadband sits
|
||||
on the normal side of each limit. Scale high/low give OVERRANGED / UNDERRANGED.
|
||||
Booleans set status TRUE/FALSE.
|
||||
- An item is connected to an I/O point on the *Equipment* tab; the station must exist first.
|
||||
- Sub-items: Integrator, Pulse counter, Min-Max, Rate-of-Change (with time unit), Typeless.
|
||||
Sub-items cannot connect to equipment or have sub-items, and are **not** blocked with their
|
||||
main item.
|
||||
- Blocked items and offline items are not updated. *Update value* (Engineering Module) or
|
||||
`itmval -p` changes value/status/quality; *Overwrite blocked* (`-o`) is needed for a
|
||||
blocked item. New items are `NOT INIT` until a value is written.
|
||||
- Item statuses are system-wide; add your own with numbers **100–127** (1–99 and above 127
|
||||
are reserved), with mnemonic, alarm priority (0–15), alarm state (Normal, Alarm 1–3),
|
||||
colour and shelving.
|
||||
|
||||
**Displays (ch. 4)**: a display is built of frames defined by a layout. Edit Module parts:
|
||||
sheets, component bar, Visualizations tree, Symbols palette, menus, toolbars, drawing area.
|
||||
Display names must be unique and without spaces. *HTML display* mode shows only components
|
||||
and properties supported in HTML; switching it off keeps unsupported values.
|
||||
|
||||
**Classes and objects (ch. 5)**
|
||||
- Trigger group: e.g. `ONE_SECOND`, a permanent 1-second trigger. A class can also be
|
||||
triggered by item changes.
|
||||
- Class (traditional language): `CLASS <name>; PROLOG … SIGNAL <var> := "<item>"; BODY
|
||||
METHOD <m>; BODY … ENDMETHOD <m>; ENDCLASS <name>;`. After *Compile*, check the *Listing* tab
|
||||
for errors. `ATTRIBUTE` and `PROMPT` lines define values asked when an object is created.
|
||||
- Object: created in a section, from a class, with values for the prompted attributes.
|
||||
- Symbol linked to a class (*PROCESS Service class*); on a display set the symbol's `object`
|
||||
property to the object. Properties are linked to items/signals on the *Connection* sheet,
|
||||
with a transformation (e.g. *Linear*); buttons use *Update item/parameter* actions.
|
||||
- Test in the Operator Interface by typing the display name in the title bar.
|
||||
|
||||
**I/O (ch. 6)**: define in order **line → station → (scan type) → point**, then connect items
|
||||
to points. Example: Modbus `LINE1` / `STATION1` / scan type `FAST` / `POINT1`.
|
||||
|
||||
**Alarms (ch. 7)**: current, historical and shelved alarm overviews. Item status → alarm
|
||||
state (Normal, Alarm 1–3) system-wide, or per item (overrides). Acknowledgement types are
|
||||
matrices of state transitions (automatic/manual). Delay time, repeat time (after delay),
|
||||
first-out groups, collection groups, alarm selection areas (ASA, filter expressions), areas
|
||||
of interest (AOI), notification by e-mail/SMS (users with schedules, destinations tied to an
|
||||
ASA).
|
||||
|
||||
**Reports (ch. 8)**: defined with a name, destination, RQL query and layout; generated ad hoc,
|
||||
on a schedule, or on an item event (with delay). Destinations: `DEFAULT`, `PRINTER_1`,
|
||||
`NONE` (keep on disk), `ALARMS`, `AUDIT_TRAIL`, `MESSAGES`, `SCREEN_CAPTURE`; only `DEFAULT` and
|
||||
`PRINTER_1` print by default. Destinations use primary/secondary devices with a policy
|
||||
(automatic, both, none).
|
||||
|
||||
**Audit trail (ch. 9)**: stored in dataset `AUDIT_TRAIL`, storage group `ADT`; events are
|
||||
named `<subject group>.<attribute>.<action>.<source>`, e.g. `ITEM.VALUE.MODIFY.HMI`; records
|
||||
cannot be deleted except by deleting storage units.
|
||||
|
||||
**RDBMS exposure (ch. 10)**: copies CI Server data (`ITEM_VALUES` aggregated per interval,
|
||||
`ITEM_HISTORY` with a mandatory filter, `ITEM_INPUTS` for writes back, or any dataset on
|
||||
change) into SQL tables. Configure the connection string or system DSN in `dbc.sup`; with
|
||||
Windows authentication add `CIX_PROCESS` to SQL Server (db_owner).
|
||||
|
||||
**Other**: Item search (wildcards, copy/drag to Excel or Trend); Excel Add-in reports;
|
||||
history storage groups and archiving (phase 9).
|
||||
|
||||
## Verified on CI-Eng-Sample (command-line equivalents)
|
||||
|
||||
| Tutorial step | Done with | Result |
|
||||
|---|---|---|
|
||||
| Sections and items (3.2) | `dssqld -i` `SECTION_DF`, `ITEM_DF` | loaded |
|
||||
| Sub-items (3.2.3) | `SUB_ITEM_DF` | Min-Max keeps the maximum; **Integrator adds value × seconds; `TIME_UNIT` has no effect** |
|
||||
| Block item (3.3) | `dssqld -m` `ITEM_DF` `BLOCKED` 1/0 | option flag `blk` (status stays 9); writes without `-o` are **silently ignored**; after unblocking the flag `ublk` appears |
|
||||
| Trigger group (5.1) | `TRIGGER_DF` (`TRIGGER_INTERVAL` "1 seconds") | loaded |
|
||||
| Class (5.2) | `CLASS_DF` with `METHOD` memo and `COMPILE` 1 | compiled on load |
|
||||
| Object (5.3) | `OBJECT_DF` (`NAME`, `CLASS`) | runs: `DEMO.COUNTER` counts 1…100 every second |
|
||||
|
|
@ -31,9 +31,9 @@ AID is not needed.
|
|||
|---|---|---|---|
|
||||
| 0 | IM 36K01A50 | Release Information | summarized ([notes](manuals/IM36K01A50-01EN.md)) |
|
||||
| 1 | IM 36K10J10 | System Design/Management | done except migration (phase 6) and debugging tools; skill `system-management` ([notes](manuals/IM36K10J10-01EN.md)) |
|
||||
| 2 | IM 36K01C10 | CI Server Setup | summarized ([notes](manuals/IM36K01C10-01EN.md)); skill `installation-security` |
|
||||
| 2 | IM 36K01C30 | Security Guide | summarized ([notes](manuals/IM36K01C30-01EN.md)); skill `installation-security` |
|
||||
| 3 | IM 36K10G10 | Tutorial | summarized ([notes](manuals/IM36K10G10-01EN.md)); command-line equivalents practiced on CI-Eng-Sample |
|
||||
| 2 | IM 36K01C10 | CI Server Setup | summarized ([notes](manuals/IM36K01C10-01EN.md)); skill `installation-security` (draft) |
|
||||
| 2 | IM 36K01C30 | Security Guide | summarized ([notes](manuals/IM36K01C30-01EN.md)); skill `installation-security` (draft) |
|
||||
| 3 | IM 36K10G10 | Tutorial | not started |
|
||||
| 4 | IM 36K10R10 | CI Portal Setup | not started |
|
||||
| 4 | IM 36K10R20 | Setup File Editor | not started |
|
||||
| 5 | IM 36K10C10 | Engineering Module - I/O Processes | not started |
|
||||
|
|
@ -90,16 +90,10 @@ now come before classes and objects (phase 6), and the other interfaces follow a
|
|||
| J10 | Backup of `tls` folders | not practiced | n/a | Plan only; the actual backup tool is site-specific. |
|
||||
| J10 | Migration between systems (§5.6) | not practiced | pending | Needs engineered data; revisit after phase 6. |
|
||||
| J10 | Tuning checks (read-only) ([task](../.claude/skills/system-management/tasks/tuning-checks.md)) | passed | n/a | Read `dur.sup` (max processes 250), `itm.sup` (item pool 650,000 KB) and the automatic health snapshots `tls\log\smd_*.log` (common memory free, queue use per process, lock collisions). Debug launchers and interactive debuggers not practiced. |
|
||||
| C10/C30 | Setup check script `tools/setup_check.ps1` ([task](../.claude/skills/installation-security/tasks/setup-check.md)) | passed | n/a | Read-only; 16 OK / 5 CHECK / 15 DIFF on the Win10 Pro test PC (kept as dev PC by decision). |
|
||||
| C10 | Read `ci_start.log` and web ports (`jwuiisg.sup`) | passed | n/a | All services started; SSL error [ISS-008](issues.md). |
|
||||
| C10/C30 | Setup check script `tools/setup_check.ps1` ([task](../.claude/skills/installation-security/tasks/setup-check.md)) | practiced, awaiting confirmation | n/a | Read-only; 16 OK / 5 CHECK / 15 DIFF on the Win10 Pro test PC. |
|
||||
| C10 | Read `ci_start.log` and web ports (`jwuiisg.sup`) | practiced, awaiting confirmation | n/a | All services started; SSL error [ISS-008](issues.md). |
|
||||
| C10 | Start / stop CI Server | passed (phase 1) | n/a | Via the CI Service (elevated). Start-menu shortcuts not used. |
|
||||
| C10 | New install, reinstall, upgrade, uninstall, licence | not practiced | n/a | Would reinstall or change the test system; only the installed R1.03 is available. Skipped. |
|
||||
| C10 | Windows settings changes (power, virtual memory, Defender, updates, …) | not practiced | n/a | Test PC kept as a development PC (user decision 2026-09-30); not applied. |
|
||||
| C10 | Windows settings changes (power, virtual memory, Defender, updates, …) | not practiced | n/a | Changes the test PC's OS; needs the user's go-ahead. Skipped. |
|
||||
| C10 | Vnet/IP drivers / Vnet/IP Interface Package | not practiced | n/a | No Vnet/IP card; not supported on Windows 10 Pro. |
|
||||
| C30 | IT Security Tool, Domain Link Management, account utilities | not practiced | n/a | Not installed and not supported on Windows 10 Pro. |
|
||||
| G10 | Sub-items: Integrator, Min-Max (`SUB_ITEM_DF`) ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | Integrator adds value × seconds; `TIME_UNIT` ignored. |
|
||||
| G10 | Block / unblock an item (`ITEM_DF.BLOCKED` via `dssqld -m`); write with `itmval -o` ([task](../.claude/skills/item-engineering/tasks/block-item.md)) | passed | passed | `blk` flag, writes without `-o` silently ignored; `ublk` after unblock ([ISS-001](issues.md)). |
|
||||
| G10 | Trigger group, class (compile on load), object via quick load ([task](../.claude/skills/class-object-engineering/tasks/load-class-object.md)) | passed | passed | `DEMO.COUNTER` counts every second; full remove/load cycle clean. |
|
||||
| G10 | Authorization group and user creation | not practiced | n/a | Creates CI Server login accounts; left for the user or phase 5. |
|
||||
| G10 | Displays, symbols, Operator Interface test | not practiced | pending | GUI (Edit Module); phase 10. |
|
||||
| G10 | Lines / stations / points, alarms, reports, audit, RDBMS, history | not practiced | pending | Covered in their own phases (5–12). |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue