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_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