Codegenerierung

Mit Hilfe der automatischen Codegenerierung lassen sich schnell und einfach SPS-Variablen für die im I/O-Prozessabbild konfigurierten OPC UA Nodes erzeugen und automatisch mit diesen verlinken. Diese Funktion steht im Konfigurationsdialog des I/O Clients über den Button Create Plc Code zur Verfügung. Diese Funktion benötigt als Voraussetzung ein existierendes SPS-Projekt in der aktuellen Solution.

Codegenerierung 1:

Nach dem Aufruf dieser Funktion wird eine neue Globale Variablenliste (GVL) mit dem Namen des I/O Clients im SPS-Projekt angelegt. Anschließend werden alle OPC UA Nodes eingelesen und entsprechende Variablen in der GVL angelegt. Jede Variable erhält hierbei das TcLinkTo-Attribut für eine automatische Verlinkung mit der entsprechenden Variablen aus dem I/O-Prozessabbild.

Beispiel: Im I/O-Teil von TwinCAT XAE wurde ein TwinCAT OPC UA I/O Client mit dem Namen „Client 1“ angelegt, zu welchem diverse OPC UA Nodes von einem Server hinzugefügt wurden.

Codegenerierung 2:

Nach dem Aufruf der Codegenerierung wurde nun in dem (bereits vorhandenen) SPS-Projekt eine neue GVL mit dem Namen „Client_1“ angelegt. Diese enthält dann entsprechende SPS-Variablen für die einzelnen Nodes, welche dann über das TcLinkTo-Attribut automatisch verlinkt wurden.

Codegenerierung 3:
Codegenerierung 4:

Zusätzlich werden auch die Steuervariablen von dem jeweiligen I/O Client als Variablen in der GVL angelegt und verlinkt (im Screenshot oben nicht dargestellt).

Codegenerierung für Strukturen

Eine OPC UA Node, welche einen sogenannten StructuredDataType repräsentiert, wird von der Codegenerierung ebenfalls berücksichtigt und eine entsprechende Variable in der GVL angelegt. Da der StructuredDataType als nativer Datentyp im TwinCAT-Typsystem angelegt wurde, kann mit ihm wie mit einer normalen Struktur umgegangen werden.

Beispiel: Im Prozessabbild des I/O-Clients wurden zwei StructuredDataTypes von einem Server hinzugefügt. Die Datentypen der StructuredDataTypes auf dem Server lauten ST_Complex1 und ST_Complex2 (im Screenshot unten nicht sichtbar).

Codegenerierung 5:

Durch die Codegenerierung wurde nun eine entsprechende GVL mit zwei Variablen aus dem jeweils automatisch erzeugten TwinCAT-Datentyp angelegt, welcher dem jeweiligen StructuredDataType entspricht.

Codegenerierung 6:

Codegenerierung für Methoden

Eine OPC UA Methode hat Ein- und Ausgabeparameter, welche entsprechend an die Methode übergeben bzw. von ihr zurückgegeben werden. Des Weiteren ist eine Methode ein in sich geschlossener Aufruf; sie muss explizit vom Client gestartet werden. Diese Methodik ist im Prozessabbild des I/O-Clients an der Methode entsprechend abgebildet und wird bei der Codegenerierung auch berücksichtigt. Für eine Methode wird, anders als bei normalen Variablen oder Strukturen, ein eigener Funktionsbaustein angelegt, welcher dann in der GVL referenziert wird.

Beispiel: Im Prozessabbild des I/O-Clients wurden zwei Methoden von einem Server hinzugefügt.

Codegenerierung 7:

Durch die Codegenerierung wurden nun eine entsprechende GVL sowie zwei Funktionsbausteine angelegt, welche die Ein-/Ausgangs- und Steuervariablen der jeweiligen Methode repräsentieren.

Codegenerierung 8:
Codegenerierung 9:
Codegenerierung 10: