Section: alg.Alarm
The section SEC alg.Alarm
describes a module alarm. A module alarm essentially corresponds to an alarm of the CODESYS alarm management that has been configured in an alarm group. However, a module alarm still contains module-specific additions.
For more information, see the Module Declaration chapter and Object: Alarm Group
Specification
SEC alg.Alarm //optional: yes, modifier: [UPDATE] SEC SetAlarm <alarm identifier> //optional: yes, modifier [UPDATE] Class := <class name>; //optional: no, type: ID Message := <TextlistEntry>; //optional: no, type: TextListEntry LatchVar1 := <LatchVariable1>; //optional: yes, type: InstancePath LatchVar2 := <LatchVariable2>; //optional: yes, type: InstancePath Deactivation := <DeactivationVariable>; //optional: yes, type: InstancePath PendingTime := <PendingTime>; //optional: yes, type: LiteralOrConstant PendingTimeParameter := <string> //optional: no, type: literal/string HigherPrioAlarm := <HigherPrioAlarm_ID>; //optional: yes, type: ID ModuleCalls := <ModuleCallFlags>; //optional: yes, type: ModuleCallFlag SEC Messages : <alarm identifier> //optional: yes, modifier: [UPDATE] Message := <TextlistEntry>; //optional: no, type: TextListEntry Number := <ColumnNumber>; //optional: no, type: Literal END_SEC SEC LatchVar <latch var identifier> //optional: yes, modifier [UPDATE] LatchVar := <LatchVariable>; //optional: no, type: InstancePath Number := <LatchVarNumber> //optional: no, type: LiteralOrConstant END_SEC SEC UpperLimit //optional: yes, modifier: [UPDATE] Expression := <Expression>; //optional: no, type: Literal/String IncludeBorder := TRUE/FALSE; //optional: no, type: FlagBool UpperExpression := <UpperExpression>; //optional: no, type: Literal/String Hyteresis := <HysteresisValue>; //optional: yes, type: LiteralOrConstant END_SEC SEC LowerLimit //optional: yes, modifier: [UPDATE] Expression := <Expression>; //optional: no, type: Literal/String IncludeBorder := TRUE/FALSE; //optional: no, type: FlagBool LowerExpression := <LowerExpression>; //optional: no, type: Literal/String Hyteresis := <HysteresisValue>; //optional: yes, type: LiteralOrConstant END_SEC SEC InsideRange //optional: yes, modifier: [UPDATE] Expression := <Expression>; //optional: no, type: Literal/String AreaLow := <AreaLowValue>; //optional: no, type: Literal/String LowIncludeBorder := TRUE/FALSE; //optional: no, type: FlagBool HighIncludeBorder := TRUE/FALSE; //optional: no, type: FlagBool AreaHigh := <AreaHighValue>; //optional: no, type: Literal/String Hyteresis := <HysteresisValue>; //optional: yes, type: LiteralOrConstant END_SEC SEC OutsideRange //optional: yes, modifier: [UPDATE] Expression := <Expression>; //optional: no, type: Literal/String AreaLow := <AreaLowValue>; //optional: no, type: Literal/String LowIncludeBorder := TRUE/FALSE; //optional: no, type: FlagBool HighIncludeBorder := TRUE/FALSE; //optional: no, type: FlagBool AreaHigh := <AreaHighValue>; //optional: no, type: Literal/String Hyteresis := <HysteresisValue>; //optional: yes, type: LiteralOrConstant END_SEC SEC Digital //optional: yes, modifier: [UPDATE] Expression := <Expression>; //optional: no, type: Literal/String Equal := TRUE/FALSE; //optional: no, type: FlagBool EqualsExpression := <Expression>; //optional: no, type: Literal/String END_SEC SEC Change //optional: yes, modifier: [UPDATE] Expression := <Expression>; //optional: no, type: Literal/String END_SEC SEC Event //optional: yes, modifier: [UPDATE] END_SEC END_SEC END_SEC
| The subsections of |
| Alarm class name, under which the alarm will be created. If this alarm class already exists in the application, the alarm will be created under this class. If this class does not exist, an alarm class template object is searched for, which must be present in the POUs view. If no appropriate alarm class template object is found, an error is issued when the module is scanned. |
| ID (of the form The message referenced by the ID can contain the same placeholders as the text in an alarm configuration. For example placeholders such as If a specified text list entry cannot be found, a warning is issued during the scan. Corresponds to the Message setting in the Alarm Group object. |
| Placeholder variables In the present case of module-specific alarms, variables can only be specified directly from the module function block (just like variables are specified in the module declaration for e.g. parameters) Corresponds to the settings Latch variable 1 / Latch variable 2 for placeholders |
| Deactivation variable (
If the type of the variable that is entered is not Corresponds to the Deactivation setting in the Alarm Group object. |
| Minimal pending time. Defines the amount of time before the alarm actually goes off after reaching its limits. Example: Corresponds to the setting Min. pending time in the Alarm Group object. |
| Parameter to set the minimum pending time The value which is assigned to the parameter is a string that can be interpreted as time. Or also as an expression which consists of module parameters and time literals. . Example:
|
| ID of the higher priority alarms To identify the alarm under which the present alarm should be classified, a target ID of a Corresponds to the setting Higher prio. alarm in the Alarm Group object. |
| For module-specific alarm management, module FBs can offer specific interfaces that can be called if an module alarm occurs. The flags define in which cases this will happen. . Available ModuleCallFlags :
Module FBs that will be called by this flag must implement the If the |
| The subsection manage the same task as the
|
| Latch variables. Up to 10 latch variables can be defined in this section. If, in addition to this section,
|
| Alarm conditions for alarms that trigger if upper or lower boundaries are crossed. The section is allowed to occur only once below the
Corresponds to the settings Upper limit / Lower limit for the observation types in the Alarm group object. |
| Alarm conditions for alarms that trigger if an expression is in- or outside of a certain range of values. The section is allowed to occur only once below the
Corresponds to the settings Inside range / Outside range for the observation types in the Alarm group object. |
| Alarm which is raised if two expressions are compared with one another. The section is allowed to occur only once below the
Corresponds to the observation type Digital in the Alarm Group object. |
| Alarm which is raised if an expression changes its value. The section is allowed to occur only once below the
Corresponds to the observation type Change in the Alarm Group object. |
| Determines that the current alarm section creates an event alarm. This alarm can be triggered by the function |
Example
SEC SetAlarm : ValueRange Class := Error; Message := TL.Alarm_Temperature; LatchVar1 := rAlarmValueLow; LatchVar2 := rAlarmValueHigh; ModuleCalls := THIS | PARENTS; SEC Messages : msg2 Message := TL.msg5_Message; Number := 5; END_SEC SEC OutsideRange Expression := 'rValue'; AreaLow := 'rAlarmValueLow'; LowIncludeBorder := TRUE; HighIncludeBorder := TRUE; AreaHigh := 'rAlarmValueHigh'; END_SEC END_SEC
PendingTime
SEC alg.Alarm SEC SetAlarm : NoVar Class := AlarmClassTemplate; Message := TL.NoVar_Message; PendingTimeParameter := 'NoVar'; SEC Digital Expression := 'xAlarm'; Equal := TRUE; EqualsExpression :='TRUE'; END_SEC END_SEC SEC SetAlarm : WithVar Class := AlarmClassTemplate; Message := TL.NoVar_Message; PendingTimeParameter := 'WithVar'; SEC Digital Expression := 'xAlarm'; Equal := TRUE; EqualsExpression :='TRUE'; END_SEC END_SEC SEC SetAlarm : SimpleMath Class := AlarmClassTemplate; Message := TL.NoVar_Message; PendingTimeParameter := 'WithVar - NoVar + TIME#5S'; SEC Digital Expression := 'xAlarm'; Equal := TRUE; EqualsExpression :='TRUE'; END_SEC END_SEC SEC SetAlarm : NoParam Class := AlarmClassTemplate; Message := TL.NoVar_Message; PendingTime := TIME#5S; SEC Digital Expression := 'xAlarm'; Equal := TRUE; EqualsExpression :='TRUE'; END_SEC END_SEC END_SEC