Lesen von Variablen

Über den TwinCAT OPC UA I/O Client können Variablenwerte aus einem OPC UA Server ausgelesen werden. Das Sampling der Werte kann hierbei über verschiedene Mechanismen erfolgen, welche im Folgenden näher beschrieben werden.

Die verschiedenen Einstellungen in diesem Zusammenhang werden in den Konfigurationsseiten des I/O-Geräts durchgeführt. Im Bereich Process Data Configuration werden verschiedene Parameter aufgelistet, um die verschiedenen Modi der Datenerfassung von einem Server zu beeinflussen.

Der TwinCAT OPC UA I/O Client bietet drei verschiedene Modi zur Datenaufnahme an:

Polling (Zyklisches Lesen/Schreiben)

Eine der möglichen Arten der Datenaufnahme ist das zyklische Lesen und Schreiben. Dabei werden sowohl für das Lesen als auch für das Schreiben Zeitintervalle festgelegt. Außerdem kann festgelegt werden, wie viele Variablen in einem Lesebefehl gelesen werden sollen.

Lesen von Variablen 1:

Schreiben von Variablen im Polling- und Subscription-Modus

Beim Schreiben ist zu beachten, dass nur bei Werteänderung geschrieben wird. Wenn nach Ablauf eines Zyklus keine Werteänderung in den konfigurierten Variablen stattgefunden hat, wird kein neuer Wert geschrieben.

Lesen von Variablen 2:

Parameter

Beschreibung

Read Cycle Time

Spezifiziert, wie schnell Variablen zyklisch gelesen werden.

Write Cycle Time

Legt fest, wie häufig ein Schreibbefehl auf dem OPC UA-Kanal ausgelöst wird. Wenn sich ein Variablenwert innerhalb einer spezifizierten Zykluszeit mehrfach ändert, wird nur der letzte Wert auf den OPC UA-Kanal geschrieben. Wenn sich kein konfigurierter Wert in der Zykluszeit geändert hat, wird kein Schreibbefehl ausgelöst.

ReadList

Lesebefehle auf dem OPC UA-Kanal werden gebündelt, um Bandbreite einzusparen. Dieser Parameter spezifiziert, wie viele Variablen in einen einzigen Lesebefehl auf dem OPC UA-Kanal aufgenommen werden. Die Beschriftung dahinter gibt an, wie viele Lesebefehle sich aus der aktuellen Konfiguration ergeben.

Array Single Write

Bei Aktivierung wird bei Änderungen eines Wertes in einem Array ein Schreibvorgang nur für diesen Wert auf dem OPC UA-Kanal ausgeführt. Bei Nicht-Aktivierung wird immer das gesamte Array geschrieben.

OnTrigger

Außerdem gibt es die Möglichkeit, das Lesen und Schreiben über Trigger-Variablen auszulösen. Für jedes OPC UA-Client-Gerät gibt es eine Trigger-Variable (zu finden unter Outputs/Control/Execute), die mit einer Variablen aus der SPS verbunden und bei Bedarf gesetzt werden kann. Diese Möglichkeit eignet sich zum Beispiel, wenn das Lesen von Daten von einem OPC UA-Server erst bei einem bestimmten Ereignis in der SPS erfolgen soll. Bleibt die Trigger-Variable dauerhaft gesetzt, verhält sich die Art der Datenaufnahme so wie die zyklische Konfiguration.

Beim Schreiben hingegen wird bei gesetzter Trigger-Variable in jedem Zyklus ein Wert geschrieben. Hierbei wird keine Werteänderung betrachtet.

Lesen von Variablen 3:

Subscriptions

Die dritte und letzte Möglichkeit der Datenaufnahme ist das Nutzen von Subscriptions. Dabei meldet der I/O-Client beim verbundenen OPC UA-Server eine Subscription an. Spezifizieren lassen sich die unten beschriebenen Parameter für Publish Interval, Lifetime Count und Keepalive Count.

Der Subscription-Modus ist vor allem für das Lesen von Variablen gedacht. Wenn man in diesem Modus Werte schreibt, gilt das gleiche Verhalten wie für das zyklische Schreiben (siehe oben).

Lesen von Variablen 4:

Parameter

Beschreibung

Publish Interval

Nach der angegebenen Zeit überprüft der verbundene OPC UA-Server, ob neue Benachrichtigungs-Pakete für den Client vorliegen. Sollten in einem Publishing Interval mehrere Wertänderungen auftreten, wird trotzdem nur der letzte Wert übertragen.

Lifetime Count

Der OPC UA-Client ist dafür verantwortlich, einen PublishRequest an den Server zu schicken. In der PublishResponse schickt der Server die jeweiligen Benachrichtigungspakete zurück. Der Lifetime Count gibt an, nach wie vielen nicht erhaltenen PublishRequests des Clients der Server die Subscription löscht. In Klammern steht die berechnete Zeitdauer (im Beispiel 1200 multipliziert mit 1000ms = 20 Minuten).

Keepalive Count

Wenn der Server keine neuen Benachrichtigungs-Pakete für den Client hat, schickt er keine Daten zurück. Der Keepalive Count gibt an, nach wie vielen ausgelassenen Nachrichten der Server eine leere Nachricht an den Client schicken würde, um mitzuteilen, dass er noch aktiv ist und die Subscription noch besteht.