Division Checks (POUs CheckDivDInt, CheckDivLInt, CheckDivReal, CheckDivLReal)
Funktionen zur Vermeidung des Divisor-Werts „0“: CheckDivDInt, CheckDivLInt, CheckDivReal und CheckDivLReal
Um ein Teilen durch 0 zu vermeiden, können Sie die Funktionen CheckDivDInt, CheckDivLInt, CheckDivReal und CheckDivLReal verwenden. Wenn Sie diese Funktionen in das SPS-Projekt einbinden, werden sie vor jeder im Code auftretenden Division aufgerufen.
Deklarationsteil nicht verändern Um die Funktionalität der Überwachungsfunktionen zu erhalten, dürfen Sie den Deklarationsteil nicht verändern. Als einzige Ausnahme dürfen Sie lokale Variablen hinzufügen. |
Standardimplementierung 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 Implementation suggestion
{noflow}
IF divisor = 0 THEN
CheckDivReal := 1;
ELSE
CheckDivReal := divisor;
END_IF
{flow}
Der Operator DIV verwendet die Ausgabe der Funktion CheckDivReal als Divisor. Im unten stehenden Beispielprogramm verhindert diese Funktion eine Division durch 0 dadurch, dass der implizit mit „0“ initiierte Wert des Divisors fDivisor vor Ausführung der Teilung von der Funktion CheckDivReal in 1 geändert wird. Somit lautet das Ergebnis der Division 799.
PROGRAM MAIN
VAR
fResult : REAL;
fDivident : REAL := 799;
fDivisor : REAL := 0;
END_VAR
fResult := fDivident / fDivisor;