Datenkonsistenz von booleschen Variablen mit absoluter Adresse

Frage:
Was ist bezüglich Datenkonsistenz beim Einsatz boolescher Variablen mit absoluter Adresse (z. B. der digitalen Ausgänge) zu beachten?

Antwort:
Der Zugriff auf boolesche Variablen mit absoluter Adresse aus unterschiedlichen Tasks kann zu Dateninkonsistenzen führen, wenn sich die booleschen Variablen im gleichen Byte befinden.

Bei einem schreibenden Zugriff auf eine boolesche Variable mit absoluter Adresse liest der Prozessor des PLC-Zielsystems zuerst das Byte aus, in dem sich dieses Bit befindet. Zur Veränderung des Bits wird das Byte entsprechend maskiert. Danach wird das Byte wieder in den Speicher des Prozessabbilds zurückgeschrieben. In einer Multitasking-Umgebung kann dieser Vorgang unterbrochen werden. D. h. wird der Schreibvorgang durch eine andere Task unterbrochen und wird in dieser Task ebenfalls schreibend auf ein Bit dieses Bytes zugegriffen, dann führt dies zur Dateninkonsistenz.
Beispiel:
In dem Baustein PLC_PRG (zyklische Task) wird schreibend auf den digitalen Ausgang A1 zugegriffen. In dem Baustein TASK_PRG, der durch einen Intervall-Task aufgerufen wird, wird schreibend auf den digitalen Ausgang A2 zugegriffen. Beide Ausgänge befinden sich im gleichen Byte, d. h. unterbricht der Intervall-Task die zyklische Task beim Schreiben auf den digitalen Ausgang A1, dann führt dies zu einer Dateninkonsistenz.

Ab der DDS Version 2.2 (DDS = Global Drive PLC Developer Studio) wird die Datenkonsistenz von booleschen Variablen mit absoluter Adresse gewährleistet. Voraussetzung hierfür ist aber, dass im Dialog Zielsystemeinstellungen (Register Resources) im Register Zielplattform der Schalter Datenkonsistenz für Multitasking aktiv ist (siehe auch Datenkonsistenz für Multitasking; Dok-ID 200403230).

URL zur Verlinkung dieses AKB-Artikels: https://www.lenze.com/de-de/go/akb/200500955/0/
Kontaktformular