Best Practice: Zugriff auf Daten des TcCOM
Einführung
Im Bereich Konfiguration des Datenzugriffs auf Daten eines TcCOM-Objekts wurde beschrieben, wie man den Datenzugriff auf ein TcCOM unter TC TcCom Interfaces in den Konfigurationsparametern eines Simulink®-Modells einstellen kann. Im Folgenden werden Vor- und Nachteile und auch Anwendungsszenarien sowie nützliche Hinweise gegeben, wann welcher Typ von Datenzugriff auf ein TcCOM sinnvoll sein kann.
Zugriff per ADS
Eigenschaften
- On-demand Datenaustausch
- Asynchrone Kommunikation
- Threadsafe
- Zeitpunkt des Lesens oder Schreibens nicht determiniert
Use Cases
- Lesender oder schreibender Zugriff von außerhalb der TwinCAT-Laufzeit, z.B. von einer HMI. Lesen und schreiben von Modell-Parametern oder lesen von internen Signalen.
- Zugriff von innerhalb der TwinCAT-Laufzeit auf das TcCOM, wenn das schreibende Software-Modul (anderes TcCOM oder SPS) nicht im selben Task-Kontext aufgerufen wird. Somit erfolgt der Datenaustausch thread-safe. Beispielsweise nutzbar, wenn ein Software-Modul Parametersätze an unterschiedliche Software-Module in diversen Kontexten liefert.
Hinweise
- Sollen mehrere Parameter gleichzeitig verändert oder gelesen werden, sollte ein ADS-Summenkommando verwendet werden. Ansonsten kann nicht garantiert werden, dass separate ADS Lese- oder Schreibbefehle allesamt konsistent in einem Task-Zyklus abgearbeitet werden.
- Soll der Datenzugriff über das Netzwerk über OPC UA und nicht per ADS erfolgen, gelten ebenfalls diese Eigenschaften.
Zugriff per Mapping
Eigenschaften
- Zyklischer Datenaustausch
- Threadsafe
- Zeitpunkt des Datenaustausches determinieret
Use Cases
- Zyklischer Datenaustausch zwischen unterschiedlichen Software-Modulen, insbesondere für Daten die sich jeden Task-Zyklus ändern.
Hinweise
- Auch nicht veränderte Werte werden in jedem Task-Zyklus kopiert. Daher ist es ratsam, die Input- und Output Mapping DataAreas klein zu halten und auf das wesentliche zu beschränken. Große Simulink®-Bus-Strukturen als Input, bei denen sich nur wenige Elemente zyklisch verändern, sollten hier vermieden werden.
- Der Zeitpunkt des Datenaustausches ist determiniert und kann in Simulink® unter Cofiguration Parameters -> TC TcCom Additional settings -> Default execution sequence spezifiziert werden.
- Modell-Parameter als Input Destination DataArea zu definieren ist nur dann sinnvoll, wenn sich die Parameter zyklisch ändern (wobei hier zunächst geprüft werden sollte, ob der Parameter sich nicht besser als Modell-Input abbilden lässt) oder die Anzahl der Parameter so gering ist, dass der Overhead des zyklischen Kopierens nicht stört.
Zugriff per Data Pointer
Eigenschaften
- On-demand Datenaustausch
- Nicht Threadsafe
- Zeitpunkt des Lesens oder Schreibens determiniert (geteilter Speicherbereich)
- Lokale Kopie der Daten in jeder Instanz
- Flexible Verknüpfung von DataArea und Data Pointer im XAE
Use Cases
- Gemeinsamer Speicherbereich von mehreren TcCOM, beispielsweise für Variablen im DataStore. TcCOM-Instanzen können sich über Data Pointer Daten miteinander in einem gemeinsamen Speicherbereich teilen.
Beispiel für Data Pointer Ein Beispiel finden Sie hier: Geteilter Speicher zwischen TcCOM-Instanzen. |
Exported Global/Imported Extern
Eigenschaften
- On-demand Datenaustausch
- Nicht Threadsafe
- Zeitpunkt des Lesens oder Schreibens determiniert (geteilter Speicherbereich)
- Keine lokalen Kopien der Daten in jeder Instanz
- Nur Module, die im selben Treiber gebündelt wurden, können auf die globale Variable zugreifen.
Use Cases
- Gemeinsamer Speicherbereich für mehrere TcCOM. Auch für große Variablen geeignet.
Beispiel für Exported Global/Imported Extern Ein Beispiel finden Sie hier: Geteilter Speicher zwischen TcCOM-Instanzen. |
Spezialfall: Interaktion über den TcCOM-Wrapper-FB
Der TcCOM-Wrapper-FB (siehe Anwenden des TcCOM-Wrapper-FB) vereinfacht die Interaktion zwischen SPS und TcCOM. Dieser FB ermöglicht mit geringem Programmieraufwand in erster Linie die zyklische Ausführung des verknüpften TcCOM-Objektes aus dem SPS-Code, inklusive des Austauschs der Ein- und Ausgangsdaten. Er ermöglicht aber auch einen einfachen azyklischen Zugriff auf die Parameter des Objektes und bei Bedarf einen flexiblen Zugriff auch auf die DataAreas.
Der Wrapper stellt dazu einerseits das ITcADI-Interface (siehe ADI Interface) und andererseits (optional) Properties am Funktionsbaustein (siehe FB properties) bereit. Der TcCOM-Wrapper-FB sollte im selben Kontext wie das TcCOM aufgerufen werden.
Properties des Funktionsbausteins
- Zugriff nur auf Modul Parameter
- Kein Zugriff auf DataAreas. Hinweis: Modell Parameter werden standardmäßig sowohl als DataArea als auch als Modul Parameter angelegt.
- Einfacher Zugriff auf Modul Parameter per Name
- Nicht Threadsafe
ITcADI-Interface
- Effizienter und flexibler Zugriff auf alle DataAreas (auch Teilbereiche einer DataArea)
- Zugriff nur über DataArea Nummer und ByteOffset
- Keine Typ-Informationen (type cast ist durch den Nutzer zu realisieren)
- Jeden Task-Zyklus muss der Pointer neu geholt und auch wieder freigegeben werden
- Kein Zugriff auf Modul Parameter
- Nicht Threadsafe
Änderungen persistieren
Oben wurde beschrieben, wie Daten zur TwinCAT-Laufzeit in einer TcCOM Instanz verändert werden können. Wird TwinCAT neu gestartet, gehen diese Änderungen verloren, wenn nicht weitere Maßnahmen zur Wiederherstellung getroffen wurden. Standardverhalten eines TcCOM ist, dass bei Start einer TcCOM-Instanz die Parametrierung entsprechend seiner Startup Values vorgenommen wird.
Darüber hinaus können remanente Variablen definiert werden, welche ihren Wert über die übliche Programmlaufzeit hinaus behalten. Sie können remanente Variablen als RETAIN-Variablen oder noch strenger als PERSISTENT-Variablen deklarieren.
Nähere Informationen zu remanenten Daten (Persistent und Retain) in der TwinCAT PLC: Link
Im folgenden werden drei Wege beschrieben, wie Werte nach Neustart von TwinCAT wieder hergestellt werden können.
1) Startup values
Siehe Parametrierung einer Modulinstanz zur Differenzierung zwischen Online, Prepared, Default und Startup Values.
TwinCAT 3 XAE notwendig Die Veränderung von Startup Values erfolgt in der TwinCAT Konfiguration, also im Engineering. Änderungen können hier eingetragen werden. Die Änderung muss aber kompiliert und auf das Laufzeit-System heruntergeladen werden. |
Werden Online Values während der Laufzeit verändert, können Sie die aktuellen Online-Werte z. B. via ADS lesen. Dies kann z.B. mit dem TE1410 TwinCAT Interface for MATLAB®/Simulink® erfolgen. Die gelesenen Werte können dann als neue Startup Values in die TwinCAT Konfiguration eintragen werden.
Nutzen Sie dazu z.B. das Automation Interface Beispiel:
TwinCAT.ModuleGenerator.Samples.Show('Use the TwinCAT Automation Interface in MATLAB')
In dem Beispiel wird ein Live Script verwendet, um unterschiedliche Funktionen zu zeigen. Der Abschnitt Read and write parameter online values via ADS beschreibt das Lesen und Schreiben von Online-Werten von einem TcCOM. Der Abschnitt Read and change parameter startup value beschreibt, wie Sie Startup Values lesen und auch schreiben können.
Der Eintrag der neuen Startup Values erfolgt in der TwinCAT Konfiguration auf dem Engineering System. Um die Änderungen auf dem Laufzeitsystem verfügbar zu machen, müssen Sie die Konfiguration auf dem System aktivieren. Auch dies können Sie mit dem Automation Interface realisieren (sysManager.ActivateConfiguration
). Sie können entweder das System per Automation Interface direkt neu starten (sysManager.StartRestartTwinCAT
), oder Sie können ohne Neustart das System laufen lassen. Beim nächsten Start von TwinCAT sind die Startup Values gesetzt und das TcCOM fährt mit den neuen Startup Values hoch.
2) Retain Data
Unter TC TcCom Interfaces können Sie die Modell Parameter (und auch andere Gruppen) als DataArea vom Typ Retain Source DataArea anlegen. Sie können dann einen Retain Handler in der TwinCAT Konfiguration anlegen und mit der DataArea verbinden. Details siehe NOV-RAM und Retain Handler.
NOV-RAM notwendig Um mit dem Retain Handler zu arbeiten, benötigen Sie einen IPC/CX mit eingebautem NOV-RAM. Die Nutzung einer EtherCAT-Klemme mit NOV-RAM (z.B. EL6080) wird nicht unterstützt. |
3) Persistent Data
Ohne TwinCAT XAE und ohne NOV-RAM können Sie auf persistente Daten in der TwinCAT 3 SPS zurückgreifen.
TwinCAT 3 SPS Laufzeit notwendig Um persistente Daten nutzen zu können, müssen Sie in der SPS-Variablen als persistent deklarieren. |
Persistente Daten können nur in der SPS angelegt werden. Nutzen Sie daher die SPS, um die Daten zu definieren, die sie persistieren möchten. Arbeiten Sie z.B. mit dem TcCOM-Wrapper-FB, um Daten aus dem TcCOM auszulesen und über die persistente SPS Variable zu persistieren. Erstellen Sie eine Zustandsmaschine für das Aufstarten des TcCOM Objekts nach einem TwinCAT Restart, um die persistierten Daten wieder in das TcCOM Objekt hineinzuschreiben, bevor es wieder im Code aufgerufen wird.