Befehl Speicher für aktive Applikation prüfen

Funktion: Der Befehl startet eine Prüfung des Speicherbereichs der aktiven Applikation. Der Speicher wird dabei diversen Prüfungen unterzogen. Die Ergebnisse werden im Meldungsfenster ausgegeben.

Aufruf: Menü PLC > Fenster

Voraussetzung: Mindestens eine Applikation ist geladen und im Onlinebetrieb.

Der Speicherbereich der aktiven Applikation wird auf Folgendes überprüft:

Die Ergebnisse der Prüfung werden im Meldungsfenster ausgegeben. Verstöße gegen die Prüfungskriterien erscheinen als Warnungen (siehe Tabelle unten).

Bei einem Doppelklick auf eine Warnung erscheint die Ansicht Speicher, in der die betreffende Stelle orange markiert ist. Die Ansicht Speicher kann auch mit dem Befehl Speicheransicht anzeigen geöffnet werden.

Mit Hilfe des Attributs 'memory_check' kann die Prüfung eingeschränkt werden.

ID der Warnung, wenn das Prüfkriterium nicht erfüllt wird.

Prüfkriterium

MC0001

BOOL-Variablen müssen im Speicher entweder 0 oder 1 sein.

MC0002

Enumerationsvariablen dürfen nur Werte annehmen, die in der Enumeration definiert sind.

MC0003

Variablen eines Unterbereichstyps dürfen nur Werte innerhalb des Unterbereich annehmen.

MC0004

Alle Strings müssen 0-terminiert sein.

MC0005

Pointer müssen immer auf Adressen zeigen, die das korrekte Alignment haben.

Pointer müssen auf Speicherstellen zeigen, deren Adresse auf die Typgranularität ausgerichtet ist, oder 0 oder -1 ist.

MC0006

Pointer müssen auf Speicher innerhalb der Applikation zeigen.

MC0007

Pointer müssen auf Variablen des korrekten Typs verweisen. Nicht korrekt wäre es z. B., wenn ein POINTER TO STRING auf einen REAL zeigt.

MC0008

Interne Konsistenz von Compilerstrukturen

Funktionspointeradressen müssen intern konsistent sein.

MC0009

Interne Konsistenz von Compilerstrukturen

Schnittstellenvariablen und Funktionstabellenpointer müssen intern konsistent sein.

MC0010

Interne Konsistenz von Compilerstrukturen

MC0011

Der heruntergeladene Code darf sich seit dem Download nicht geändert haben.

Der Code von kompilierten Bausteinen muss unverändert sein.

Information: Kompilierte Bausteine mit Haltepunkten werden von der Prüfung ausgenommen, weil für diese der Code zur Laufzeit manipuliert wird.

MC0012

Der Wert einer Konstanten darf sich seit dem Download nicht geändert haben.

Variablen eines konstanten Blocktyps (STRUCT, ARRAY etc.) müssen gegenüber ihren Initialisierungswerten unverändert sein.

MC0013

Interne Konsistenz von Compilerstrukturen

MC0014

Interne Konsistenz von Compilerstrukturen