Sektion: alg.Alarm
Die Sektion SEC alg.Alarm definiert einen Modulalarm. Ein Modulalarm entspricht im wesentlichen einem Alarm des CODESYS-Alarmmanagements, der in einer Alarmgruppe konfiguriert wurde. Ein Modulalarm enthält jedoch noch modulspezifische Zusätze.
Für weitere Informationen siehe Kapitel Syntax der Moduldeklaration und Objekt: Alarmgruppe
Spezifikation
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| 
 | Die Untersektionen von  | 
| 
 | Alarmklassenname, unter der der Alarm liegen wird. Wenn die Alarmklasse bereits in der Applikation vorhanden ist, wird der Alarm unter dieser Klasse automatisch angelegt. Wenn die Klasse nicht vorhanden ist, wird nach einem Alarmklassen-Template-Objekt gesucht, das in der Ansicht POUs liegen muss. Wenn kein entsprechendes Alarmklassen-Template-Objekt gefunden wird, wird beim Modul-Scan ein Fehler ausgegeben. | 
| 
 | ID (der Form  Die über die ID referenzierte Nachricht kann Platzhalter enthalten, so wie der Text in einer Alarmgruppenkonfiguration Platzhalter enthalten kann. Beispielsweise können Platzhalter wie etwa  Beim Scan wird eine Warnung ausgegeben, falls ein angegebener Textlisteneintrag nicht gefunden werden kann. Entspricht der Einstellung Nachricht im Objekt Alarmgruppe. | 
| 
 
 | Platzhaltervariablen Im vorliegenden Fall der modulespezifischen Alarme können hier nur Variablen direkt aus dem Modul-FB angegeben werden (genauso, wie Variablen für Parameter in der Moduldeklaration angegeben werden). Entspricht der Einstellung Latch-Variable 1 / Latch-Variable 2 für Platzhalter  | 
| 
 | Deaktivierungsvariable ( 
 Wenn eine Variable mit einem anderen Typ als  Entspricht der Einstellung Deaktivierung im Objekt Alarmgruppe‘. | 
| 
 | Minimale Anstehzeit. Gibt die Zeitspanne an, bevor der Alarm nach Erreichen seiner Grenzen tatsächlich auslöst. Beispiel:  Entspricht der Einstellung Min. Anstehzeit im Objekt Alarmgruppe. | 
| 
 | Parameter, um die minimale Anstehzeit einzustellen Der Wert, der dem Parameter zugewiesen wird, ist ein String, der als Zeit interpretiert werden kann. Oder auch als Ausdruck bestehend aus Modul-Parametern und Zeitliteralen. . Beispiel: 
 | 
| 
 | ID des höherprioren Alarms Um den Alarm zu identifizieren, unter dem der momentane Alarm eingeordnet wird, wird bei den vorliegenden Modulalarmen eine Target-ID einer  Entspricht der Einstellung Höherpriorer Alarm im Objekt Alarmgruppe. | 
| 
 | Für die modulspezifischen Alarmverwaltung können Modul-FBs spezifische Schnittstellen anbieten, die aufgerufen werden können, wenn ein Modulalarm auslöst. Die Flags legen fest, für welche Fälle dies geschehen wird. .  ModuleCallFlags, die zur Verfügung stehen:
 Module-FBs, die über dieses Flag aufgerufen werden, müssen die Schnittstelle  Wenn für ein Toplevel-Modul das Flag  | 
| 
 | Die Untersektion erfüllt die gleiche Aufgabe wie der Parameters  
 
 | 
| 
 | Latchvariablen. In dieser Sektion können bis zu 10 Latchvariablen definiert werden. Wenn zusätzlich zu dieser Sektion die Einträge  
 
 | 
| 
 
 | Gibt die Alarmbedingungen an für Alarme, die beim Überschreiten von Ober- oder Untergrenzen auslösen. Darf nur einmal unter einer Sektion  
 
 
 
 Entspricht den Einstellungen Obere Grenze / Untere Grenze für die Überwachungstypen im Objekt Alarmgruppe. | 
| 
 
 | Alarmbedingungen, die einen Alarm definieren, der auslöst, wenn ein Ausdruck in oder aus einem bestimmten Wertebereich gerät. Darf nur einmal unter einer Sektion  
 
 Entspricht den Einstellungen Innerhalb des Bereichs / Außerhalb des Bereichs für die Überwachungstypen im Objekt Alarmgruppe. | 
| 
 | Alarmbedingung für einen Alarm an, der auslöst wenn 2 Ausdrücke miteinander verglichen werden. Darf nur einmal unter einer Sektion  
 Entspricht der Einstellungen Digital für die Überwachungstypen im Objekt Alarmgruppe. | 
| 
 | Alarm, der auslöst, wenn ein Ausdruck seinen Wert ändert. Darf nur einmal unter einer Sektion  
 Entspricht der Einstellungen Änderung für die Überwachungstypen im Objekt Alarmgruppe. | 
| 
 | Kennzeichnet, dass die aktuelle Alarmsektion einen Eventalarm erzeugt. Dieser kann mit der Funktion  | 
Beispiel
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_SECPendingTimeSEC 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