Skip to main content

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 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.

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.

Tabelle 62. Verfügbare Funktionen

Ü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 DINT/UDINT

CheckRangeUnsigned

CheckLRangeSigned

L-Bereichsprüfungen:

Überwachung der Bereichsgrenzen eines Unterbereichstypen während der Laufzeit

Gilt für die Datentypen LINT/ULINT

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 CheckPointer eine angemessene Fehlerbehandlung durchführen. CheckPointer überwacht in der gleichen Weise auch Variablen vom Typ REFERENCE TO.