Phase 2-3: setup/security, Tutorial, new item and class/object skills #3
6 changed files with 187 additions and 3 deletions
20
.claude/skills/class-object-engineering/SKILL.md
Normal file
20
.claude/skills/class-object-engineering/SKILL.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
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 |
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
---
|
||||||
|
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`.
|
||||||
23
.claude/skills/item-engineering/SKILL.md
Normal file
23
.claude/skills/item-engineering/SKILL.md
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
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 |
|
||||||
36
.claude/skills/item-engineering/tasks/block-item.md
Normal file
36
.claude/skills/item-engineering/tasks/block-item.md
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
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).
|
||||||
37
.claude/skills/item-engineering/tasks/sub-items.md
Normal file
37
.claude/skills/item-engineering/tasks/sub-items.md
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
---
|
||||||
|
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`.
|
||||||
|
|
@ -97,9 +97,9 @@ now come before classes and objects (phase 6), and the other interfaces follow a
|
||||||
| 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 | Test PC kept as a development PC (user decision 2026-09-30); not applied. |
|
||||||
| C10 | Vnet/IP drivers / Vnet/IP Interface Package | not practiced | n/a | No Vnet/IP card; not supported on Windows 10 Pro. |
|
| 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. |
|
| 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`) | practiced, awaiting confirmation | added (awaiting confirmation) | Integrator adds value × seconds; `TIME_UNIT` ignored. |
|
| 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` | practiced, awaiting confirmation | passed (awaiting confirmation) | `blk` flag, writes without `-o` silently ignored; `ublk` after unblock ([ISS-001](issues.md)). |
|
| 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 | practiced, awaiting confirmation | added (awaiting confirmation) | `DEMO.COUNTER` counts every second; full remove/load cycle clean. |
|
| 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 | 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 | 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). |
|
| 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