Datenkonsistenz in Kombination mit dem CODESYSKommunikationsverwalter
Wichtig
Die Informationen auf dieser Seite gelten ausschließlich für Objekte, Daten und Methoden, die über die Editoren des CODESYS Kommunikationsverwalter (IEC-Symbolgruppen, OPC UA Informationsmodelle und Symbolkonfiguration) veröffentlicht werden, und nicht für den OPC UA Server im Allgemeinen.
Der OPC UA Server ist ein Service, der im Hintergrund der SPS läuft. Die Tasks des OPC UA Servers haben eine niedrigere Priorität als die Tasks der IEC-Applikationen. Aufgrund von Multitasking und Multicore-Systemen können die Tasks des OPC UA Servers durch andere Tasks unterbrochen werden. Auch kann es vorkommen, dass IEC-Tasks parallel zu den Aufgaben des OPC UA Servers laufen, was beim Lesen oder Bearbeiten von Daten zu Dateninkonsistenzen führen kann. Dieses Kapitel soll einen Überblick darüber geben, wo Konsistenz garantiert werden kann und wo nicht.
Datenzugriff (lesen, schreiben, aufzeichnen)
Daten, deren Konsistenz garantiert ist
Alle skalaren Datentypen bis zu einer Größe von 8 Bytes werden aus den IEC-Daten konsistent gelesen und in diese geschrieben.
Daten, deren Konsistenz nicht garantiert ist
Zeichenfolgen
Zeichenfolgen werden Zeichen für Zeichen gelesen und geschrieben. Daher kann die Konsistenz einer gelesenen oder geschriebenen Zeichenfolge nicht garantiert werden.
Arrays
Das Lesen oder Schreiben von Arrays erfolgt elementweise. Dabei kommt die grundlegende Lese- bzw. Schreiblogik des Basistyp des Arrays zur Anwendung. Wenn das Basiselement konsistent verarbeitet werden kann, sind auch alle Array-Elemente konsistent. Es kann jedoch nicht garantiert werden, dass sich bereits verarbeitete Array-Elemente während der Verarbeitung des gesamten Arrays nicht verändert haben.
Strukturierte Datentypen (STRUCT und FB)
Das Lesen oder Schreiben von Elementen einer Struktur oder eines Funktionsbausteins erfolgt elementweise. Dabei wird die grundlegende Lese- bzw. Schreiblogik des Basisdatentyps der Elemente verwendet. Wenn das Basiselement konsistent verarbeitet werden kann, ist auch das Element konsistent. Es kann jedoch nicht garantiert werden, dass sich bereits verarbeitete Elemente während der Verarbeitung der gesamten Struktur oder des gesamten Funktionsbausteins nicht geändert haben.
Kombinationen
Wenn Arrays und Strukturen kombiniert werden, gelten die oben genannten Regeln für das Strukturelement bzw. das Array-Element. Es wird die Lese- und Schreiblogik des Basistyps der Array-Elemente bzw. Struktur-Elemente verwendet. Daraus ergibt sich das folgende allgemeine Verhalten:
Werte von einfachen Datentypen (außer
STRINGundWSTRING) sind immer konsistent, unabhängig davon, wo sie platziert werden.Es kann nicht garantiert werden, dass
STRINGundWSTRINGkonsistent sind.Es kann nicht garantiert werden, das Strukturen und Arrays konsistent sind. Die einzelnen Werte darin sind jedoch konsistent, sofern sie von einem einfachen Datentyp sind.
Methodenaufrufe
Eingabe- und Ausgabeparameter (unabhängig von Datentyp, Arrays oder Strukturen) werden konsistent vom OPC UA Server an den Methodenaufruf oder von den Ausgaben des Methodenaufrufs zurück an den OPC UA Server übertragen. Dies wird durch die Verwendung des Stacks des Threads gewährleistet, der den Methodenaufruf ausführt. Dennoch ist die Konsistenz des Datenzugriffs vom Code der Methode in die IEC-Anwendung nicht gewährleistet. Da diese Methoden parallel zu den Aufgaben der IEC-Anwendung ausgeführt werden, können normale Mechanismen zur Synchronisierung des Zugriffs auf die Daten verwendet werden, beispielsweise Mutex, Semaphore, Double Buffering.