Skip to content

Alarm Management

The alarm system detects abnormal values, records them, and reports them to the operator.

It works in two layers: an alarm group sets the behaviour shared by everything inside it — scan period, priority, colours, the scripts to run, printer settings — while the alarm definitions in that group describe the individual conditions. Each group belongs to a project.

ScreenWhat it does
Alarm GroupsDefines the group and the behaviour shared across it
Analog AlarmsThreshold alarms on numeric variables
Digital AlarmsState alarms on boolean variables
Custom AlarmsConditions written as an expression

Alarms that have fired are followed at runtime: the Alarm Monitor shows the current state, Alarm History the past records.

Every alarm definition is one of three types:

TypeWatchesFires when
AnalogA numeric variableThe value crosses a threshold (High-High / High / Low / Low-Low)
DigitalOne or two boolean variablesThe evaluated result becomes true (AND/OR and inversion supported)
CustomAnythingThe expression you write returns a truthy value

All three types carry these; the type-specific fields are covered on their own pages.

FieldTypeDescription
nameString (≤100)Alarm name — unique within the project
dscString (≤255)Description
groupIdStringThe alarm group it belongs to
delayInteger (ms, ≥0)How long the condition must hold before firing (debounce)
isActiveBooleanWhether this definition is active
partString (≤100)Equipment / line code — used in reporting and filtering
onTimeVariableIdStringVariable the firing time is taken from (optional)
offTimeVariableIdStringVariable the clearing time is taken from (optional)

onTimeVariableId and offTimeVariableId decide where the alarm’s timestamp comes from. Left empty, the alarm is stamped with the moment the system noticed the condition.

Given a variable, the system reads that variable’s last value as epoch milliseconds and uses it as the alarm’s time. The stamp then reflects what the field reported rather than what the SCADA observed.

The reason is the scan period: if the alarm group evaluates once a second, the moment the system sees can be up to a second later than the event itself. A PLC that stamps the event with its own clock is far more precise. Where the order of a fault matters — which protection tripped first, which signal arrived first — that difference decides the answer.

An alarm’s actual state has two values:

ON (fired) → OFF (cleared)

Acknowledging, commenting and forcing off are not part of that state — they are operator records kept in separate fields:

Field / actionDescription
acknowledgeTime / acknowledgedByFilled when an operator acknowledges; the alarm may still be ON
commentTime / comment / commentedByFilled when an operator adds a comment
forceOff actionPulls the alarm to OFF even though the condition still holds
offTimeFilled when the condition clears on its own

The distinction shows in the colours: an alarm that is “ON and unacknowledged” is displayed differently from one that is “ON and acknowledged”. The colour mapping is defined on the group → Alarm Groups.

Alarms can also be queried and managed from a script — listing, querying by date range, acknowledging, commenting, enabling a group. Method inventory and examples: Alarm API →