This section presents information about alarms and audit-trail.
The Alarm Module is a complete solution to manage real-time alarms, notification events and Audit-Trail information.
It includes the following functionalities:
Real-time Alarm States Processing
Alarm groups allow you to configure common settings for a collection of alarms. For example, if the alarms in the groups require Acknowledgement.
Also, the query real-time informational automatically consolidating the alarm in the group. For example, the Total Active alarms in the group. <<<< please, review this information >>>>
Adds more context information to the alarm, linking it to one Area in Tree structure.
The Hierarchical organization of the AlarmAreas allows to get information, filter or act, in all alarms of one area, or include its children alarms.
Any defined event that can create an alarm is an AlarmItem. For instance, if a Tag has the configuration to generate a HI alarm at 70, and a HiHi alarm at 90, we have two AlarmItems defined.
Each AlarmItem belongs to one AlarmGroup and one AlarmArea.
Pre-defined AlarmGroup intended to track system events and Operations actions aiming to create records for auditing log. For information on its configuration, go to the AuditTrail page.
The alarm events can be logged using the database connection defined at Edit → Datasets → Dos → AlarmHistorian.
Some settings affects the behavior all alarm and the execution of Alarm Module.
Those fields are located above the header on Edit → Alarms → Groups table.
Alarm Module Configuration Settings | |
---|---|
Setting Field | Description |
Initial disable time | Defined time for an alarm to be active after startup. This gives the system time to stabilize before any alarms can be triggered. |
Life Time | Number of days that will define the useful life of the information in this alarm. |
Log User Fullname | The user's entire name will be saved in an alarm historian. |
Ignore Alarms During TimeDeadband | Used in conjunction with "InitialDisableTime". After the "InitialDisableTime" time, if "Ignore Alarms During Time Deadband" is "true", then the alarm states will not be checked. |
Enable Limits by Shift | Used in conjunction with "CurrentShift". If "Enable Limits By Shift" is "true", then "CurrentShift" is used to check which of the limits of "AlarmItem:" should be used
|
The alarm database stores the events from the AlarmGroups and Audit Trail.
By default, it is mapped to a SQLlite database with name <project name>.tAlarm , defined at Edit → Datasets → Dos → AlarmHistorian.
You can change the Alarm Database to use any other SQL connection, following this steps:
There are 3 pre-defined AlarmGroups:
To configure alarm groups, you can customize the existing groups or add new ones.
Add new rows or edit the table, setting the desired values to the fields.
Alarm Group Configuration Properties | |
---|---|
Column / Field | Description |
Name | Enter a name for the alarm group. The system allows you to know if the name is not valid. |
AckRequired | If required, the alarm stays in the alarm list until someone acknowledges the alarm by double-clicking it in the application. |
ActiveTimeDeadband | Enter a time deadband that will create a delay after an alarm occurs. The alarm will trigger only have the deadband. |
AckTimeout | Defines a timeout for acknowledging the alarm. If the alarm is not acknowledged after the specified time, the alarm becomes active again. |
AutoAckTime | If the alarm is not acknowledged after the specified time, the system acknowledges the alarm. |
Sound | Select the sound that will play when the alarm occurs. |
Show | Select the list for the alarm to display in the alarm window in the application. |
LogEvents | Select when you want the alarm to be logged to the alarm historian:
|
Colors | Select the colors you want to use for each state:
|
NotificationMethod | Calls a Script → Class method that triggers a code when the alarm happens. |
Description | Enter a description of the alarm group. |
The definition of an AlarmItem has 3 mandatory fields: TagName, Condition and AlarmGroup.
That means, the Tag value that will be evaluated, the alarm condition to be verified, and if there is an alarm, which AlarmGroup will guide the tag processing behavior.
To create or modify AlarmItems:
Alarm Items Configuration Properties | |
---|---|
Column / Field | Description |
TagName | Enter a tag name or click "..." to select a tag. |
Condition | Select the condition you want to use for this alarm event (see the table below). |
Limit | Enter a value for the alarm limit to be used for the condition you selected. |
Deadband | Set the deadband, which represents the time that must pass after an alarm before a second alarm can be generated. |
Setpoint | Set a value or a tag that you want to compare other values to to determine if there is a deviation. |
SetpointDeadband | Set the deadband for the setpoint when compared with the deviation. |
Group | Select the alarm group that should control what happens when this alarm occurs. |
Area | Once created on Alarms → Areas, the areas will be displayed here and will be able to be chosen. |
Priority | Enter a priority value that controls where the alarm displays in the list. The higher the number, the higher the priority. You can use the same priority for more than one alarm event. Enter 0 (zero) for alarms to be at the end of the list. |
Message | Enter the text that displays in the alarm list. |
The conditions options are described in the following table:
Alarm Condition Configuration Options | |
---|---|
Field | Description |
Hi | Tag >= limit |
HiHi | Tag >= limit (when acknowledged, a Hi alarm is automatically acknowledged for the same Tag) |
Lo | Tag <= limit |
LoLo | Tag <= limit (when acknowledged, a Lo alarm is automatically acknowledged for the same Tag) |
RateOfChange | Tag rate of change >= limit |
DeviationMinor | Absolute value (tag - Setpoint) > limit |
DeviationMajor | Absolute value (tag - Setpoint) > limit |
Equal | Tag = limit |
GreaterThan | Tag > limit |
GreaterEqual | Tag >= limit |
LessThan | Tag < limit |
LessEqual | Tag <= limit |
Changed | Tag value changed |
ChangedUp | Tag value increased |
ChangedDown | Tag value decreased |
NotEqual | Tag different from limit |
The limit is a specific value on which the condition is based. The setpoint, if used, may be either a value or another tag. If you need to dynamic change the alarm limit, just use the Limit property of the alarm conditions. E.g.: Tag.<tag name>.Hi.Limit modifies the HI Limit condition for the tag. |
In order to a apply custom action using .NET scripts, subscribe to notifications of alarms and events.
These notifications are typically used to send SMS or email warnings, execute custom calculations, add custom notification messages or audio alarms, text-to-speech audio alarms, and to perform any kind of action defined by custom programming.
To subscribe to alarm events, create a method in any Script Class of type Server, with the following prototype:
void Notification(AlarmEventInfo[] info) |
Select the method in the Notification Method column on Edit → Alarms → Groups.
The name of the method can vary; The important is the expected parameters.
The AlarmEventInfo structure is defined in the namespace Alarm.
There are several methods for acknowledging alarms:
You can use the <Alarm.AckAll> property that acknowledges all active alarms.
The <Alarm.PriorityItem.UnAck> property allows the acknowledgment of the highest priority alarm configured in the "Priority" column on Edit → Alarms → Items if there is a pending ack alarm.
To acknowledge a specific alarm, use the <Alarm.Items.IDxx.Unack> property. To check the contents of the IDxx alarm columns, go to the alarm item and add the ID column (right-click in the table and select "ID").
To visualize alarms and events, you can use the built-in object in your displays or reports. See the Configuring an Alarm Window section for more information.
The Alarm namespace has the properties of the alarm server.
The Alarm.Group object has the list of all defined groups and their properties.
The Alarm.Item object has all alarm items and their properties.
The tag properties are connected with the alarm module. For example, tag.tagname.Hi: configuration and runtime status of the HI alarm. The naming of all tag properties follow this same method.
See Namespaces API for the complete programming reference on runtime objects.