4.3 KiB
| task | version | source | status |
|---|---|---|---|
| Switch on alarming for an item, test an alarm, read and acknowledge alarms | R1.03 | 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 | 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. KeyNAME="<DD-MON-YY hh:mm:ss.mmm>/<id>"; useful fieldsALARM_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).