Objekt: POUs für implizite Prüfungen
Diese speziellen POUs können Sie zu einer Applikation hinzufügen, um sie mit implizit zur Verfügung gestellten Überwachungsfunktionalitäten auszustatten. Diese Funktionen überprüfen während der Laufzeit die Grenzen von Arrays oder Unterbereichstypen, die Gültigkeit von Pointeradressen oder eine Division durch Null. Beachten Sie, dass diese Möglichkeit bei Geräten deaktiviert sein kann, wenn solche Prüfbausteine durch eine spezielle implizite Bibliothek bereitgestellt werden.
Das Hinzufügen zur Applikation erfolgt mit Hilfe des Befehls POU für implizite Prüfungen hinzufügen, wo Sie einen der Überwachungsfunktionstypen auswählen können, siehe Tabelle unten. Je nach Überwachungsfunktion müssen Sie den Implementierungscode anpassen oder komplett selbst verfassen.
. Der Befehl öffnet den DialogUm ein mehrfaches Einbinden zu verhindern, steht eine bereits eingefügte Überwachungsfunktion im Dialog Objekt einfügen nicht mehr zur Auswahl.
Für weitere Informationen siehe: Bausteine für implizite Prüfungen verwenden
Wichtig
Um die Funktionalität der Überwachungsfunktionen zu erhalten, dürfen Sie deren Deklarationsteil nicht verändern. Als einzige Ausnahme dürfen Sie lokale Variablen hinzufügen.
Nach dem Entfernen impliziter Überwachungsfunktionen (beispielsweise CheckBounds
) aus dem Projekt ist kein Online-Change mehr möglich, nur ein Download. Eine entsprechende Meldung wird ausgegeben.
Tipp
CODESYS führt implizite Prüfungen standardmäßig nicht für Bausteine aus den in der Applikation verwendeten Bibliotheken aus. Sie können die Prüfung jedoch folgendermaßen auf die Bibliotheken ausweiten: Öffnen Sie den Dialog Eigenschaften der Applikation und tragen Sie auf der Registerkarte Build im Feld Compiler-Defines die Compilerdefinition checks_in_libs
ein. Diese Definition wirkt sich jedoch nur auf Implementierungsbibliotheken (*.library
) aus, nicht auf geschützte Bibliotheken (*.compiled-library
).
Sie können die Prüfung spezieller POUs im Projekt mit dem Attribut „no_check“ deaktivieren.
Überwachungsfunktion | Typ |
---|---|
Feldgrenzenprüfungen Angemessene Behandlung von Verletzungen von Feldgrenzen (beispielsweise durch Setzen eines Fehlerflags oder durch Verändern des Feldindex) | |
Divisionsprüfungen: Überwachung des Divisorwerts, um ein Dividieren durch 0 zu vermeiden | |
Bereichsprüfungen: Überwachung der Bereichsgrenzen eines Unterbereichstypen während der Laufzeit Gilt für die Datentypen | |
L-Bereichsprüfungen: Überwachung der Bereichsgrenzen eines Unterbereichstypen während der Laufzeit Gilt für die Datentypen | |
Pointerprüfungen Diese Funktion müssen Sie komplett selbst mit Implementierungscode füllen. Sehen Sie dazu die Hilfeseite zu „POU ‚CheckPointer‘“. Die Funktion soll überwachen, ob der übergebene Pointer auf eine gültige Speicheradresse verweist und ob die Ausrichtung des referenzierten Speicherbereichs zum Typ der Variablen passt, auf die der Pointer verweist. Wenn beide Bedingungen erfüllt sind, wird der Pointer selbst zurückgegeben. Andernfalls sollte |