Step 7 NullDivision abfragen SCL

Zuviel Werbung?
-> Hier kostenlos registrieren
Man kann nach "OK" testen.
In die Optionen "OK Setzen" aktivieren.

In Code:

"MyValue" := "SomeNumber" / "SomeOtherNumber" ;

//Nach verdächtigen Code:

IF NOT OK THEN
GOTO ERROR ;
END_IF;

// Wenn OK, dann weiter mit den Normalen Program

...
...
...

ERROR : // tu utwas. z.B. Störmeldung aktivieren.
 
Ist auch gut, denke man kann auch ein array nach "ok" absuchen. Ich werde es testen.

nee, das geht nicht. Das OK-Flag steht nicht in der jeweiligen Variablen sondern wird allgemein nach einer fehlerhaften Operation gesetzt. OK ist quasi eine Variable, welche 0 ist, wenn eine Operation fehlerhaft ausgeführt wurde.

Gruß.

[h=1]Flags (OK-Flag)[/h]Das OK-Flag dient dazu, die korrekte oder inkorrekte Ausführung eines Bausteins zu vermerken. Es ist eine lokale Variable vom Typ BOOL mit dem vordefinierten Namen "OK".
Zu Beginn einer Programmausführung hat das OK-Flag den Wert TRUE. Es kann an beliebiger Stelle im Baustein mit S7-SCL-Anweisungen abgefragt oder auf TRUE / FALSE gesetzt werden. Tritt während der Ausführung einer Operation ein Fehler auf (z.B. eine Division durch Null), wird das OK-Flag auf FALSE gesetzt. Beim Verlassen des Bausteins wird der Wert des OK-Flags in den Ausgangsparameter ENO gespeichert und kann dadurch vom aufrufenden Baustein ausgewertet werden.
Deklaration
Das OK-Flag ist eine systemvereinbarte Variable. Es ist keine Vereinbarung erforderlich. Sie müssen aber die Compileroption "OK-Flag setzen" vor dem Übersetzen wählen, wenn Sie das OK-Flag in Ihrem Anwenderprogramm verwenden möchten.
Beispiel
Code:
// OK-Flag auf TRUE setzen,
// damit überprüft werden kann,
// ob die Aktion korrekt abläuft.
OK:= TRUE;
Division:= 1 / IN;
IF OK THEN
// Die Division verlief korrekt.

// :
// :

ELSE // Die Division verlief fehlerhaft.

// :

END_IF;
 
Zuletzt bearbeitet:
Zurück
Oben