Compare commits

..

3 commits

Author SHA1 Message Date
f3c7a15bb3 Record phase 8 progress and issues ISS-035 to ISS-037
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:41:46 +10:00
ba4ce20c62 Add alarm manual summaries (L15, C20, E30) and alarm-management skill
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:41:45 +10:00
8b5ed97db2 Add alarm definitions and TANK1.LEVEL alarming to CI-Eng-Sample
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:41:45 +10:00
16 changed files with 867 additions and 7 deletions

View file

@ -0,0 +1,48 @@
---
name: alarm-management
description: >-
CI Server R1.03 ALARM Service and alarm engineering. Use when the user wants to switch on
alarms for an item (alarming, limits, HIGH / HIGH HIGH / LOW alarms, alarm state, priority,
alarm text), set up acknowledgement types (manual / automatic acknowledgement, ack matrix,
ALARM_ACK_DF), areas of interest (AOI), alarm selection areas (ASA, alarm filter expressions,
compile), delayed or repeated alarms, first-out groups, alarm collections (first-up), read or
acknowledge current alarms and alarm history (ALARM_CURRENT, ALARM_CHRONO), generate a test or
informational event, check the alarm kernel or storage (ALM, ALH, ALDPRT, almdbg, alhdbg,
alm.sup, alh.sup, aldprt.sup), configure alarm e-mail / SMS notification (alnmgr, alnsmtp),
alarm shelving (asbman), alarm sound (aldaco), alarm counting (aldcnt), external alarms (EAL,
OPC UA alarms, CENTUM VP Vnet alarms) or analyse alarm performance (ASPA, alarm floods, KPIs,
EEMUA 191, ISA 18.2). Sources IM 36K10L15-01EN, IM 36K10C20-01EN, IM 36K10E30-01EN.
---
# Alarm management (R1.03)
Background: `knowledge/manuals/IM36K10L15-01EN.md` (kernel, events, mechanisms, setup files,
debuggers), `IM36K10C20-01EN.md` (Engineering Module forms, filters, grouping, shelving,
notifications, external alarms), `IM36K10E30-01EN.md` (ASPA tool and KPI targets). Item limits
and statuses: skill `item-engineering`. OPC UA alarm sources: skill `data-access`.
Rules:
- Run `system-check` first; follow the user's chosen way of working.
- **Alarms reach operators.** Switching alarming on or off, changing acknowledgement types, or
acknowledging alarms on a running plant changes what operators see: only with the user's
approval. Changing an item's alarm settings also auto-acknowledges a pending return to normal
(L15 summary, C20 §A2).
- Writing a value to force a test alarm changes live data (`system-management`, task
`read-write-item.md`): only on test items, and restore the value.
- `almdbg` options 3, 13, 15, 17, 19, 20, 25, 26 and `alhdbg` 3, 4 change or stop things:
never without approval. Read-only options are listed in `tasks/alarm-checks.md`.
- Setup files (`alm.sup`, `alh.sup`, `aldprt.sup`, `aln*.sup`, `asbman.sup`, `wfladi.sup`) need
admin rights and a restart: hand changes to the user (skill `portal-setup`, task
`change-setup-file.md`).
| Task | File | Status |
|---|---|---|
| Acknowledgement type, area of interest, alarm selection area by quick load; compile check | `tasks/alarm-definitions.md` | verified |
| Switch on alarming for an item; delay / repeat; test an alarm; read and acknowledge current alarms and history | `tasks/item-alarming.md` | verified |
| Read-only checks: alarm processes, destinations, statistics, item alarm parameters, storage group, setup files; generate an INFO event | `tasks/alarm-checks.md` | verified |
| First-out groups, alarm collections (first-up, status/ack/reset items) | C20 summary §A6 | from docs |
| Alarm overviews, priority labels, link display, shelving | C20 summary §A3, §A9, §A10 | from docs (needs displays, phase 10) |
| E-mail / SMS notification | L15 summary §10, C20 §A11 | from docs (needs an SMTP server without authentication) |
| Acoustic (`aldaco`) and count (`aldcnt`) destinations, split storage processes | L15 summary §7, §8 | from docs |
| External alarms (EAL) from OPC UA servers or CENTUM VP | C20 summary part B | from docs (no A&C source / Vnet on the test system) |
| Alarm performance analysis (ASPA) | E30 summary | from docs |

View file

@ -0,0 +1,65 @@
---
task: Read-only checks of ALARM Service; generate an informational test event
version: R1.03
source: IM 36K10L15-01EN §1, §2.6, §3.4, §4.3, §6; IM 36K10C20-01EN §A7; practiced on the test system 2026-10-01
status: verified
---
# ALARM Service checks
## 1. Processes and setup files (read-only)
| Check | How | Test system result |
|---|---|---|
| Processes | `tasklist` → `alm.exe`, `alh.exe`, `aldprt.exe`, `alnmgr.exe`, `alnsmtp.exe`, `asbman.exe`; `durwfp -p ALM -t 0` → 0 = attached | All six running (`tls\com\alarm_start.cmd`) |
| Kernel setup | `%TLS_ROOT_PATH%\tls\sup\alm.sup` (active lines after `!ENDDEFAULT`) | `SYNC_COMM N`, `SYNC_MSG N`, `QUESIZE 25000`, `RECOVER_QUEUE Y`, `ACK_INFO` |
| Storage setup | `alh.sup` | `CURP`, `CURT`, `CHR`, `QUESIZE 8000`, `MAX-SEARCH 5`, `RECOVER_QUEUE Y`, `DB-JRNL WAL`, `DB-SYNC OFF` |
| Alarm printer | `aldprt.sup` | `FORMAT prio,2,spac,1,type,6,tdef,18,name,40,text,10`, `EVENTS repeat,info,ackn,alarm,prio,firstup` |
| Overview events | `wfladi.sup` `EVENTS` | `alarm,repeat,ackn,deact,info,recov,diag,firstup` (no `DIRECT`) |
| Notification / shelving | `alnmgr.sup`, `alnsmtp.sup`, `alnsms.sup`, `asbman.sup` | Defaults: SMTP `localhost, 25`, SMS `COM1:`, `SYS_WIDE_SHELF N` |
| History storage group | `dssqld -e` filter `'NAME = "ALH"'` on `HIS_GROUP_DF` | Type Alarm, rollover 1 day, lifetime 52 weeks |
| Definitions | `dssqld -e <out> -d ALARM_ACK_DF -c` (also `ALARM_AOI_DF`, `ALARM_ASA_DF`, `ALARM_FO_DF`, `ALARM_FU_DF`, `ALARM_PRIORITY_DF`, `EXTERNAL_ALARM_DF`, `STATUS_DF`) | Predefined ack types `AUTOMATIC`, `MANUAL`, `FULLMANUAL` and their `_EAL` variants; everything else is project data |
## 2. Alarm kernel debugger `almdbg` (read-only options)
Interactive; pipe the answers and end with `-1` (from bash, with a timeout):
```
printf '1\n9\n12\n-1\n' | timeout 20 almdbg
printf '14\n<Section>.<Tag>\n10\n<ack type number>\n-1\n' | timeout 20 almdbg
```
| Option | Shows |
|---|---|
| 1 | Connected destinations, events sent, overflows (test system: `ALH`, `OPXUAS`, `ALNMGR`, `ALDPRT`) |
| 5 / 7 / 8 / 23 | First-out groups, first-out / continuation items, collections |
| 9 / 10 | Ack type numbers / matrix of one type (`A` automatic, `M` manual) |
| 11 | Items with repeat or delay running |
| 12 | Statistics: start time, item-based / non-item-based / external events received, events sent |
| 14 | Item alarm parameters: monitoring, diagnostic, ack type number, collection, first-out, repeat, delay |
The last `-1` makes DURTIM log `DUR-W-REM_PROC, Process ALMDBG_<pid> exited unexpectedly`
in `umhlog.log`: harmless. A blank answer takes the default shown in brackets; an empty line at
the main prompt repeats the previous action — never send blank lines blindly.
## 3. Storage debugger `alhdbg`
`printf '1\n-1\n' | timeout 10 alhdbg` → storage groups with current unit, cell and start
time (test system: group 3, unit 80). Option 2 lists the units of one group. Options 3 (force
connect) and 4 (stop ALH) only with approval.
## 4. Generate an informational test event (`almdbg` 16)
Changes the alarm history (adds one INFO event; no effect on current alarms). With approval:
```
printf '16\n\n0\n15\n<Section>.<Tag>\n<status text>\n<description>\n-1\n' | timeout 15 almdbg
```
Prompts: timestamp (blank = now), milliseconds, priority (0–15), name, status text,
description. Check with a filter `'EVENT_TYPE = "INFO"'` on `ALARM_CHRONO`.
**Verified:** the event appears with `EVENT_TYPE` INFO, `ITEM_NAME` = the given name, `ALARM_TEXT`
= status text, `DESCRIPTION` = description, priority 15, ack 1. Other text columns (`INSTALL`,
`UNIT`, `SUB`, `SOURCE`, `CATEGORY`, `CONDITION`) contain leftovers or unreadable characters
(ISS-037): use the event only as a test marker.

View file

@ -0,0 +1,103 @@
---
task: Acknowledgement types, areas of interest and alarm selection areas by quick load
version: R1.03
source: IM 36K10L15-01EN §2.3.4, §4.1.2; IM 36K10C20-01EN §A5, §A8; practiced on CI-Eng-Sample 2026-10-01
status: verified
---
# Alarm definitions (quick load)
Sample file: `examples/CI-Eng-Sample/01b_alarm_df.qli` (removed by `93_remove_alarm_df.qli`).
Load definitions **before** the items that use them; remove them **after** those items.
Commands as in skill `system-management` (`dssqld -i` / `-m` / `-r`, `-l <listing>`); run
`dssqld` from the file's folder (paths over 79 characters are cut, ISS-020). `dssqld` returns
exit code 0 even when records fail: always read the summary table (Errors column) or listing.
## 1. Acknowledgement type (`ALARM_ACK_DF`)
```
@FIELDS
NAME,DESCRIPTION,EAL_ACK,NA_N,NN_N,A1A_N,A2A_N,A3A_N
@ALARM_ACK_DF
"<ACK_TYPE>","<description, max 78 characters>",0,1,1,1,1,1
```
- Matrix field `<from><A|N>_<to>`: from state `N`/`A1`/`A2`/`A3`, `A` = was acknowledged,
`N` = was not, to state `N`/`A1`/`A2`/`A3`. 1 = automatic, 0 = operator must acknowledge.
Fields left out are 0. The example equals the predefined `MANUAL`: every alarm needs an
acknowledgement; returning to normal is automatic only if the alarm was acknowledged.
- `EAL_ACK` 1 makes a type for external alarms (Inactive/Active matrix); it cannot be changed
later, nor can the name. Predefined: `AUTOMATIC`, `MANUAL`, `FULLMANUAL` and `_EAL` variants.
- A description longer than 78 characters fails with `DSSG-E-STRBUFSMAL … buffer is too small (79)`.
- Delete refused while an item uses the type: `DSSP-E-NODEL … still in use` /
`DSSP-E-NODELBY, By <item> in dataset ITEM_DF`.
- Check: `almdbg` 9 (numbers) and 10 (`<number>` → matrix with A/M), see `alarm-checks.md`.
## 2. Area of interest (`ALARM_AOI_DF`)
```
@FIELDS
NAME,DESCRIPTION
@ALARM_AOI_DF
"<AOI_NAME>","<description>"
```
`NUMBER` is assigned automatically. Assign to items with `ITEM_DF` `AOI_1` … `AOI_16` (never the
same AOI twice on one item).
## 3. Alarm selection area (`ALARM_ASA_DF`)
```
@FIELDS
NAME,DESCRIPTION,COMPILE,EXPRESSION
@ALARM_ASA_DF
"<ASA_NAME>","<description>",1,\
@"
/* comment */
SECTION = "<Section>.<Sub-section>" and PRIO < 3"@
```
- `COMPILE` 1 compiles on load. Multi-line text: `\` at the end of the line, then `@"` … `"@`.
(Verified with a single `SECTION` condition; the `and PRIO < 3` part follows the manual.)
- Spaces are required around operators (`SECTION = "…"`, not `SECTION="…"`). Keywords and
operators: C20 summary §A8.3. `SECTION` matches only items directly in that section.
- **Check after loading** — a bad expression is still stored:
```
@SELECT
'NAME = "<ASA_NAME>"'
@ALARM_ASA_DF
```
`dssqld -e <out>.qli <filter>.qli -c`, then look at `LISTING` and `VALID_EXPRESSION`:
- good: `% ALC-I-CMP_SUCC, Expression compiled successfully`, `VALID_EXPRESSION` 1
(`COMPILE` reads 0 again after compiling);
- bad: `% ALC-E-UNKNOWN_TOK, Unknown token encountered, token: (…)`,
`ALC-E-CMP_NO_SUCC`, `VALID_EXPRESSION` 0 — the load summary shows 1 error. An invalid
ASA filters out **all** alarms where it is used: fix and reload with `dssqld -m`, or remove.
## 4. Remove
```
@FIELDS
NAME
@ALARM_ASA_DF
"<ASA_NAME>"
@ALARM_AOI_DF
"<AOI_NAME>"
@ALARM_ACK_DF
"<ACK_TYPE>"
```
`dssqld -r` after the items that refer to them are removed or changed.
## Verified (CI-Eng-Sample, 2026-10-01)
`CIENG_ACK`, `CIENG_TANKS` (number 2), `CIENG_TANK1` (`SECTION = "CI-Eng-Sample.TANK1"`,
compiled, valid) loaded and removed in a full sample remove/reload, 0 errors. A test ASA without
spaces was stored invalid and then removed.

View file

@ -0,0 +1,101 @@
---
task: Switch on alarming for an item, test an alarm, read and acknowledge alarms
version: R1.03
source: IM 36K10L15-01EN §2.1–§2.3, IM 36K10C20-01EN §A2, §A5, §A12; IM 36K01A50 (ODBC acknowledge); practiced on CI-Eng-Sample 2026-10-01
status: verified
---
# Item alarming
Sample file: `examples/CI-Eng-Sample/16_item_alarm_df.qli` (loaded with `dssqld -m`).
The item needs limits (`LOW_LOW_LIMIT`, `LOW_LIMIT`, `HIGH_LIMIT`, `HIGH_HIGH_LIMIT`, skill
`item-engineering`); its status then follows the value and maps to an alarm state through
`STATUS_DF` (installed: HIGH 10 → Alarm 2 prio 2, HIGH HIGH 11 → Alarm 3 prio 1, LOW/LOW LOW
likewise, NORMAL 9 → Normal prio 15).
## 1. Switch on alarming (modify the item)
```
@FIELDS
NAME,ALARMING,ACKN_TYPE,AOI_1
@ITEM_DF
"<Section>.<Tag>",1,"<ACK_TYPE>","<AOI_NAME>"
```
Other `ITEM_DF` alarm fields: `ALARM_INHIBIT`, `DELAY`, `REPEAT` (seconds, 0 = off),
`DIAG`, `FO_GROUP` + `FO_ITEM`, `COL_GROUP` (first-out **or** collection, not both),
`ITEM_STAT_n` / `ALARM_STATE_n` / `PRIORITY_n` / `ALARM_TEXT_n` / `ALARM_COLOR_n` /
`MNEMONIC_n` / `SHELVE_ENABLED_n` (n = 1–6, per-item status overrides).
Any change of these fields makes ALM send a NORMAL event (acknowledged automatically when the
item is normal): it **clears a pending unacknowledged return to normal**. Avoid changing alarm
settings of items with standing alarms without the operator knowing.
Check: `almdbg` 14 → `<Section>.<Tag>` shows *Alarm monitoring: yes*, the ack type number,
repeat and delay (`alarm-checks.md`).
## 2. Test an alarm (test items only)
```
itmval -g -n <Section>.<Tag> # note the value to restore
itmval -p -n <Section>.<Tag> -v <value above HIGH_LIMIT>
itmval -g -n <Section>.<Tag> # Status 10 (HIGH), Options without "ack"
```
Unacknowledged alarms lose the `ack` option word; `t1` / `t2` appear while an alarm is direct
or delayed.
## 3. Read current alarms and history
Filter file (one per dataset), then `dssqld -e <out>.qli <filter>.qli -c`:
```
@SELECT
'ITEM_NAME = "<Section>.<Tag>"'
@ALARM_CURRENT
```
- `ALARM_CURRENT`: standing alarms and unacknowledged returns to normal. Key `NAME` =
`"<DD-MON-YY hh:mm:ss.mmm>/<id>"`; useful fields `ALARM_TIME`, `ALARM_ORIG_TIME`,
`ALARM_ACK_TIME`, `OLD_VALUE`, `NEW_VALUE`, `PRIORITY`, `RPT_COUNT`, `ACK`, `OLD_STATUS`,
`NEW_STATUS`, `EVENT_TYPE`, `ALARM_TEXT`, `OLD_STATE`, `NEW_STATE`.
- `ALARM_CHRONO` (history; only exported when named): same fields; add a time range for big
histories, e.g. `'ITEM_NAME = "<Section>.<Tag>" and ALARM_TIME > "01-10-2026 11:00:00"'`.
## 4. Acknowledge from a script
```
@FIELDS
NAME,ACK
@ALARM_CURRENT
"<NAME from the export>",1
```
`dssqld -m` → summary *Modified 1*; the item gets `ack` again, history gets an `ACKNOW` event
(plus a second `ACKNOW` with the node name when `alm.sup` has `ACK_INFO`). Use the `NAME` key,
not `ITEM_NAME` (same rule as the ODBC known issue, IM 36K01A50). Acknowledging is an operator
action: only with the user's approval.
## 5. Delay and repeat
`DELAY` = d: DIRECT at once, DELAY after d seconds (same original time); back to normal earlier
gives NORMAL and no DELAY. `REPEAT` = r: REPEAT every r seconds after the (delayed) alarm,
`RPT_COUNT` 1, 2, …. The current alarm overview shows DIRECT only if `wfladi.sup` `EVENTS`
contains `DIRECT` (not installed by default).
## Verified (CI-Eng-Sample `TANK1.LEVEL`, limits 10/20/80/90, ack type `CIENG_ACK` = MANUAL matrix)
| Step | Result |
|---|---|
| `ALARMING` 1 loaded | `NORMAL` event, ack 1 |
| 44.4 → 85 | Status 10, `ALARM` HIGH Normal → Alarm 2, prio 2, `ACK` 0; in `ALARM_CURRENT` |
| Acknowledge via `ALARM_CURRENT` | `ack` option back; two `ACKNOW` records |
| 85 → 50 after ack | `NORMAL`, acknowledged automatically, `ALARM_CURRENT` empty |
| 50 → 95 → 50 without ack | `ALARM` HIGH HIGH (Alarm 3, prio 1), `NORMAL` stays in `ALARM_CURRENT` with `ACK` 0 until acknowledged |
| `DELAY` 5, `REPEAT` 10, 50 → 85 for 27 s | `DIRECT` 11:36:57, `DELAY` 11:37:02, `REPEAT` 11:37:12 and 11:37:22 (`RPT_COUNT` 1, 2), `NORMAL` 11:37:24 |
| Reset `DELAY`/`REPEAT` to 0 while the NORMAL was unacknowledged | new `NORMAL` event with ack 1; alarm gone from `ALARM_CURRENT` |
| Full sample remove/reload | 0 errors; the alarm test passed again |
No alarm line from `ALDPRT` appeared in `umhlog.log` (ISS-035).

View file

@ -24,3 +24,4 @@ Rules:
| Block / unblock an item; write to a blocked item | `tasks/block-item.md` | verified | | Block / unblock an item; write to a blocked item | `tasks/block-item.md` | verified |
| String items: length limit (1–200) and truncation | `tasks/string-items.md` | verified | | String items: length limit (1–200) and truncation | `tasks/string-items.md` | verified |
| Item forms, limits, PIT filter, clamping, alarm tab, option bits, item statuses | `knowledge/manuals/IM36K10C10-01EN.md` §3–4 | from docs | | Item forms, limits, PIT filter, clamping, alarm tab, option bits, item statuses | `knowledge/manuals/IM36K10C10-01EN.md` §3–4 | from docs |
| Switch on alarming, ack type, delay/repeat, test and acknowledge alarms | skill `alarm-management`, task `item-alarming.md` | verified |

View file

@ -0,0 +1,33 @@
@LANGUAGE
ENGLISH
@VERSION
1.03.00
! Alarm definitions used by TANK1.LEVEL (16_item_alarm_df.qli). Load before the items refer to them.
! Acknowledgement type: every alarm needs a manual acknowledgement; a return to normal is
! acknowledged automatically only if the alarm was acknowledged (same matrix as MANUAL).
! Field <from><A|N>_<to>: from state N/A1/A2/A3 with Ack/Nack, to state N/A1/A2/A3; 1 = automatic.
! Unlisted matrix fields default to 0 (manual).
@FIELDS
NAME,DESCRIPTION,EAL_ACK,NA_N,NN_N,A1A_N,A2A_N,A3A_N
@ALARM_ACK_DF
"CIENG_ACK","CI-Eng-Sample: manual ack; auto ack on return to normal if acked",0,1,1,1,1,1
! Area of interest (alarm grouping for displays and destinations)
@FIELDS
NAME,DESCRIPTION
@ALARM_AOI_DF
"CIENG_TANKS","CI-Eng-Sample tank items"
! Alarm selection area, compiled on load (COMPILE = 1). Keywords and operators need spaces.
@FIELDS
NAME,DESCRIPTION,COMPILE,EXPRESSION
@ALARM_ASA_DF
"CIENG_TANK1","Alarms of section CI-Eng-Sample.TANK1",1,\
@"
/* Alarm selection area : CIENG_TANK1 */
SECTION = "CI-Eng-Sample.TANK1""@

View file

@ -0,0 +1,13 @@
@LANGUAGE
ENGLISH
@VERSION
1.03.00
! Switch on alarming for TANK1.LEVEL (limits 10/20/80/90 come from 02_item_df.qli). Load with dssqld -m.
! Status and alarm state come from STATUS_DF: > 80 HIGH (Alarm 2, prio 2), > 90 HIGH HIGH (Alarm 3, prio 1).
@FIELDS
NAME,ALARMING,ACKN_TYPE,AOI_1
@ITEM_DF
"CI-Eng-Sample.TANK1.LEVEL",1,"CIENG_ACK","CIENG_TANKS"

View file

@ -0,0 +1,18 @@
@LANGUAGE
ENGLISH
@VERSION
1.03.00
! Remove CI-Eng-Sample alarm definitions (after the items: an acknowledgement type in use cannot be deleted)
@FIELDS
NAME
@ALARM_ASA_DF
"CIENG_TANK1"
@ALARM_AOI_DF
"CIENG_TANKS"
@ALARM_ACK_DF
"CIENG_ACK"

View file

@ -31,7 +31,7 @@ cmd /c "<repo>\examples\CI-Eng-Sample\remove.cmd"
|---|---|---| |---|---|---|
| `CI-Eng-Sample` | Section | Top level | | `CI-Eng-Sample` | Section | Top level |
| `CI-Eng-Sample.TANK1`, `.PUMP1`, `.SYSTEM` | Sections | Tank, pump, system monitoring | | `CI-Eng-Sample.TANK1`, `.PUMP1`, `.SYSTEM` | Sections | Tank, pump, system monitoring |
| `CI-Eng-Sample.TANK1.LEVEL` | Item, Real | %, format `999.9`, limits LL 10 / L 20 / H 80 / HH 90, scale 0–100 (alarming off), stored in `CIENG_EVENT` | | `CI-Eng-Sample.TANK1.LEVEL` | Item, Real | %, format `999.9`, limits LL 10 / L 20 / H 80 / HH 90, scale 0–100, stored in `CIENG_EVENT`; alarming on (ack type `CIENG_ACK`, area `CIENG_TANKS`; `16_item_alarm_df.qli`) |
| `CI-Eng-Sample.TANK1.INFLOW` | Item, Real | m3/h, format `9999.9`, scale 0–500, stored in `CIENG_EVENT` | | `CI-Eng-Sample.TANK1.INFLOW` | Item, Real | m3/h, format `9999.9`, scale 0–500, stored in `CIENG_EVENT` |
| `CI-Eng-Sample.PUMP1.RUNNING` | Item, Boolean | | | `CI-Eng-Sample.PUMP1.RUNNING` | Item, Boolean | |
| `CI-Eng-Sample.PUMP1.MODE` | Item, Integer | 0 manual, 1 auto | | `CI-Eng-Sample.PUMP1.MODE` | Item, Integer | 0 manual, 1 auto |
@ -67,6 +67,9 @@ cmd /c "<repo>\examples\CI-Eng-Sample\remove.cmd"
| `CIENG_UA_LINE` | OPC UA client line | Client process `OPXCIENG` (created and started by loading the line) | | `CIENG_UA_LINE` | OPC UA client line | Client process `OPXCIENG` (created and started by loading the line) |
| `CIENG_UA` | OPC UA station | `opc.tcp://localhost:34493`, Basic256Sha256 / SignAndEncrypt, anonymous; subscription `CIENG_SUB` (1 s); points `LEVEL`, `SRV_STATE` | | `CIENG_UA` | OPC UA station | `opc.tcp://localhost:34493`, Basic256Sha256 / SignAndEncrypt, anonymous; subscription `CIENG_SUB` (1 s); points `LEVEL`, `SRV_STATE` |
| OPC visible | Flags | Sections `CI-Eng-Sample`, `TANK1` and item `TANK1.LEVEL` are OPC visible, item read-only (`12_opc_visible_df.qli`) | | OPC visible | Flags | Sections `CI-Eng-Sample`, `TANK1` and item `TANK1.LEVEL` are OPC visible, item read-only (`12_opc_visible_df.qli`) |
| `CIENG_ACK` | Acknowledgement type | Every alarm needs an acknowledgement; return to normal automatic only if the alarm was acknowledged (same matrix as `MANUAL`) |
| `CIENG_TANKS` | Area of interest | Label for tank items (`TANK1.LEVEL` `AOI_1`) |
| `CIENG_TANK1` | Alarm selection area | `SECTION = "CI-Eng-Sample.TANK1"`, compiled on load |
| `CIENG_VIEWER` | Authorization group | Read-only: `ITEM_READ`, `SECTION_READ`, `ALARM_CURRENT_READ`, `ALARM_CHRONO_READ`. No users are created by the sample. | | `CIENG_VIEWER` | Authorization group | Read-only: `ITEM_READ`, `SECTION_READ`, `ALARM_CURRENT_READ`, `ALARM_CHRONO_READ`. No users are created by the sample. |
Items created by objects (`TANK1.CALC.VOLUME`, `TANK1.JFLOW.sPerMin`) and their sections are Items created by objects (`TANK1.CALC.VOLUME`, `TANK1.JFLOW.sPerMin`) and their sections are
@ -89,8 +92,10 @@ New items start with status 13 (`NOT INIT`) until a value is written.
| `09_modbus_line_df.qli`, `10_modbus_station_df.qli`, `11_item_eqp_df.qli` | Modbus line; station, scan type, points; items connected to points | | `09_modbus_line_df.qli`, `10_modbus_station_df.qli`, `11_item_eqp_df.qli` | Modbus line; station, scan type, points; items connected to points |
| `12_opc_visible_df.qli` | OPC visible / read flags (loaded with `dssqld -m`) | | `12_opc_visible_df.qli` | OPC visible / read flags (loaded with `dssqld -m`) |
| `13_opcua_line_df.qli`, `14_opcua_station_df.qli`, `15_item_opcua_df.qli` | OPC UA client line; station, subscription, points; connected items | | `13_opcua_line_df.qli`, `14_opcua_station_df.qli`, `15_item_opcua_df.qli` | OPC UA client line; station, subscription, points; connected items |
| `01b_alarm_df.qli` | Alarm definitions: acknowledgement type, area of interest, alarm selection area (`ALARM_ACK_DF`, `ALARM_AOI_DF`, `ALARM_ASA_DF`) |
| `16_item_alarm_df.qli` | Switch on alarming for `TANK1.LEVEL` (loaded with `dssqld -m`) |
| `equipment/eqpciengslv_start.cmd`, `_stop.cmd` | Start/stop the Modbus slave mirror (copy to `tls\com`) | | `equipment/eqpciengslv_start.cmd`, `_stop.cmd` | Start/stop the Modbus slave mirror (copy to `tls\com`) |
| `80_`…`92_remove_*.qli` | Names to delete, in reverse order | | `76_`…`93_remove_*.qli` | Names to delete, in reverse order (alarm definitions last, `93`) |
| `load.cmd`, `remove.cmd` | Run the steps in the right 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`) | | `monitoring/*.sup.txt` | Setup-file lines for the monitoring processes (not applied by `load.cmd`) |
@ -126,6 +131,14 @@ exchange, done by the user (skill `data-access`, task `opcua-client.md` §4):
Then `UA.COMM_OK` = 1 and `UA.LEVEL_COPY` follows `TANK1.LEVEL`. The trust is kept when the Then `UA.COMM_OK` = 1 and `UA.LEVEL_COPY` follows `TANK1.LEVEL`. The trust is kept when the
sample is removed and loaded again. sample is removed and loaded again.
## Alarms (TANK1.LEVEL)
`TANK1.LEVEL` raises HIGH above 80 (Alarm 2, priority 2) and HIGH HIGH above 90 (Alarm 3,
priority 1). To try it on a test system: `itmval -p -n CI-Eng-Sample.TANK1.LEVEL -v 85`, export
`ALARM_CURRENT` (filter on `ITEM_NAME`), acknowledge with `dssqld -m` on `ALARM_CURRENT`
(`NAME`, `ACK` 1), write the level back below 80. See skill `alarm-management`, task
`item-alarming.md`.
## Monitoring processes (optional) ## Monitoring processes (optional)
`monitoring/` holds the lines to add to the setup files in `%TLS_ROOT_PATH%\tls\sup\` so that `monitoring/` holds the lines to add to the setup files in `%TLS_ROOT_PATH%\tls\sup\` so that
@ -137,7 +150,6 @@ testing. See the `system-management` skill, task `monitoring-processes.md`.
| Phase | Adds | | Phase | Adds |
|---|---| |---|---|
| 8 | Alarm settings on sample items |
| 9 | More storage groups (scan/time, aggregation) | | 9 | More storage groups (scan/time, aggregation) |
| 10 | A display and symbol | | 10 | A display and symbol |
| 11 | A report | | 11 | A report |

View file

@ -5,6 +5,8 @@ rem Results go to *.qlo listing files; check that Errors = 0.
rem Restart CI Server afterwards: new storage groups only start storing after a restart. rem Restart CI Server afterwards: new storage groups only start storing after a restart.
cd /d "%~dp0" cd /d "%~dp0"
dssqld -i 01_section_df.qli -l 01_section_df.qlo dssqld -i 01_section_df.qli -l 01_section_df.qlo
rem Alarm definitions (acknowledgement type, area of interest, alarm selection area)
dssqld -i 01b_alarm_df.qli -l 01b_alarm_df.qlo
dssqld -i 02_item_df.qli -l 02_item_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 02b_sub_item_df.qli -l 02b_sub_item_df.qlo
dssqld -i 03_his_group_df.qli -l 03_his_group_df.qlo dssqld -i 03_his_group_df.qli -l 03_his_group_df.qlo
@ -33,3 +35,5 @@ echo Waiting 10 seconds for OPC UA client OPXCIENG to start...
powershell -NoProfile -Command "Start-Sleep -Seconds 10" powershell -NoProfile -Command "Start-Sleep -Seconds 10"
dssqld -i 14_opcua_station_df.qli -l 14_opcua_station_df.qlo dssqld -i 14_opcua_station_df.qli -l 14_opcua_station_df.qlo
dssqld -i 15_item_opcua_df.qli -l 15_item_opcua_df.qlo dssqld -i 15_item_opcua_df.qli -l 15_item_opcua_df.qlo
rem Alarming: switch on alarms for TANK1.LEVEL (modify existing record)
dssqld -m 16_item_alarm_df.qli -l 16_item_alarm_df.qlo

View file

@ -24,4 +24,6 @@ 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 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 91_remove_item_df.qli -l 91_remove_item_df.qlo
dssqld -r 92_remove_section_df.qli -l 92_remove_section_df.qlo dssqld -r 92_remove_section_df.qli -l 92_remove_section_df.qlo
rem Alarm definitions last: an acknowledgement type still used by an item cannot be deleted.
dssqld -r 93_remove_alarm_df.qli -l 93_remove_alarm_df.qlo
del 90a_stop_his_group_df.qli del 90a_stop_his_group_df.qli

View file

@ -54,3 +54,6 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
| ISS-032 | 2026-10-01 | ACCESS (OPC UA server node IDs) | IM 36K10L45 §10.3 shows CI Server node IDs (`{"nsid":"32"}`, `{"0":"Value","itnm":"ITEM1"}`) and the CI Server namespace `http://www.yokogawa.com/CI_Server/` (ns 3) but not which namespace the **entities** use. With that URI (or `urn:<host>:Yokogawa:CI_SERVER_OPC_UA_SERVER`) the client point was silently not monitored. Browsing (`OPCUAC_TAG_DF`) shows sections/items in **`urn:Yokogawa:CI_SERVER_OPC_UA_SERVER`**; with it `{"0":"Value","itnm":"<item>"}` and `{"0":"Value","nsid":"<n>"}` both work. IM 36K10E20 §2.2.6 also asks to enable `OPXUAS_USE_NAME_NODEIDS` and restart for CI client ↔ CI server; not needed on the test system. | closed | Closed 2026-10-01 (user decision: installed software is the reference). Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10L45-01EN.md` §7 (done); `knowledge/manuals/IM36K10E20-01EN.md` §3 (done); `.claude/skills/data-access/tasks/opcua-client.md` (done) | | ISS-032 | 2026-10-01 | ACCESS (OPC UA server node IDs) | IM 36K10L45 §10.3 shows CI Server node IDs (`{"nsid":"32"}`, `{"0":"Value","itnm":"ITEM1"}`) and the CI Server namespace `http://www.yokogawa.com/CI_Server/` (ns 3) but not which namespace the **entities** use. With that URI (or `urn:<host>:Yokogawa:CI_SERVER_OPC_UA_SERVER`) the client point was silently not monitored. Browsing (`OPCUAC_TAG_DF`) shows sections/items in **`urn:Yokogawa:CI_SERVER_OPC_UA_SERVER`**; with it `{"0":"Value","itnm":"<item>"}` and `{"0":"Value","nsid":"<n>"}` both work. IM 36K10E20 §2.2.6 also asks to enable `OPXUAS_USE_NAME_NODEIDS` and restart for CI client ↔ CI server; not needed on the test system. | closed | Closed 2026-10-01 (user decision: installed software is the reference). Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10L45-01EN.md` §7 (done); `knowledge/manuals/IM36K10E20-01EN.md` §3 (done); `.claude/skills/data-access/tasks/opcua-client.md` (done) |
| ISS-033 | 2026-10-01 | ACCESS (Engineering Module OPC UA point) | Tested by the user: the point form's *Browse path* stops at the item (`Objects/CI-Eng-Sample/TANK1/INFLOW`) and stores the item **object** `{"nsid":"548"}`; the point is not monitored (revised sampling interval 0, connected item status 13, *Last value*/*Data type* empty). Typing `{"0":"Value","itnm":"CI-Eng-Sample.TANK1.INFLOW"}` in *Node Id* fixed it (values followed at once). Browsing into an item that is OPC visible but not *Read* fails (`UncertainNotAllNodesAvailable`, `OPXC-E-BRW_NODE`). | open | Check whether the browse dialog can expand an item to `Value` (e.g. double-click); otherwise type the node ID. | `knowledge/manuals/IM36K10E20-01EN.md` §2 (done); `.claude/skills/data-access/tasks/opcua-client.md` §3 (done) | | ISS-033 | 2026-10-01 | ACCESS (Engineering Module OPC UA point) | Tested by the user: the point form's *Browse path* stops at the item (`Objects/CI-Eng-Sample/TANK1/INFLOW`) and stores the item **object** `{"nsid":"548"}`; the point is not monitored (revised sampling interval 0, connected item status 13, *Last value*/*Data type* empty). Typing `{"0":"Value","itnm":"CI-Eng-Sample.TANK1.INFLOW"}` in *Node Id* fixed it (values followed at once). Browsing into an item that is OPC visible but not *Read* fails (`UncertainNotAllNodesAvailable`, `OPXC-E-BRW_NODE`). | open | Check whether the browse dialog can expand an item to `Value` (e.g. double-click); otherwise type the node ID. | `knowledge/manuals/IM36K10E20-01EN.md` §2 (done); `.claude/skills/data-access/tasks/opcua-client.md` §3 (done) |
| ISS-034 | 2026-10-01 | ACCESS (OPC UA server setup) | Installed vs IM 36K10L45 §10.5–10.6: `ServerConfig.xml` enables certificate user tokens (`EnableCertificate true`, manual false) and offers no `None` endpoint (only Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss with Sign or SignAndEncrypt); the `rejected` folder is created only at the first rejection; `opxuas.sup` uses `OPXUAS_DYNAMIC_SCANRATE` (manual `OPXUAS_USE_DYNAMIC_SCANRATE`) and has `OPXUAS_SET_HIGH_PRIO_15` (not described); `opxsys.sup` has `OPXDAS_SET_LOG_LEVEL` (not described). Also `dur.sup` adaptive queue entry `OPCEXE` while the installed executors are `OPCEXE1`–`4`. | closed | Closed 2026-10-01 (user decision: installed software is the reference). Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10L45-01EN.md` §4, §7 (done); `knowledge/manuals/IM36K10L30-01EN.md` §8 (done) | | ISS-034 | 2026-10-01 | ACCESS (OPC UA server setup) | Installed vs IM 36K10L45 §10.5–10.6: `ServerConfig.xml` enables certificate user tokens (`EnableCertificate true`, manual false) and offers no `None` endpoint (only Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss with Sign or SignAndEncrypt); the `rejected` folder is created only at the first rejection; `opxuas.sup` uses `OPXUAS_DYNAMIC_SCANRATE` (manual `OPXUAS_USE_DYNAMIC_SCANRATE`) and has `OPXUAS_SET_HIGH_PRIO_15` (not described); `opxsys.sup` has `OPXDAS_SET_LOG_LEVEL` (not described). Also `dur.sup` adaptive queue entry `OPCEXE` while the installed executors are `OPCEXE1`–`4`. | closed | Closed 2026-10-01 (user decision: installed software is the reference). Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10L45-01EN.md` §4, §7 (done); `knowledge/manuals/IM36K10L30-01EN.md` §8 (done) |
| ISS-035 | 2026-10-01 | ALARM (`ALDPRT`) | `ALDPRT` is running and connected (`almdbg` 1 shows `Events-send-to` rising with each alarm), `aldprt.sup` sets no log destination (so per IM 36K10L15 §4.3 it should log via UMH) and `EVENTS` includes `alarm`/`ackn`, but no alarm line appears in `tls\log\umhlog.log` for the CI-Eng-Sample HIGH / HIGH HIGH / acknowledge events. No other log file changed. Cause unknown (UMH filtering? output only with `LOGUMH` set explicitly?). | open | Ask the user whether alarm lines were ever seen in the message log; possibly test `LOGUMH` (or `LOGSCN`) in `aldprt.sup` (admin, restart) in a later session. Low priority: history and overviews are not affected. | `.claude/skills/alarm-management/tasks/item-alarming.md` (last line); `knowledge/manuals/IM36K10L15-01EN.md` §8 |
| ISS-036 | 2026-10-01 | ALARM (setup) | Installed vs manuals: `alh.sup` has `DB-JRNL = WAL` and `DB-SYNC = OFF`, not described in IM 36K10L15 §3.4; storage group `ALH` has lifetime **52 weeks** while IM 36K10C20 §A7 says the default is 2 days (may have been changed on this system earlier — unknown); `aldprt.sup` uses `TIMEFMT` where the manual text also writes `TIMFMT`. | open | Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10L15-01EN.md` §7, §8; `knowledge/manuals/IM36K10C20-01EN.md` §A7 |
| ISS-037 | 2026-10-01 | ALARM (history fields) | `ALARM_CHRONO` records contain leftover or unreadable text: INFO events generated with `almdbg` 16 carry `INSTALL`/`UNIT`/`TAG`/`SUB` values from earlier events and non-ASCII bytes in `SOURCE`, `CATEGORY`, `CONDITION`; item events of `CI-Eng-Sample.TANK1.LEVEL` show `SUB` = `RoC` although the item has only the sub-item `MAX`. | open | Check whether the alarm overview shows the same (phase 10, needs a display). Treat these columns as unreliable for non-OPC events until then. | `.claude/skills/alarm-management/tasks/alarm-checks.md` §4 |

View file

@ -0,0 +1,173 @@
---
manual: IM 36K10C20-01EN
title: Engineering Module - Alarms
edition: 3rd Edition, Sep. 2023
version: R1.03
status: item alarm settings, acknowledgement types, areas of interest, alarm selection areas, delay/repeat verified by quick load on CI-Eng-Sample 2026-10-01; Engineering Module forms, overviews, grouping, shelving, link display, notifications and external/Vnet alarms from docs
---
# Engineering Module - Alarms (R1.03)
How alarms are set up in the Engineering Module (*Configuration > Alarming* and the item
form) and what the operator sees. Part A = item-based alarms, part B = external alarms (OPC UA
servers, CENTUM VP). Kernel internals: `IM36K10L15-01EN.md`. Section numbers refer to the
manual. Dataset/field names below were checked on the installed system.
## A1. Functions (§A1)
Detection (limit check, OPC A&E), management (acknowledgement, first-out groups, alarm
collections, history), display/operation (current/historical/shelved overviews, alarm sound,
AOI and ASA filters, shelving, alarm link display), external notification (e-mail, SMS),
reporting. A jump NORMAL → HIGH HIGH gives only the HIGH HIGH alarm.
## A2. Item form, alarm fields (§A2)
| Form | Field (`ITEM_DF`) | Meaning |
|---|---|---|
| General | *Alarming* (`ALARMING`) | Show/notify this item's alarms |
| Item management | *Alarm inhibit* (`ALARM_INHIBIT`) | Suppress display and notification |
| Limits and filtering | `HIGH_HIGH_LIMIT`, `HIGH_LIMIT`, `LOW_LIMIT`, `LOW_LOW_LIMIT`, deadband | Status by value; deadband for the way back |
| Alarming | *OPC AE alarm detection* | Alarm from an OPC A&E source; no limit check then |
| | *Acknowledgment type* (`ACKN_TYPE`) | `ALARM_ACK_DF` name; none = automatic |
| | *Alarm collection* (`COL_GROUP`), *First-out group* (`FO_GROUP`), *First-out item* (`FO_ITEM`) | One group per item; never both kinds |
| | *Delay time* (`DELAY`), *Repeat time* (`REPEAT`), seconds, 0 = off | |
| | Up to 6 per-item status overrides: status, alarm state, priority, alarm text, colour, mnemonic, shelve enable (`ITEM_STAT_n`, `ALARM_STATE_n`, `PRIORITY_n`, `ALARM_TEXT_n`, `ALARM_COLOR_n`, `MNEMONIC_n`, `SHELVE_ENABLED_n`) | |
| Areas of interest | Area 1–16 (`AOI_1` … `AOI_16`) | Same AOI not twice |
- Changing alarm settings re-evaluates the item even without a status change. **Verified:** a
`dssqld -m` on `ALARMING`, `DELAY` or `REPEAT` produced a NORMAL event; when the item was
back to normal but still unacknowledged, this new event was acknowledged automatically and
the alarm left `ALARM_CURRENT`.
- **Delayed alarm** (verified, `DELAY` 5): DIRECT at once, DELAY 5 s later (same original
time). The current alarm overview shows DIRECT only if `wfladi.sup` `EVENTS` includes
`DIRECT` (installed: not included; add it and restart, §A2.4).
- **Repeated alarm** (verified, `REPEAT` 10): REPEAT events every 10 s after the delay,
`RPT_COUNT` 1, 2, …; repeats can be acknowledged only in the historical overview.
## A3. Alarm overviews (§A3)
- Current (standing + unacknowledged), historical, shelved. Columns include alarm time, section
1/2, tag, sub-item, alarm type (NORMAL, ALARM, ACKNOW, DELAY, DIRECT, FIRSTUP, INFO), text,
priority, acknowledgement, value, quality, OPC fields and `C…` combined fields, item name,
acknowledged by, original time, location, area nn, collection, priority text, CI attributes.
Keep to 20–30 columns (throughput, memory).
- Priority text: *Alarming > Alarm priority labels* (`ALARM_PRIORITY_DF`, 0–15, ≤ 31 ASCII
characters; empty on the test system).
- CI attributes (vendor attributes from OPC AE/UA client settings) are chosen on the overview's
*Attributes* tab; listed under *Alarming > Alarm attributes*.
- Operations (right-click): acknowledge (also the check box; current overview only), block,
shelve, link display, export (CSV/XML, all displayed rows), filters (condition; date normal or
time-interval mode).
## A5. Acknowledgement (§A5)
Unacknowledged alarms blink; acknowledgement is recorded as ACKNOW in history. The setting is
per **alarm state transition** (4 states × Ack/Nack × 4 states = 32 check boxes = one
acknowledgement type), not per item status — so give statuses that need different handling
different alarm states. Form: *Alarming > Acknowledgement type*; name and *External alarm* flag
cannot be changed; delete only when unused. Predefined `MANUAL`: every new alarm state manual;
N → N automatic; Ax → N automatic only if Ax was acknowledged.
Quick load (verified, CI-Eng-Sample `01b_alarm_df.qli`): `ALARM_ACK_DF` fields `NAME`,
`DESCRIPTION` (max 78 characters), `EAL_ACK`, `<from><A|N>_<to>` (e.g. `A2A_N`) — see L15
summary §5. Acknowledge from a program or script: `dssqld -m` on `ALARM_CURRENT` with `NAME`
(the `<time>/<id>` key) and `ACK` 1 (verified; same rule as the ODBC known issue in IM 36K01A50).
## A6. Alarm grouping (§A6)
- **First-out group** (*Alarming > First-out group*; `ALARM_FO_DF`: `DELAY` internal,
`EXT_DELAY` external, parents `PAR_GRP_1…9`): first-out items vs continuation items; while a
first-out item is in alarm, new continuation alarms are hidden. Internal delay keeps the group
active after the first-out items clear. Parents make children external-active (whole subtree,
several parents allowed; no loops). Rename = copy; delete only when unused.
- **Alarm collection** (*Alarming > Alarm collections*; `ALARM_FU_DF`): group status =
alarm × acknowledged × reset (8 statuses, numbers 9, 128–135, e.g. `AL_NAK_NRS` 132). Optional
numeric *status item* (counts alarms; its own alarming shows the group), Boolean
*acknowledgement item* and *reset item* (0→1, 1→0 or any), reset Manual/Automatic (use
Automatic if reset is not needed), default ack type, node, *first-up alarming* (first alarm
shown as FIRSTUP, priority offset −15…15), *Acknowledge group too*. Installed fields:
`NAME`, `NODE`, `PRIO_OFFS_1UP`, `RESET_TYPE`, `ACKN_TYPE`, `RESET_TRNS`, `ACKN_TRNS`,
`EAL_ACKN_TYPE`, `FIRSTUP_MON`, `LOOPB_ACK`, `RESET_ITEM`, `ACKN_ITEM`, `STATUS_ITEM`.
## A7. Alarm history (§A7)
Storage group `ALH` (type Alarm): rollover 1 day; the manual says lifetime 2 days by default —
**the test system shows 52 weeks** (ISS-036). Set the lifetime to the required period; details
in the historical manual (phase 9).
## A8. Alarm filters (§A8)
| Filter | Overview | Sound | Notification | User filter |
|---|---|---|---|---|
| Unit / item identification | yes | yes | no | no |
| Area of interest | yes | yes | no | no |
| Alarm selection area | yes | yes | yes | yes |
- **Area of interest** (*Alarming > Areas of Interest*; `ALARM_AOI_DF` `NAME`, `DESCRIPTION`,
`NUMBER` assigned automatically): a label, up to 16 per item.
- **Alarm selection area** (*Alarming > Alarm selection areas*; `ALARM_ASA_DF` `EXPRESSION`,
`COMPILE`, `LISTING`, `VALID_EXPRESSION`): `<keyword> <operator> <constant>` **with spaces**
around the operator. Keywords `ACTOR_ID`, `AOI`, `COLLNAM`, `COND_NAME`, `EAL_ID`, `EAL_NAME`,
`EVENT_CAT`, `INST`, `ITMID` (`node,group,number,0,0`), `ITMNAM`, `ITMSUB`, `PRIO`, `QC`,
`SECTION`, `SOURCE`, `SUBC_NAME`, `UNIT`; operators `= != < > <= >= | &` (by type); strings in
double quotes with `*` / `?` wildcards; `and` / `or` evaluated left to right (no precedence),
parentheses, `/* */` comments. `section = "A.B"` matches items directly in `A.B`, not in
sub-sections. An invalid expression filters out every alarm.
- **Verified**: `COMPILE` 1 on load compiles the expression; the export then shows `COMPILE` 0,
the numbered `LISTING` with `ALC-I-CMP_SUCC` and `VALID_EXPRESSION` 1. Without spaces
(`SECTION="…"`) the load reports an error but the record **is stored** with
`ALC-E-UNKNOWN_TOK` in `LISTING` and `VALID_EXPRESSION` 0 — check the listing after loading.
## A9. Shelving (§A9)
Shelve standing alarms from the current overview; they move to the shelved overview until
unshelved, back to normal (auto-unshelve), or the shelf time expires (marked, not unshelved).
Shelf types: Static (re-alarm shows normally) or Dynamic (re-alarm within the max shelf time is
shelved again), max shelf time 180–43200 s. Shelf groups: which alarm states (A1–A3) and up to
16 shelf types; assigned to users (*Authorisation > Users*, Alarming tab). Overview component:
*Operator can shelve alarms* (+ multiple). System-wide shelving: `asbman.sup`
`SYS_WIDE_SHELF` (installed N). Shelving history needs the audit option.
## A10–A12. Link display, notification, reporting
- **Alarm link display** (*Alarming > Alarm link display*): entity (item/EAL, wildcards `*` `+`)
+ user (wildcards) → display name; first matching entry wins; overview component option
*Operator can activate alarm related display* (shortcut, layout, frame).
- **Notification**: `alnsmtp.sup` / `alnsms.sup` (restart CI Core after changes); *Alarm
notification users* (SMTP or SMS, address, retries, *Receive clear*, active, weekly
schedule), *Alarm notification destinations* (ASA or all, callback item toggling on success,
order All/Sequential, delay, repeat, retries, retry timeout, up to 32 users); *Send message*
for a test (subject "Alarm notification: Manual message"). SMTP without authentication only.
- **Reporting**: datasets `ALARM_CURRENT`, `ALARM_CHRONO`; default reports `ALARM_COUNT`,
`ALARM_CURRENT`, `ALARM_EXT_CURR`, `ALARM_HISTORY`, `ALARM_SHELVE` (audit option),
`ALM_ATTS_CUR`, `ALM_ATRS_HIS` (phase 11).
## B1. External alarms from OPC UA servers (§B1)
- OPC UA A&C messages with a condition type become **external alarms** when an **EAL** is
defined (under the root, a section or an object: *External alarm > Add*; dataset
`EXTERNAL_ALARM_DF`). Others are stored as INFO events. Alarm time = time in the source;
acknowledgement is sent to the server and reflected back.
- EAL form: name (≤ 40 bytes without section, not renamable), station, alarm template,
condition node ID (namespace ≤ 127, node ID ≤ 383 bytes; not twice; not
NonExclusiveLimitAlarmType), OPC visible/read/write, *OPC Manual Reset*, ack type (none =
`FULLMANUAL_EAL`), collection, first-out (+ *First-out EAL*), shelve, process areas 1–999,
diagnostic, delay/repeat 0–65535 s, severity→priority mapping, areas 1–16.
- Supported like items: ack type (Inactive/Active matrix), diagnostic, collections, first-out,
delay, repeat, AOI, sound, ASA (`EAL_NAME`, `EAL_ID`), shelving, link display, notification,
priority change on ack. No alarm inhibit.
- Overview columns map to OPC UA fields (Message, Severity, AckedState, SourceName, EventType,
ConditionName, ClientUserId, EventId, ConditionId, BranchId, ActiveState.TransitionTime).
- Appendix 2: changing delay/repeat/collection/ack type while an alarm stands behaves
differently for EALs (timers adjusted, ack state kept, description/AOI changes only for new
alarms) than for items (DELAY/REPEAT replaced by ALARM, AUTOMATIC → MANUAL makes the alarm
unacknowledged, changes applied at once).
## B2. CENTUM VP (Vnet) alarms (§B2)
Alarms from CENTUM VP over Vnet/IP (RGS with VAGW) as EALs; acknowledgement in CI Server is a
batch acknowledgement of the function block in CENTUM VP (system alarms only locally); manual
reset of system alarms without recovery message; at CI Server start only process alarm
messages are restored (time = PC start, unacknowledged); no AOF or operation groups (AOF only
as CI attribute). CI Exchange for CENTUM VP generates the EALs (`IM36K10L55-01EN.md`); review
them and configure the overviews afterwards. Not available on the test system.

View file

@ -0,0 +1,83 @@
---
manual: IM 36K10E30-01EN
title: Alarm System Performance Analysis
edition: 3rd Edition, Sep. 2023
version: R1.03
status: from docs; launcher and fetch limits (jwuiaan.sup) checked read-only 2026-10-01; GUI not practiced
---
# Alarm System Performance Analysis (R1.03)
The **ASPA tool** fetches alarm events from a CI Core and analyses them with views based on
EEMUA 191 and ISA 18.2: operator load, acknowledgement times, floods, top offenders, long
standing, repeats, consequential alarms, and a summary of KPIs against targets. Section numbers
refer to the manual.
## 1. Start and limits (§1)
- Start from the CI Server program menu (installed launcher `%TLS_ROOT_PATH%\tls\com\jwuiaan.cmd`,
debug variant `jwuiaan_debug.cmd`) and log on with a CI Server user.
- Workflow: define filters → *Get alarms* → tabs fill automatically (sequentially by default;
can take hours on big data) → adjust the fields under each tab → print / export → repeat.
- Fetch limits protect the PC and the server: `jwuiaan.sup` (*Tuning* tab).
**Installed:** `JDSS_MSG_FETCH_NUMBER_REMOTE = 50000`, `JDSS_MSG_FETCH_NUMBER_LOCAL = 100000`.
- An *alarm* belongs to one item and lasts from arising to return to normal; repeats and status
changes (HIGH → HIGH HIGH) are *alarm events* of the same alarm.
- Menus: print, export chart (PNG, current zoom) or table (CSV, XML), export/import user
filters (`.filter`), save/load ASPA database, tab filling control (parallel / sequential /
stop and disable auto-fill / current tab), big font, save application log (for support).
## 2. Filtering area (§2)
| Part | Use |
|---|---|
| Time filter | Main period (start < end) plus optional comparison periods (same length, own start) |
| Filtering mode | Use only the selected group-filter tab, or AND of all tabs |
| Group filter | Up to 9 groups (number + colour), each by *User (ASA)* (the ASA of a user), *Item name* (section drill-down or typed), *ASA*, *AOI*, *Coll*; *ColorAndVisibility* tab; counts per period shown after fetching |
| Acknowledge filter | Only unacknowledged; min / max duration to acknowledge |
| Save/Load filter | In memory only (lost on exit); use *Export User Filters* to keep them |
Users, ASAs, AOIs and collections come from the Engineering Module (C20 summary §A8, §A6).
## 3. Reporting tabs (§3)
| Tab | Shows | Main settings |
|---|---|---|
| Load | Max/average alarm rate and % time above the acceptable rate per group (KPI, timelines, grid, distribution pie) | Acceptable *A* alarms per *B* minutes, interval (h) |
| Acknowledge | Acknowledged in time / late / not acknowledged / nuisance (cleared before ack), average ack time; detail per alarm | Acceptable acknowledge time, interval |
| Count | Alarms per interval per group | Interval, stacked, labels |
| Floods | Only intervals above a minimum count (trips, start-ups) | Measure period, min. alarms |
| Top Ten | Items with most alarms (Top 1–100), durations | Absolute / percent |
| Long Standing | Longest (or shortest) standing alarms; still-standing alarms ignored | Long/short, top N |
| Repeat | Items with most repeats | Top N |
| Item status | Alarms per status (HIGH, HIGH HIGH, …) | Period |
| Consequential | Pairs A → B within *Max. Seconds*: total, consequential count, correlation % | Max seconds, min correlation, same status only |
| Time Line | Periods of alarm activity per group, per priority, for the top N | Top N |
| All Alarms | Every fetched alarm with arise / ack / normal times and durations | — |
| Summary | KPIs vs targets (needs ≥ 30 days of data) | Chattering period (s) |
Charts zoom with drag (Shift-drag zooms out) and pan with right-drag; tables sort, resize and
filter by column (funnel icon).
## 4. Summary KPIs and targets (§3.12)
| Metric | Target |
|---|---|
| Average annunciated alarms per day | 150–300 at most |
| … per hour | 6–12 at most |
| … per 10 minutes | 1–2 at most |
| % hours with more than 30 alarms | < 1 % |
| % 10-minute periods with more than 10 alarms | < 1 % |
| Maximum alarms in a 10-minute period | < 11 |
| % time in flood (starts above 10 alarms / 10 min, ends below 5) | < 1 % |
| Top 10 alarms as % of all alarms | < 1 % to 5 % |
| Chattering and fleeting alarms | 0 |
| Alarms standing > 24 h | < 5 per day |
| Priority distribution | low > 80 %, medium < 15 %, high < 5 %, highest < 1 % |
| Unauthorised suppressions / attribute changes | 0 |
Priority categories 0–15 are not fixed to an importance; `alm.sup` `HIGHEST_PRIO` decides which
end is most important (L15 summary §6).
Not practiced: the ASPA GUI (needs a logged-on user session and meaningful alarm history; the
test system has only a few sample alarms).

View file

@ -0,0 +1,195 @@
---
manual: IM 36K10L15-01EN
title: Alarm Management Engineering
edition: 3rd Edition, Sep. 2023
version: R1.03
status: verified for item-based alarms (acknowledgement type, AOI, ASA, ALARMING, alarm events, acknowledge, almdbg/alhdbg) on CI-Eng-Sample 2026-10-01; first-out, collections, notifications, shelving, acoustic/count destinations from docs; setup files checked read-only
---
# Alarm Management Engineering (R1.03)
ALARM Service turns item status changes (and external alarms, informational events) into
**alarm events**, distributes them to **destinations** and stores them. Section numbers refer to
the manual. Engineering Module forms for the same functions: `IM36K10C20-01EN.md`.
## 1. Processes (§1)
| Process | Role | Started by default |
|---|---|---|
| `ALM` | Alarm kernel: receives item-based events from ITEM Service and non-item-based events from applications, builds alarm events, sends them to destinations | yes |
| `ALH` | Alarm storage: current alarms (time and priority) and chronological history in storage group **`ALH`** | yes |
| `ALDPRT` | Printer destination: formats alarm lines for UMH, stderr or a printer | yes |
| `ALMUPD` | Recovery process (sends *Start recovery session* to ALM) | — |
| `ALNMGR`, `ALNSMTP`, `ALNSMS` | Notification manager, e-mail, SMS | `ALNMGR`, `ALNSMTP` yes |
| `ASBMAN` | Alarm shelving | yes |
| `ALDCNT` | Count destination (counts events into an item) | no (`alarm_start.cmd`, commented) |
| `ALDACO` | Acoustic destination (WAV or command) | no (`integration_start`) |
| `ALHCUR`, `ALHCHR` | Split current / history storage (ALH becomes a router) | no |
Blocks: ALM (kernel), ALH (storage), ALD (destinations), ALC (alarm selection areas).
Installed `alarm_start.cmd` starts `alm`, `alh`, `aldprt`, `alnmgr`, `alnsmtp`, `asbman`.
**Verified:** `almdbg` option 1 lists the connected destinations `ALH`, `OPXUAS` (OPC UA server
A&C), `ALNMGR`, `ALDPRT`.
## 2. Alarm sources and states (§2.1)
- **Item-based**: ITEM Service compares the value with the limits and sets the item status
(LOW LOW < low-low limit ≤ LOW < low limit ≤ NORMAL ≤ high limit < HIGH ≤ high-high limit <
HIGH HIGH). Each item status maps to one of four **alarm states**: Normal (N), Alarm 1–3
(A1–A3). The mapping is system-wide in `STATUS_DF` (`ALARM_STATE`, `ALARM_PRIO`, colour,
mnemonic, shelve flag) and can be overridden per item (up to 6 statuses, `ITEM_DF`
`ITEM_STAT_n`, `ALARM_STATE_n`, `PRIORITY_n`, `ALARM_TEXT_n`, …).
Installed `STATUS_DF`: NORMAL 9 → Normal/prio 15, HIGH 10 → Alarm 2/prio 2, HIGH HIGH 11 →
Alarm 3/prio 1 (140 statuses).
- Every status change is an alarm state transition, even when old and new state are equal
(e.g. LOW → HIGH, both A2).
- **External alarms**: OPC A&E (mapped to items, uses force to alarm/normal) and OPC UA A&C
(EAL definitions) — see C20 summary part B and `IM36K10L45-01EN.md`.
- **Informational events**: from equipment data sources (OPC UA/A&E clients, STARDOM) or
applications; shown only in history.
## 3. Alarm event types (§2.2)
ALARM, NORMAL, DIRECT, DELAY, REPEAT, ACKNOWLEDGE, INFORMATIONAL, DEACTIVATE, RECOVERY,
DIAGNOSTIC, QUALITY, PRIORITY, FIRSTUP. External OPC UA alarms never get RECOVERY.
**Verified** (dataset `ALARM_CHRONO`, column `EVENT_TYPE`): switching on `ALARMING` gave a
`NORMAL` event; 44.4 → 85 gave `ALARM` (HIGH, Normal → Alarm 2, prio 2, `ACK` 0); acknowledging
gave two `ACKNOW` records (the second carries the node name: `ACK_INFO` is set in `alm.sup`);
85 → 50 gave `NORMAL`.
## 4. Kernel mechanisms (§2.3)
| Mechanism | Behaviour | External alarms |
|---|---|---|
| Delay (item `DELAY`, s) | N → Ax gives DIRECT, timer starts; at expiry DELAY (with the latest state). Back to N during the delay: NORMAL, no DELAY. Another Ax during the delay: DIRECT, timer keeps running. No delay if the previous Normal was not acknowledged | yes |
| Repeat (item `REPEAT`, s) | ALARM, then REPEAT every period while in alarm; a new alarm state restarts the timer | yes |
| First-out (§2.3.3) | Group of first-out items and continuation items. While a first-out item is in alarm (*internal-active*), new continuation alarms give only DIRECT; when the group goes inactive (after the optional internal delay) still-standing continuation alarms give ALARM. Parent groups make child groups *external-active* (all new alarms DIRECT) with an external delay | yes |
| Acknowledgement (§2.3.4) | Acknowledgement matrix per **acknowledgement type**: for each (old state, old Ack/Nack) → new state, automatic or manual. Manual ack by an operator gives an ACKNOWLEDGE event; automatic ack gives none | yes (Inactive/Active matrix) |
| Change priority (§2.3.5) | `alm.sup` `PRIORITY = <old>,<seconds>,<new>`: an unacknowledged alarm of priority *old* gets a PRIORITY event with *new* after the time; chains (max 16 useful) | — |
| Force to normal / to alarm (§2.3.6–7) | Engineering Module *Update value* check boxes (authorised users); option bit, `itm_set_gen()` from programs; also for EALs after a long OPC UA disconnection | yes |
| Force an event (§2.3.8) | Criteria mask `ITM_CRI_EVENT`: event without state change | — |
Precedence (§2.3.9): delay → first-out → repeat → change priority (repeat and change priority
start together, after the ALARM).
Special events (§2.4): DEACTIVATE when alarming is switched off (or an EAL deleted) — the alarm
leaves the current overview; RECOVERY from the recovery process; DIAGNOSTIC for items marked
diagnostic; QUALITY when only the quality changed (needs `QUALITY_CODE` in `alm.sup`).
Recovery (§2.5): after queue overflows ALM sends RECOVERY events for every item in sets
(`REC_ITM`, default 25, `REC_WAIT` 500 ms, `REC_CYCL` 1). External alarms are refreshed by the
OPC UA client with *ConditionRefresh* (at connect, reconnect, redundancy switch, or *On scan*).
## 5. Acknowledgement types (dataset `ALARM_ACK_DF`)
Fields `<from><A|N>_<to>`: from state `N`, `A1`, `A2`, `A3`; `A` = was acknowledged, `N` = was
not; to state `N`, `A1`, `A2`, `A3`. Value 1 = automatic, 0 = manual (operator). 32 fields;
`EAL_ACK` 1 = external-alarm type (8 fields used). Name and the external flag cannot be changed
later; a type in use cannot be deleted (verified: `DSSP-E-NODEL … By <item> in dataset ITEM_DF`).
Items with no type behave like `AUTOMATIC`; EALs with none use `FULLMANUAL_EAL`.
Installed types: `AUTOMATIC` (all 1), `MANUAL` (only `NA_N`, `NN_N`, `A1A_N`, `A2A_N`, `A3A_N`
= 1), `FULLMANUAL` (all 0) and the `_EAL` variants (`AUTOMATIC_EAL`, `MANUAL_EAL`,
`FULLMANUAL_EAL`). `almdbg` 9/10 lists the types by number and prints the matrix.
**Verified with `CIENG_ACK` (same matrix as MANUAL):** HIGH alarm came in unacknowledged;
acknowledged, then back to normal → automatically acknowledged, gone from `ALARM_CURRENT`.
HIGH HIGH back to normal *without* acknowledgement → stayed in `ALARM_CURRENT` (NORMAL, `ACK` 0)
until acknowledged.
## 6. Kernel setup file `alm.sup` (§2.6)
`QUESIZE` (KB, default 25000), `PRIO_ACK_ABS` / `PRIO_ACK_REL` (priority after ack),
`ACK_INFO` (send node/terminal/user with acknowledgements), `QUALITY_CODE`, `PRIORITY` (change
priority list), `SUPPR_ACK_CHG`, `SYNC_COMM` (async DUR to destinations), `SYNC_MSG`,
`PRESERVE_PRIO`, `HIGHEST_PRIO` (15 or 0 = most important), recovery tab `REC_CYCL`, `REC_ITM`,
`REC_WAIT`, `RECOVER_ALL`, `RECOVER_QUEUE`.
**Installed:** `SYNC_COMM N`, `SYNC_MSG N`, `QUESIZE 25000`, `RECOVER_QUEUE Y`, `ACK_INFO`.
## 7. Storage process (§3)
- Three storage classes: current by time, current by priority, chronological (`CURT`, `CURP`,
`CHR` in `alh.sup`; all on by default). Current alarms live in memory unless `MEM-WRT` is
off; history is always on disk.
- `alh.sup`: `FPATH`, `ALM-PROC`, `DEF-WRT` (VMS only), `MEM-WRT`, `QUESIZE` (8000 KB),
`MAX-OPEN-UNITS` (2–100, default 5), `MAX-SEARCH` (s per history search, default 5),
`RECOVER_QUEUE`.
- Multi-process: copy `arh.sup` to `alhchr.sup` / `alhcur.sup`, uncomment their lines in
`alarm_start.cmd`; the router `alh.sup` then holds only `QUESIZE`.
- **Installed `alh.sup`**: `CURP`, `CURT`, `CHR`, `QUESIZE 8000`, `MAX-SEARCH 5`,
`RECOVER_QUEUE Y`, plus `DB-JRNL = WAL` and `DB-SYNC = OFF`, not in the manual (ISS-036).
- Datasets: `ALARM_CURRENT` (standing and unacknowledged alarms), `ALARM_CHRONO` (history; not
exported unless named, filter with `@SELECT`). External alarm definitions are in
`EXTERNAL_ALARM_DF`; `ALARM_EXT_CURR` is only a default report name, not a dataset.
- **Installed storage group `ALH`** (`HIS_GROUP_DF`): type Alarm, rollover 1 day, lifetime
**52 weeks** (the C20 manual gives 2 days as the default; ISS-036).
## 8. Destination processes (§4)
- Each destination registers with ALM giving the event types it wants (`EVENTS = direct,
alarm, repeat, ackn, info, deact, recov, diag, qual, prio, firstup`; ALARM includes DELAY and
NORMAL) and/or an alarm selection area (`DEST-ASA`); not both.
- Alarm line (`FORMAT = <unit>,<length>,…`): `ACKN`, `NAM1`–`NAM4`, `SECTION`, `NAME`, `PRIO`,
`TYPE`, time formats `TANS/TEUR/TGEN/TDEF/TJUL/TFMT` (and `ST…` for the original timestamp),
`TEXT`, `NWLN`, `SPAC`, `VAL` (`VAL-PREC`), `QC_DEC`, `QC_HEX`, `ITM_DESC`, `ENG_UNIT`, OPC
fields `EVT_CAT`, `SOURCE`, `COND`, `SUBC`, `ACTOR_ID` and combined `C_…` variants. `TIMEFMT`
picture string (installed keyword name; the manual also writes `TIMFMT`).
- **`ALDPRT`** (setup file = process name): `LOGUMH` / `LOGSCN` / `LOGPRT` (+ `PRTDEV` or
`PRTQUE`, `PRTBUF`), `HEADER … HEADEREND`, `DEST-TYPE`, `ALDMAN`, `PRIO-DEST`. With no log
destination set it logs via UMH. **Installed:** `FORMAT prio,2,spac,1,type,6,tdef,18,name,40,
text,10`, `EVENTS repeat,info,ackn,alarm,prio,firstup`, header every 10 lines. On the test
system ALDPRT received the events (`almdbg` counter) but no alarm line appeared in
`umhlog.log` (ISS-035).
- **`ALDCNT`**: counts events into `ITEM-NAME` (required), wraps at `MAX-COUNT` (1500); not the
number of standing alarms. Installed file has the placeholder item.
- **`ALDACO`**: `PLAY` (WAV, Windows, needs a logged-in user) or `COMMAND`, `SILENCE =
<item>,<ms>` repeats until the item is NORMAL, `DEF-NODE`, `QUE-SIZE` (30 KB). One process per
sound (e.g. `-n aco_p1` with `aco_p1.sup`, each with its own ASA). On a CI Portal prefer the
graphic alarm sound component.
- Setup files of alarm displays are read each time a display opens; removing comments speeds
this up (keep a backup).
## 9. Debuggers (§6)
`almdbg` (menu, `-1` exit; answers can be piped):
| No. | Action | Notes |
|---|---|---|
| 1 / 2 / 3 | Destinations / detail / disconnect | read-only except 3 |
| 5–8, 27, 28 | First-out groups, children, first-out and continuation items/EALs | read-only |
| 9 / 10 | Acknowledgement types / matrix of one type number | read-only |
| 11 | Repeat/delay list | read-only |
| 12 | Statistics (events received/sent, list sizes) | read-only |
| 13 | Item recovery | |
| 14 | Item alarm parameters (by name): monitoring, ack type number, collection, first-out, repeat, delay | read-only |
| 15 | Preset an item status | changes data |
| 16 | Generate non-item-based (INFO) event: timestamp, ms, priority, name, status text, description | 6 prompts; history only |
| 17, 19, 20 | Stop ALM / ALH / ALDPRT | never without approval |
| 22 | Diagnostic message for an item or EAL | |
| 23–26 | Collections: list, detail, reset, acknowledge | |
`alhdbg`: 1 storage groups (verified: group 3, unit 80, current cell start), 2 units of a
group, 3 force connect to kernel, 4 tidy stop (never without approval).
Piping `-1` at the end makes DURTIM log `Process ALMDBG_<pid> exited unexpectedly` — harmless.
## 10. Notifications and shelving (§7, §8)
- `alnmgr.sup`: `EVENTS` (alarm, firstup), `ALM-PROC`, `QUE-SIZE` (500 KB), `DBG-LEVEL`,
`MAX-LOG`, `MAX-LIFE-TIME`, `MAX-CLEAR-TIME`, `ACK_STOPS_REPEAT`, `INT-QUE-SIZE` (1000).
- `alnsmtp.sup`: `SMTP_SRV` (installed `localhost, 25`), `FROM_ADDRESS`
(`admin@localhost.com`), `SMTP_TIMEOUT` 10, `EMAILS_PER_CONN` 1, `SMTP_INACTIVE`,
`D_LEVEL`, `MAX_LOG`, `SUBJ_FORMAT` / `BODY_FORMAT` (+ `…_TIMEFMT`), `VAL-PREC`,
`ALARM_PREFIX [ALARM]`, `CLEAR_PREFIX [CLEAR]`, `SUFFIX`. Only SMTP servers without
authentication or encryption.
- `alnsms.sup`: `SMS_PORT` (installed `COM1:`), AT-command modem, serial line settings.
- `asbman.sup`: `QUE-SIZE` 500, `TICKER_INTERVAL` 2 s, `SYS_WIDE_SHELF` (installed `N`:
shelving kept per CI View) with optional count items, `DEBUG_ON`. Same setting on every node.
In enterprise mode use the alarm overview *Location* column.
- Known issue (IM 36K01A50 §1.6): shelving more than ~500 alarms can overflow the DURM queue.
Not practiced: notifications (no SMTP server), shelving (needs a CI View display), acoustic and
count destinations, split storage processes.

View file

@ -48,9 +48,9 @@ AID is not needed.
| 7 | IM 36K10L30 | BUS Service | done for single-node checks; MDUR, encryption, logical addresses, printer devices from docs ([notes](manuals/IM36K10L30-01EN.md)); task `system-management/bus-utilities.md` | | 7 | IM 36K10L30 | BUS Service | done for single-node checks; MDUR, encryption, logical addresses, printer devices from docs ([notes](manuals/IM36K10L30-01EN.md)); task `system-management/bus-utilities.md` |
| 7 | IM 36K10L45 | Data Access Engineering | done for OPC UA client/server (loopback); OPC DA/A&E from docs (DA loopback not allowed); ODBC not running (ISS-008) ([notes](manuals/IM36K10L45-01EN.md)); skill `data-access` | | 7 | IM 36K10L45 | Data Access Engineering | done for OPC UA client/server (loopback); OPC DA/A&E from docs (DA loopback not allowed); ODBC not running (ISS-008) ([notes](manuals/IM36K10L45-01EN.md)); skill `data-access` |
| 7 | IM 36K10E20 | OPC Interface | summarized; OPC UA point form compared with quick load by the user ([notes](manuals/IM36K10E20-01EN.md)) | | 7 | IM 36K10E20 | OPC Interface | summarized; OPC UA point form compared with quick load by the user ([notes](manuals/IM36K10E20-01EN.md)) |
| 8 | IM 36K10L15 | Alarm Management Engineering | not started | | 8 | IM 36K10L15 | Alarm Management Engineering | done for item-based alarms (ack type, AOI, ASA, events, acknowledge, delay/repeat, `almdbg`/`alhdbg`); first-out, collections, notifications, shelving, acoustic/count destinations from docs ([notes](manuals/IM36K10L15-01EN.md)); skill `alarm-management` |
| 8 | IM 36K10C20 | Engineering Module - Alarms | not started | | 8 | IM 36K10C20 | Engineering Module - Alarms | done by quick load for item alarm fields, ack types, AOI, ASA; forms, overviews, shelving, link display, notifications, external/Vnet alarms from docs ([notes](manuals/IM36K10C20-01EN.md)) |
| 8 | IM 36K10E30 | Alarm System Performance Analysis | not started | | 8 | IM 36K10E30 | Alarm System Performance Analysis | summarized, from docs (ASPA GUI not practiced; launcher and fetch limits checked) ([notes](manuals/IM36K10E30-01EN.md)) |
| 9 | IM 36K10L20 | History Management Engineering | not started | | 9 | IM 36K10L20 | History Management Engineering | not started |
| 9 | IM 36K10C40 | Engineering Module - Historical | not started | | 9 | IM 36K10C40 | Engineering Module - Historical | not started |
| 10 | IM 36K10R30 | Graphic Display Setup | not started | | 10 | IM 36K10R30 | Graphic Display Setup | not started |
@ -109,7 +109,7 @@ now come before classes and objects (phase 6), and the other interfaces follow a
| C10 | Integrator time unit: integration granule `itm_int_secs` in `itm.sup` ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | 60 → `RUN_SECONDS` +1 per minute; restored to 1 (file identical to backup), +1 per second again ([ISS-010](issues.md)). Elevated restarts run by the user. | | C10 | Integrator time unit: integration granule `itm_int_secs` in `itm.sup` ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | 60 → `RUN_SECONDS` +1 per minute; restored to 1 (file identical to backup), +1 per second again ([ISS-010](issues.md)). Elevated restarts run by the user. |
| 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. |
| L41/C10 | Modbus TCP line, station, scan type, points, connected items by quick load ([task](../.claude/skills/equipment/tasks/modbus-station.md)) | passed | passed | Loopback to CI Server's own Modbus slave (`eqpmdcmem` + `eqpmdcslvtcp` on 5020, started by hand). Line load created and started `EQPCIENG`; removal stopped it and deleted its files. Write/read-back, off-scan/on-scan checked; full remove/reload from sample files. Protocol must be Open Modbus/TCP ([ISS-024](issues.md)). Mirror start files copied to `tls\com` by the user; after a restart everything came back under the CI Service and the setpoint was re-sent on connect. | | L41/C10 | Modbus TCP line, station, scan type, points, connected items by quick load ([task](../.claude/skills/equipment/tasks/modbus-station.md)) | passed | passed | Loopback to CI Server's own Modbus slave (`eqpmdcmem` + `eqpmdcslvtcp` on 5020, started by hand). Line load created and started `EQPCIENG`; removal stopped it and deleted its files. Write/read-back, off-scan/on-scan checked; full remove/reload from sample files. Protocol must be Open Modbus/TCP ([ISS-024](issues.md)). Mirror start files copied to `tls\com` by the user; after a restart everything came back under the CI Service and the setpoint was re-sent on connect. |
| G10 | Alarms, reports, audit, RDBMS, history | not practiced | pending | Covered in their own phases (7–12). | | G10 | Alarms, reports, audit, RDBMS, history | alarms done (phase 8); others not practiced | alarms added | Covered in their own phases (7–12). |
| R10/R20 | Read a setup file: active settings and keyword help ([task](../.claude/skills/portal-setup/tasks/read-setup-file.md)) | passed | n/a | Read-only. Compared with the Setup File Editor GUI for `wfla_display.sup`, `wflgdi.sup` and all 9 tabs of `jwuiisg.sup`: fields and values identical. Manual differences logged as ISS-012 to ISS-017 (installed software taken as the reference). | | R10/R20 | Read a setup file: active settings and keyword help ([task](../.claude/skills/portal-setup/tasks/read-setup-file.md)) | passed | n/a | Read-only. Compared with the Setup File Editor GUI for `wfla_display.sup`, `wflgdi.sup` and all 9 tabs of `jwuiisg.sup`: fields and values identical. Manual differences logged as ISS-012 to ISS-017 (installed software taken as the reference). |
| R10 | Check web access for CI View: ports, Remote Connect page, `DEPLOY` folder ([task](../.claude/skills/portal-setup/tasks/check-web-access.md)) | passed | n/a | 8080/8443 listening, page 200, six `DEPLOY` folders. | | R10 | Check web access for CI View: ports, Remote Connect page, `DEPLOY` folder ([task](../.claude/skills/portal-setup/tasks/check-web-access.md)) | passed | n/a | 8080/8443 listening, page 200, six `DEPLOY` folders. |
| R10/R20 | Change a setup file safely ([task](../.claude/skills/portal-setup/tasks/change-setup-file.md)) | passed | n/a | `jwuiisg.sup` HTTP port 8080 → 8081 (text edit, elevated restart): 8081 served the page, 8080 refused; restored, hash identical to backup. Editor: *OK* writes at once, *Reset Field* restores the default (ISS-016). | | R10/R20 | Change a setup file safely ([task](../.claude/skills/portal-setup/tasks/change-setup-file.md)) | passed | n/a | `jwuiisg.sup` HTTP port 8080 → 8081 (text edit, elevated restart): 8081 served the page, 8080 refused; restored, hash identical to backup. Editor: *OK* writes at once, *Reset Field* restores the default (ISS-016). |
@ -120,3 +120,9 @@ now come before classes and objects (phase 6), and the other interfaces follow a
| L30 | BUS utilities: `durwfp`, setup files (`dur.sup`, `durm_1_udp.sup`, `time_table.sup`, `fmfprt.sup`) ([task](../.claude/skills/system-management/tasks/bus-utilities.md)) | passed (read-only) | n/a | `umhman`, `umhtestprog`, `umhmsg` fail (ISS-030). Unlicensed run-time limit hit and documented (ISS-031). | | L30 | BUS utilities: `durwfp`, setup files (`dur.sup`, `durm_1_udp.sup`, `time_table.sup`, `fmfprt.sup`) ([task](../.claude/skills/system-management/tasks/bus-utilities.md)) | passed (read-only) | n/a | `umhman`, `umhtestprog`, `umhmsg` fail (ISS-030). Unlicensed run-time limit hit and documented (ISS-031). |
| L30 | MDUR node links, encryption, logical addresses, printer devices | not practiced | n/a | Single node, no printer devices. | | L30 | MDUR node links, encryption, logical addresses, printer devices | not practiced | n/a | Single node, no printer devices. |
| L55 | CI Exchange for CENTUM VP / Prodigy | not practiced | n/a | Needs CENTUM VP (RGS, Vnet/IP) or Prodigy data. | | L55 | CI Exchange for CENTUM VP / Prodigy | not practiced | n/a | Needs CENTUM VP (RGS, Vnet/IP) or Prodigy data. |
| L15/C20 | Acknowledgement type, area of interest, alarm selection area by quick load; ASA compile check ([task](../.claude/skills/alarm-management/tasks/alarm-definitions.md)) | passed | passed | `CIENG_ACK` (MANUAL matrix), `CIENG_TANKS`, `CIENG_TANK1` compiled valid. Description > 78 characters refused; an ASA without spaces is stored with `VALID_EXPRESSION` 0; an ack type in use cannot be deleted. |
| L15/C20 | Item alarming, test alarm, `ALARM_CURRENT` / `ALARM_CHRONO`, acknowledge via `dssqld -m` on `ALARM_CURRENT`, delay and repeat ([task](../.claude/skills/alarm-management/tasks/item-alarming.md)) | passed | passed | `TANK1.LEVEL` 85 → HIGH (Alarm 2, prio 2), 95 → HIGH HIGH; acknowledged by `NAME`/`ACK`; acknowledged return to normal cleared, unacknowledged one stayed; DELAY 5 s / REPEAT 10 s events as documented. Changing alarm fields auto-acknowledges a pending return to normal. No `ALDPRT` lines in `umhlog.log` (ISS-035). Full remove/reload clean. |
| L15 | ALARM Service read-only checks: processes, setup files, `almdbg` 1/9/10/12/14, `alhdbg` 1, `ALH` storage group; INFO event with `almdbg` 16 ([task](../.claude/skills/alarm-management/tasks/alarm-checks.md)) | passed | n/a | Destinations ALH, OPXUAS, ALNMGR, ALDPRT. `alh.sup` extra keywords, `ALH` lifetime 52 weeks (ISS-036). INFO event stored; some text columns hold leftovers (ISS-037). Two extra INFO events named `name` were created by a probe with default answers. |
| L15/C20 | First-out groups, alarm collections, shelving, link display, notifications, acoustic/count destinations | not practiced | n/a | Need displays (phase 10), a second alarm item design, an SMTP server or a logged-in sound session. |
| C20 | External alarms (EAL) from OPC UA A&C servers and CENTUM VP | not practiced | n/a | No A&C source or Vnet/IP on the test system. |
| E30 | Alarm System Performance Analysis (ASPA) | not practiced | n/a | GUI; the test system has too little alarm history for meaningful KPIs. |