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;