From ba4ce20c62584f82e556297513dd168b088b2aa6 Mon Sep 17 00:00:00 2001 From: cliu Date: Thu, 1 Oct 2026 11:41:45 +1000 Subject: [PATCH] Add alarm manual summaries (L15, C20, E30) and alarm-management skill Co-Authored-By: Claude Opus 5.5 --- .claude/skills/alarm-management/SKILL.md | 48 +++++ .../alarm-management/tasks/alarm-checks.md | 65 ++++++ .../tasks/alarm-definitions.md | 103 +++++++++ .../alarm-management/tasks/item-alarming.md | 101 +++++++++ .claude/skills/item-engineering/SKILL.md | 1 + knowledge/manuals/IM36K10C20-01EN.md | 173 ++++++++++++++++ knowledge/manuals/IM36K10E30-01EN.md | 83 ++++++++ knowledge/manuals/IM36K10L15-01EN.md | 195 ++++++++++++++++++ 8 files changed, 769 insertions(+) create mode 100644 .claude/skills/alarm-management/SKILL.md create mode 100644 .claude/skills/alarm-management/tasks/alarm-checks.md create mode 100644 .claude/skills/alarm-management/tasks/alarm-definitions.md create mode 100644 .claude/skills/alarm-management/tasks/item-alarming.md create mode 100644 knowledge/manuals/IM36K10C20-01EN.md create mode 100644 knowledge/manuals/IM36K10E30-01EN.md create mode 100644 knowledge/manuals/IM36K10L15-01EN.md diff --git a/.claude/skills/alarm-management/SKILL.md b/.claude/skills/alarm-management/SKILL.md new file mode 100644 index 0000000..17e61f0 --- /dev/null +++ b/.claude/skills/alarm-management/SKILL.md @@ -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 | diff --git a/.claude/skills/alarm-management/tasks/alarm-checks.md b/.claude/skills/alarm-management/tasks/alarm-checks.md new file mode 100644 index 0000000..275bc0a --- /dev/null +++ b/.claude/skills/alarm-management/tasks/alarm-checks.md @@ -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 -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
.\n10\n\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_ 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
.\n\n\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. diff --git a/.claude/skills/alarm-management/tasks/alarm-definitions.md b/.claude/skills/alarm-management/tasks/alarm-definitions.md new file mode 100644 index 0000000..bb9b96e --- /dev/null +++ b/.claude/skills/alarm-management/tasks/alarm-definitions.md @@ -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 `); 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 +"","",0,1,1,1,1,1 +``` + +- Matrix field `_`: 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 in dataset ITEM_DF`. +- Check: `almdbg` 9 (numbers) and 10 (`` → matrix with A/M), see `alarm-checks.md`. + +## 2. Area of interest (`ALARM_AOI_DF`) + +``` +@FIELDS +NAME,DESCRIPTION + +@ALARM_AOI_DF +"","" +``` + +`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 +"","",1,\ +@" +/* comment */ +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 = ""' + @ALARM_ASA_DF + ``` + `dssqld -e .qli .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 +"" + +@ALARM_AOI_DF +"" + +@ALARM_ACK_DF +"" +``` + +`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. diff --git a/.claude/skills/alarm-management/tasks/item-alarming.md b/.claude/skills/alarm-management/tasks/item-alarming.md new file mode 100644 index 0000000..e1892c9 --- /dev/null +++ b/.claude/skills/alarm-management/tasks/item-alarming.md @@ -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 +"
.",1,"","" +``` + +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 → `
.` shows *Alarm monitoring: yes*, the ack type number, +repeat and delay (`alarm-checks.md`). + +## 2. Test an alarm (test items only) + +``` +itmval -g -n
. # note the value to restore +itmval -p -n
. -v +itmval -g -n
. # 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 .qli .qli -c`: + +``` +@SELECT +'ITEM_NAME = "
."' +@ALARM_CURRENT +``` + +- `ALARM_CURRENT`: standing alarms and unacknowledged returns to normal. Key `NAME` = + `"/"`; 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 = "
." and ALARM_TIME > "01-10-2026 11:00:00"'`. + +## 4. Acknowledge from a script + +``` +@FIELDS +NAME,ACK + +@ALARM_CURRENT +"",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). diff --git a/.claude/skills/item-engineering/SKILL.md b/.claude/skills/item-engineering/SKILL.md index 78628b3..2e578a5 100644 --- a/.claude/skills/item-engineering/SKILL.md +++ b/.claude/skills/item-engineering/SKILL.md @@ -24,3 +24,4 @@ Rules: | 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 | | 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 | diff --git a/knowledge/manuals/IM36K10C20-01EN.md b/knowledge/manuals/IM36K10C20-01EN.md new file mode 100644 index 0000000..ce4bd88 --- /dev/null +++ b/knowledge/manuals/IM36K10C20-01EN.md @@ -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`, `_` (e.g. `A2A_N`) — see L15 +summary §5. Acknowledge from a program or script: `dssqld -m` on `ALARM_CURRENT` with `NAME` +(the `