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 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 von Befehl Objekt hinzufügen ‣ POU für implizite Prüfungen . Daraufhin erscheint der 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 bzw. 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 den Deklarationsteil nicht verändern. Als einzige Ausnahme dürfen Sie lokale Variablen hinzufügen.

Nach dem Entfernen impliziter Überwachungsfunktionen, wie beispielsweise CheckBounds, aus dem Projekt, ist kein Online-Change mehr möglich, nur ein Download. Eine entsprechende Meldung wird ausgegeben.

Bemerkung

CODESYS führt standardmäßig implizite Prüfungen nicht für Bausteine aus Bibliotheken aus. Sie können jedoch durch die Compiler-Definition checks_in_libs die Prüfung auf Bausteine aus Bibliotheken ausweiten. Diese 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.

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

Siehe auch