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.

Division Checks (POUs CheckDivDInt, CheckDivLInt, CheckDivReal, CheckDivLReal) 1:

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;