Operatoren
Als Operatoren werden die eingebauten Standardfunktionen, die eine Teilmenge der Standardfunktionen der IEC darstellen, bezeichnet. Benutzerdefinierte Funktionen können in der Safety-Programmierung nicht erstellt werden.
Die Operatoren haben die gleiche Semantik und Logik wie in Standard-CODESYS.
Sie können sowohl mit SAFExxx als auch mit Standard- Datentypen beschaltet werden.
Einfügen von Operatoren
Das Einfügen der Operatoren erfolgt über die Befehle Bausteinaufruf einfügen, bzw. Leeren Baustein einfügen.
Die Operatoren können auch aus der Werkzeugbox (Toolbox) der Ansicht Werkzeuge hinzugefügt werden. In der Werkzeugbox des Safety FUP-Editor gibt es die Kategorien
Boolesche Operatoren
Mathematische Operatoren
Sonstige Operatoren
Eingabehilfe
In der Eingabehilfe werden für Operatoren folgende Kategorien angezeigt:
Operatoren
Konvertierungen (nicht im Basic Level)
Erweiterbare Operatoren
ANDORADD(nur im Extended Level)MUL(nur im Extended Level)MUX(nur im Extended Level)
Die nach IEC ebenfalls erweiterungsfähigen Operatoren EQ, LT, LE, GT, GE lassen sich (wie in Standard) nur mit zwei Bausteineingängen verwenden.
Der Befehl Bausteineingang einfügen fügt einer erweiterbaren Operatorbox einen weiteren Eingang hinzu.
Operatoren im Basic Level
AND(2 Eingänge)AND(3 Eingänge)OR(2 Eingänge)OR(3 Eingänge)
Alle Operanden des OR müssen SAFEBOOL sein.
Operatoren im Extended Level
AND(2 Eingänge)AND(3 Eingänge)OR(2 Eingänge)OR(3 Eingänge)XORNOT
Wichtig
Der unachtsame Gebrauch der Operatoren XOR und NOT kann zum Verlust der Failsafe-Eigenschaft von SAFExxx-Variablen führen, es wird dabei keine Checker-Warnung erzeugt.
Die Operatoren XOR und NOT können die Failsafe-Eigenschaft einer SAFExxx-Variablen negieren, sodass die SAFE-Variable ihre Failsafe-Eigenschaft verliert, also „ausfallunsicher“ wird. Dies kann zu unbeabsichtigtem Anlaufen der Anlage führen.
Programmierregel: Die SAFExxx-Ausgänge von NOT und XOR müssen ermittelt werden. Anschließend muss sichergestellt werden, dass diese NOT/XOR-Ausgänge nicht auf Ausgänge (E/As) durchgeschaltet werden.
ADD(2 Eingänge): arithmetischerADD-OperatorADD(3 Eingänge): Addition mit drei EingängenSUB: SubtraktionMUL: MultiplikationDIV: DivisionEQ: Vergleich auf GleichheitNE: Vergleich auf UngleichheitLT: Vergleich auf 'Kleiner als'LE: Vergleich auf 'Kleiner als' oder 'Gleich'GT: Vergleich auf 'Größer als'GE: Vergleich auf 'Größer las' oder 'Gleich'
SELMUX
BOOL_TO_INTBOOL_TO_DINTBOOL_TO_TIMEBOOL_TO_WORDBYTE_TO_INTBYTE_TO_DINTBYTE_TO_TIMEBYTE_TO_WORDDINT_TO_BOOLDINT_TO_BYTEDINT_TO_INTDINT_TO_TIMEDINT_TO_WORDDINT_TO_DWORDDWORD_TO_DINTDWORD_TO_TIMEINT_TO_BOOLINT_TO_BYTEINT_TO_DINTINT_TO_DWORDINT_TO_TIMEINT_TO_WORDTIME_TO_BOOLTIME_TO_BYTETIME_TO_INTTIME_TO_DINTTIME_TO_WORDTIME_TO_DWORDWORD_TO_BOOLWORD_TO_BYTEWORD_TO_DINTWORD_TO_INTWORD_TO_TIMEWORD_TO_DWORD
Operatoren mit Safety-Besonderheiten
Die für spezifischen Besonderheiten einiger Operatoren, werden in folgenden Kapiteln beschrieben
Laufzeitfehler bei Bereichsüberschreitungen der Operatoren im Extended Level
Laufzeitfehler bei Bereichsüberschreitungen der Operatoren im Extended Level
Wichtig
Es liegt in der Verantwortung des Entwicklers, die Programmlogik so zu gestalten, dass keine Laufzeitfehler auftreten.
reagiert bei den im Folgenden aufgeführten Bereichsüberschreitungen mit einem Laufzeitfehler, wodurch die Applikation gestoppt und ein Logbucheintrag erzeugt wird.
Level | Sprachelement | Lauftzeifehler bei |
|---|---|---|
Extended |
| Division durch 0 |
Extended |
| Aufruf mit erstem Input mit negativem Wert oder mit Wert N größer als die Anzahl der Eingänge minus 1. Z. B. |
Extended |
| Ausgangswert ist nicht im Wertebereich des Zieltyps: Bei Konvertierung zwischen zwei
ebenso
|
Tipp
Das Standardverhalten von SEL/MUX dass bei zu großem Eingangswert der maximale Wert und bei negativem Eingangswert der Wert 0 ausgewählt wird, muss in der Sicherheitsapplikation programmiert werden.
SEL: für k<0
SEL für k>Max, n…Maximalwert
MUX für k<0
MUX für k>