POU ‘CheckPointer’

Überwachungsfunktion Checkpointer für Pointer

Verwenden Sie die Funktion, um den Speicherzugriff von Pointern während der Laufzeit zu überwachen.  Im Unterschied zu anderen Überwachungsfunktionen existiert für die Implementierung von CheckPointer kein standardmäßiger Vorschlag; eine Implementierung ist vom Benutzer selbst vorzunehmen!

Die Funktion CheckPointer soll überprüfen, 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. Sind beide Bedingungen erfüllt, so wird der Pointer selbst zurückgegeben. Anderenfalls sollte die Funktion eine angemessene Fehlerbehandlung durchführen.

Vorsicht

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.

Hinweis

Für den THIS-Pointer und den SUPER-Pointer findet kein impliziter Aufruf der Überwachungsfunktion statt.

Hinweis

Die Funktion Checkpointer wirkt ab Compiler Version 3.5.7.40 auch auf Variablen vom Typ REFERENCE in gleicher Weise wie auf Pointervariablen.

Vorlage

Deklaration:

// Automatisch erzeugter Code: NICHT EDITIEREN
FUNCTION CheckPointer : POINTER TO BYTE
VAR_INPUT
    ptToTest : POINTER TO BYTE;
    iSize : DINT;
    iGran : DINT;
    bWrite: BOOL;
END_VAR

Implementierung (unvollständig!):

// Keine Standardimplementierung. Bitte fügen Sie Ihren Code hier ein.
CheckPointer := ptToTest;

Beim Aufruf übergibt CODESYS der Funktion folgende Eingabeparameter:

  • ptToTest:  Zieladresse des Pointers
  • iSize:  Größe der referenzierten Variable; der Datentyp von iSize muss kompatibel sein zu INT und den Größenbereich der Variablen abdecken
  • iGran: Granularität der referenzierten Größe, also der größte in der referenzierten Variablen enthaltene nicht-strukturierte Datentyp; der Datentyp von iGran muss kompatibel sein zu INT
  • bWrite: Art des Zugriffs ( TRUE=Schreibzugriff, FALSE=Lesezugriff); der Datentyp von bWrite muss BOOL sein

Bei positivem Ergebnis der Überprüfung wird der unveränderte Eingabepointer zurückgegeben (ptToTest).

Siehe auch