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 0. 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 „Objekt hinzufügen POU für implizite Prüfungen“. Der Befehl öffnet den Dialog „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.
Um ein mehrfaches Einbinden zu verhindern, steht eine bereits eingefügte Überwachungsfunktion im Dialog „Objekt einfügen“ nicht mehr zur Auswahl.




HINWEIS

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.
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 |
---|---|
„CheckBounds“ |
„Feldgrenzenprüfungen“ Angemessene Behandlung von Verletzungen von Feldgrenzen (beispielsweise durch Setzen eines Fehlerflags oder durch Verändern des Feldindex). |
„CheckDivDInt“ |
„Divisionsprüfungen“: Überwachung des Divisorwerts, um ein Dividieren durch 0 zu vermeiden. |
„CheckDivLInt“ |
|
„CheckDivReal“ |
|
„CheckDivLReal“ |
|
„CheckRangeSigned“ |
„Bereichsprüfungen“: Überwachung der Bereichsgrenzen eines Unterbereichstypen während der Laufzeit. Gilt
für die Datentypen |
„CheckRangeUnsigned“ |
|
„CheckLRangeSigned“ |
„L-Bereichsprüfungen“: Überwachung der Bereichsgrenzen eines Unterbereichstypen während der Laufzeit. Gilt
für die Datentypen |
„CheckLRangeUnsigned“ |
|
„CheckPointer“ |
„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 |
Siehe auch
-
POU 'CheckBounds'
-
POU 'CheckDivInt'
-
POU 'CheckDivLInt'
-
POU 'CheckDivReal'
-
POU 'CheckDivLReal'
-
POU 'CheckRangeSigned'
-
POU 'CheckLRangeSigned'
-
POU 'CheckRangeUnsigned'
-
POU 'CheckLRangeUnsigned'
-
POU 'CheckPointer'