Type Resolving
Das TwinCAT 3 Interface for LabVIEW ™ bietet TypeResolver, um den ADS-Datenstrom aus einem LabVIEW™-Datentyp in einen TC3-Datentyp oder umgekehrt zu parsen. Es wird zuerst ein Vergleich zwischen dem LabVIEW™-Datentyp und dem TC3-Datentyp gemacht. Wenn die Datentypen gleich sind, wird der ADS-Datenstrom passend geparst und kopiert. Der TypeResolver unterstützt die folgenden Betriebsarten:
- ADS-Datenstrom aus TC3 auflösen.
- ADS-Datenstrom für TC3 auflösen.
ADS-Datenstrom aus TC3 auflösen
Der Block From TC initialisiert den TypeResolver, parst und konvertiert die ADS-Daten, die mit ADS Read von TwinCAT gelesen worden sind, in den LabVIEW™-Datentyp Variant. Der Block Type Release gibt den TypeResolver aus dem Speicher wieder frei. Das Konvertieren von Variant in den passenden LabVIEW™-Datentyp erfolgt durch das Variant-to-Data VI.
Die folgende Grafik zeigt, wie der TypeResolver aus den Low Level VIs zusammengesetzt ist. In diesem Beispiel gehen wir von einer Struktur in TwinCAT aus, welche aus drei Elementen besteht.
Definition der Struktur:
TYPE ST_toLabVIEW :
STRUCT
TCSignedWord : INT;
TCUnsignedInt : UINT;
TCStringArray : ARRAY [1..5] OF STRING;
END_STRUCT
END_TYPE
Der TC3-Datentyp und der LabVIEW™-Datentyp müssen für den Umsetzungsvorgang übereinstimmen. Im Anhang finden Sie dazu eine Übersetzungstabelle als Übersicht. Auf der rechten Seite im Blockdiagramm ist ein LabVIEW™-Container abgebildet, welcher die oben genannte Struktur widerspiegelt.
Aufbau des LabVIEW™-Containers (nicht initialisiert, nur definiert):
- I16
- U16
- TCStringArray ist 1..n Elemente und vom Typ String (wird in LabVIEW™ nicht näher spezifiziert)
Das Kopieren von Daten kann aus folgenden Gründen fehlschlagen:
- Der LabVIEW™-Container ist nicht in der korrekten Reihenfolge in seinen Elementen aufgebaut.
- Die Einträge der Struktur und des Containers haben nicht denselben Datentyp.

ADS-Datenstrom für TC3 auflösen
Der Block To TC initialisiert den TypeResolver, vergleicht den LabVIEW™-Datentyp mit dem TC3-Datentyp und konvertiert die LabVIEW™-Daten in ADS-Rohdaten. Am Ende gibt der Block den TypeResolver aus dem Speicher frei. Die konvertierten ADS-Daten können danach direkt an einen ADS Write-Block weitergegeben werden.
Die unten stehende Grafik zeigt ein ähnliches Szenario wie zuvor die Beschreibung From TC. Hier werden die Daten von einem LabVIEW™-Datentyp zu einem TC3-Datentyp konvertiert. Die Konvertierung kann aus folgenden Gründen fehlschlagen:
- Der LabVIEW™-Container ist nicht in der korrekten Reihenfolge in seinen Elementen aufgebaut.
- Die Einträge der Struktur und des Containers haben nicht denselben Datentyp.
- Die Elemente in der Struktur sind nicht initialisiert.
![]() | Initialisierung des LabVIEW™-Datentyps Beim Konvertieren vom LabVIEW™- in den TC3-Datentyp muss der LabVIEW™-Datentyp vorinitialisiert sein. Beim komplexen Datentyp, wie einer Struktur, muss der komplette Datentyp initialisiert sein. Beim Array müssen die einzelnen Elemente initialisiert sein. |

Für obige Grafik ist zum Beispiel folgende TwinCAT-Struktur in der PLC als Ziel zum Schreiben denkbar:
TYPE ST_fromLabVIEW :
STRUCT
TCSignedDoubleInt : DINT;
TCUnsignedLongInt : ULINT;
TCStringArray : ARRAY [1..6] OF STRING(80);
END_STRUCT
END_TYPE
Der passende initialisierte LabVIEW™-Container ist dann folgendermaßen aufgebaut:
- I32
- U64
- String-Array mit 6 Elementen (es dürfen hier jeweils 80 Character pro Array-Element genutzt werden)
Automatische Typ-Generierung
Die manuelle Erstellung von passenden Datentypen in LabVIEW™ ist unter Umständen zeitaufwendig und fehleranfällig. Das TwinCAT Interface for LabVIEW™ bietet die Möglichkeit der automatischen Typ-Generierung. Nutzen Sie dazu den TypeResolver und den Utilities Wrapper Block. Im Kapitel Beispiele finden Sie verschiedene Varianten, wie Sie diese VIs effektiv einsetzen können: Beispiel Type-Resolver.