IEC-Operator für die Division einer Variablen durch eine andere:
Erlaubte Typen:
oBYTE
oWORD
oDWORD
oLWORD
oSINT
oUSINT
oINT
oUINT
oDINT
oUDINT
oLINT
oULINT
oREAL
oLREAL
oTIME
TIME-Variablen können durch ganzzahlige Variablen dividiert werden.
(Ergebnis in Var1 ist 4.)
LD 8
DIV 2
ST Var1
var1 := 8/2;
1. Reihe an DIV-Feldern
2. Einzelnes DIV-Feld
3. DIV-Feld mit EN/ENO-Parametern
Das Verhalten bei einer Division durch Null kann zielsystemabhängig unterschiedlich sein. Es kann zu einem Anhalten der Steuerung führen oder unerkannt bleiben.
|
UNBEABSICHTIGTER GERÄTEBETRIEB |
Verwenden Sie die in diesem Dokument beschriebenen Prüffunktionen oder schreiben Sie Ihre eigenen Prüffunktionen, um eine Division durch Null im Programmiercode zu verhindern. |
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben. |
HINWEIS: Weitere Informationen über implizite Prüffunktionen finden Sie im Kapitel POUs für implizite Prüfungen.
Sie können folgende Prüffunktionen heranziehen, um den Wert des Divisors zur Vermeidung einer Division durch 0 zu prüfen (die Funktionen können nach Bedarf angepasst werden):
oCheckDivDInt
oCheckDivLint
oCheckDivReal
oCheckDivLReal
Für Informationen zum Einfügen der Funktion, siehe die Beschreibung der Funktion POUs für implizite Checks.
Die Prüffunktionen werden automatisch vor jeder Teilung, die im Anwendungscode gefunden wird, aufgerufen.
Siehe das folgende Beispiel für eine Implementierung der Funktion CheckDivReal.
Standardmäßige Implementierung der Funktion CheckDivReal
Deklarationsteil
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivReal : REAL
VAR_INPUT
divisor:REAL;
END_VAR
Implementierungsteil:
// Implicitly generated code : only an suggestion for implementation
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE
CheckDivReal:=divisor;
END_IF;
Der Operator DIV verwendet die Ausgabe der Funktion CheckDivReal als Divisor. In untenstehendem Beispielprogramm wird eine Division durch 0 dadurch verhindert, dass der implizit mit „0“ initiierte Wert des Divisors d vor Ausführung der Teilung von der Funktion CheckDivReal geändert wird. Somit lautet das Ergebnis der Division 799.
PROGRAM PLC_PRG
VAR
erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR
erg:= v1 / d;