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
AND
OR
ADD
(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)XOR
NOT
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'
SEL
MUX
BOOL_TO_INT
BOOL_TO_DINT
BOOL_TO_TIME
BOOL_TO_WORD
BYTE_TO_INT
BYTE_TO_DINT
BYTE_TO_TIME
BYTE_TO_WORD
DINT_TO_BOOL
DINT_TO_BYTE
DINT_TO_INT
DINT_TO_TIME
DINT_TO_WORD
DINT_TO_DWORD
DWORD_TO_DINT
DWORD_TO_TIME
INT_TO_BOOL
INT_TO_BYTE
INT_TO_DINT
INT_TO_DWORD
INT_TO_TIME
INT_TO_WORD
TIME_TO_BOOL
TIME_TO_BYTE
TIME_TO_INT
TIME_TO_DINT
TIME_TO_WORD
TIME_TO_DWORD
WORD_TO_BOOL
WORD_TO_BYTE
WORD_TO_DINT
WORD_TO_INT
WORD_TO_TIME
WORD_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>