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