ci-server-engineer/.claude/skills/item-engineering/tasks/sub-items.md
cliu ef543cde20 Add phase 5 Engineering Module summary, authorization skill, item tests
- Summary of IM 36K10C10 (Engineering Module - I/O Processes), checked
  against dssana.sup, itm.sup and the default datasets
- New skill authorization: users and authorization groups by quick load
- item-engineering: string item limits (1-200, holds length - 1) and the
  integration granule (itm_int_secs), both tested on CI-Eng-Sample
- CI-Eng-Sample: read-only authorization group CIENG_VIEWER
- Closed ISS-001 (uoff/ublk option bits), ISS-010, ISS-019; new ISS-018, ISS-020

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:09:45 +10:00

41 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
task: Create sub-items (integrator, min-max)
version: R1.03
source: IM 36K10G10-01EN §3.1.5, §3.2.3; IM 36K10C10-01EN §3.2; 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 × time unit*: with the main item at 1 it grows by 1 per second
by default. The time unit is the **integration granule** `itm_int_secs` in `itm.sup`
(Setup File Editor label "Integration granule, sec."), **system-wide** for all integrators,
installed value 1. Setting 60 and restarting CI Server made it grow by 1 per minute
(verified 2026-09-30, ISS-010). Changing it is a setup-file change (skill `portal-setup`,
task `change-setup-file.md`); existing integrator values are not converted, so reset or
note them. `TIME_UNIT` on the sub-item has no effect on integrators.
- **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`.