Grundlegende Beispiele

Eine große Anzahl von grundlegenden Beispielen wird während der Installation des Interface for LabVIEW™ mit in die LabVIEW™-Umgebung integriert. Diese können mit der Hilfe des NI Example Finders gefunden werden.

Folgende Schlagworte erleichtern die Suche nach den Beispielen:

Der NI Example Finder kann in LabVIEW™ unter Menu > Hilfe > Beispiele Finden gestartet werden.

Grundlegende Beispiele 1:

Ebenso können Sie alle Beispiele über die Directory Structure unter
Beckhoff Automation > Beckhoff-LabVIEW-Interface finden.

Die Beispiele sind kategorisiert in die eingangs in der Dokumentation beschriebenen Kommunikations-Modi:

Einmaliges Lesen

Simple Read with TypeResolving.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs aus den LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang ReadGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel wird mit Index Array das erste ADS-Symbol der Liste selektiert.
  4. Nach der Initialisierung wird der polymorphic Block ADS-Read aufgerufen. Mit dem Eingang Read Choice kann ausgewählt werden, welcher Read Mode genutzt werden soll. Der Eingang Read Choice ist ein LabVIEW™-Enum und bietet folgende Optionen:
    • Read Sync: Hierzu wird zuerst eine synchrone Leseanfrage an die TwinCAT-Laufzeit gesendet und auf eine Rückmeldung gewartet. Das empfangene ADS-Datenpaket wird danach, mit der Hilfe des TypeResolver, von Rohdaten in den LabVIEW™-Datentyp „Variant“ konvertiert.
    • Noti. Single: Hierzu wird eine ADS-Notification registriert/angemeldet und einzelne empfangene Notifications an LabVIEW™ weitergegeben. Nach Lesen der Notification werden die Notifications wieder abgemeldet. Die empfangenen ADS-Daten werden danach, mit der Hilfe des TypeResolver, von Rohdaten in den LabVIEW™-Datentyp „Variant“ konvertiert.
    • Noti. Buffered: Hierzu wird eine ADS-Notification registriert/angemeldet und ein Block von empfangenen Notifications an LabVIEW™ weitergegeben. Die Anzahl der im Block gepufferten Notifications wird durch den Symbol-Parameter LVBufferSize bestimmt. Nach dem Lesen der Notifications werden die Notifications wieder abgemeldet. Die empfangenen ADS-Daten werden danach, mit der Hilfe des TypeResolver, von Rohdaten in den LabVIEW™-Datentyp „Variant“ konvertiert.
  5. Interaktion: Mit Variant-to-Data kann das Beispiel angepasst werden, um den Variant in einen passenden Datentyp zu übersetzen. Der Datentyp hängt ab vom gewählten ADS-Symbol im Symbol Interface. Siehe dazu Type Resolving.
  6. Im letzten Schritt wird der Grund-Block Release aufgerufen und der ADS-Client aus dem Speicher freigegeben.

Hinweis

Noti. Single

Noti. Single unterstützt nur den Transmode=OnChange

Read Async with TypeResolving.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung der ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang ReadGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel wird mit Index Array das erste ADS-Symbol der Liste selektiert.
  4. Nach der Initialisierung wird der Block Read Async Single TypeResolved aufgerufen. Hierzu wird eine asynchrone Leseanfrage an die TwinCAT-Laufzeit gesendet. Der Programmcode läuft weiter ohne auf Rückmeldung zu warten.
  5. In diesem Beispiel wird der Low-Level-Block TryReadData in einer while-Schleife aufgerufen und wartet damit auf eine Rückmeldung vom angefragten ADS-Server. Dies ist als Beispiel zu verstehen und kann in Applikationen in ganz anderer Form implementiert werden. Nach empfangener Rückmeldung wird das empfangene Datenpaket in den passenden LabVIEW™-Datentyp Variant konvertiert.
  6. Interaktion: Mit Variant-to-Data kann das Beispiel angepasst werden, um den Variant in einen passenden Datentyp zu übersetzen. Der Datentyp hängt ab vom gewählten ADS-Symbol im Symbol Interface. Siehe dazu Type Resolving.
  7. Im nächsten Schritt wird ein Low-Level-Block Release Reader aufgerufen und damit der Reader aus dem Speicher freigegeben.
  8. Im letzten Schritt wird der Grund-Block Release aufgerufen und damit der ADS-Client aus dem Speicher freigegeben.

Einmaliges Schreiben

Write Sync with TypeResolving.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang WriteGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel wird mit Index Array das erste ADS-Symbol der Liste selektiert.
  4. Interaktion: Fügen Sie an rot markierter Stelle den passenden Datentypen ein. Der Datentyp hängt ab vom gewählten ADS-Symbol im Symbol Interface. Siehe dazu Datentypen.
  5. Nach der Initialisierung wird der Block Write Sync Single TypeResolved aufgerufen. Hierzu werden zuerst die Rohdaten vom LabVIEW™-Datentyp in einen passenden TwinCAT 3-Datentyp konvertiert und danach eine synchrone Schreib-Anfrage an TwinCAT gesendet. Der Block wartet auf eine Rückmeldung vom Server, um sicherzustellen, ob die Daten erfolgreich gesendet wurden.
  6. Im letzten Schritt wird der Grund-Block Release aufgerufen und damit der ADS-Client aus dem Speicher freigegeben.

Write Async with TypeResolving.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang WriteGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel wird mit Index Array das erste ADS-Symbol der Liste selektiert.
  4. Interaktion: Fügen Sie an rot markierter Stelle den passenden Datentypen ein. Der Datentyp hängt ab vom gewählten ADS-Symbol im Symbol Interface. Siehe dazu Datentypen.
  5. Nach der Initialisierung wird der Block Write Async Single TypeResolved aufgerufen. Hierzu werden zuerst die Rohdaten vom LabVIEW™-Datentyp in einen passenden TwinCAT 3-Datentyp konvertiert und danach eine asynchrone Schreib-Anfrage an TwinCAT gesendet. Der Block wartet nicht auf eine Rückmeldung des ADS-Servers.
  6. In diesem Beispiel wird der Low-Level-Block CheckWriteStatus in einer while-Schleife aufgerufen und wartet damit auf eine Rückmeldung vom angefragten ADS-Server. Dies ist als Beispiel zu verstehen und kann in Applikationen in ganz anderer Form implementiert werden.
  7. Im nächsten Schritt wird der Low-Level-Block Release Writer aufgerufen und damit der Writer aus dem Speicher freigegeben.
  8. Im letzten Schritt wird der Grund-Block Release aufgerufen und damit der ADS-Client aus dem Speicher freigegeben.

Daten kontinuierlich lesen

Die Beispiele in dieser Gruppe nutzen das sogenannte Polling-Verfahren oder LabVIEW™ Event-basierte Verfahren, um die Datenpakete zyklisch anzufragen.

Continuos Read Sync Base.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden die Low-Level Blöcke Base Init, Get List of ReadWrite Symbols und Get List of Registered Targets aufgerufen und damit der ADS-Client initialisiert.
  3. Um das Lesen und Typeresolving zu beschleunigen, werden im nächsten Schritt der ADS-Reader, mit dem Aufruf von Init Reader, und der TypeResolver, mit dem Aufruf Init Type, vorab und nur einmalig initialisiert.
  4. Im nächsten Schritt fragt der Send Reader-Request Block mit jedem Zyklus der Schleife ein neues Datenpaket aus TwinCAT an. Das empfangene Datenpaket wird mit dem Aufruf Resolve From TC Type in einen passenden LabVIEW™-Datentyp Variant konvertiert.
  5. Interaktion: Mit Variant-to-Data kann das Beispiel angepasst werden, um den Variant in einen passenden Datentyp zu übersetzen. Der Datentyp hängt ab vom gewählten ADS-Symbol im Symbol Interface. Siehe dazu Type Resolving.
  6. Nach Erreichen der Abbruchbedingung der Schleife wird der ADS-Reader, mit dem Aufruf Release Reader, und der TypeResolver, mit dem Aufruf Release Type, aus dem Speicher freigegeben.
  7. Im letzten Schritt wird der Grund-Block Release aufgerufen und damit der ADS-Client aus dem Speicher freigegeben.

Read Notification-Event Single

Das Beispiel, wie die anderen Beispiele in Grundlegende Beispiele, nutzt die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen. Beachten Sie bei der Auswahl die Paramatereinstellungen der Symbole für diese Betriebsart: E-Noti. Single.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang ReadGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel wird mit Index Array das erste ADS-Symbol der Liste selektiert.
  4. Es wird ein User Event erstellt und registriert. Siehe dazu auch die LabVIEW™-Dokumentation zu user events.
  5. Mit dem Aufruf von E-Noti. Single wird eine ADS-Notification am ADS-Server für das selektierte ADS-Symbol registriert.
  6. Im nächsten Schritt wird in der Event Structure auf die ADS-Notifications gewartet. Wenn keine Notification empfangen wird, dann geht die Ereignisstruktur in einen Timeout. Mit Aufrufen des Blocks Stop Notification wird die ADS-Notification gestoppt. Der Stopp erfolgt am ADS-Server, sodass keine Nachrichten mehr gesendet werden.
  7. Interaktion: Type Resolving ist in dem Beispiel nicht implementiert. Es gibt zwei Möglichkeiten. Entweder wird das Type Resolving innerhalb der Event-Loop realisiert, oder erst nach Beendigung/Abmelden der ADS-Notification. Anknüpfungspunkt sin in der Event Structure die Punkte: Data sowie TimeStamps. Letztere sind die ADS timestamps.
  8. Beim Aufrufen des Blocks Unregister Notification wird die ADS-Notification des Symbols am ADS-Server abgemeldet und das Handle auf die ADS-Notification aus dem Speicher freigegeben.
  9. Im letzten Schritt wird der Grund-Block Release aufgerufen und damit der ADS-Client aus dem Speicher freigegeben.

Read Notification-Event Buffered.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs. Das Beispiel ist identisch im Aufbau zu Read Notification-Event Single. Die einzigen Unterschiede sind:

  • Das polymorphe VI wird auf E-Noti. Buffered gestellt.
  • Am Punkt Data in der Event-Loop wird immer ein Array der Größe LVBufferSize übergeben.

Read Notification-Event Multiple

Das Beispiel, wie die anderen Beispiele in Grundlegende Beispiele, nutzt die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs. Das Beispiel ist identisch im Aufbau zu Read Notification-Event Buffered. Die einzigen Unterschiede sind:

  • Das polymorphic VI wird auf E-Noti. Multiple Symbols gestellt.
  • Für jedes ADS-Symbol kann eine entsprechende Messdauer ElapseTimeMs (in Millisekunden) ausgewählt werden.
  • Das Lesen von jedem ADS-Symbol benötigt eine entsprechende LabVIEW™-Event-Case.

Read Notification-LVBuffer Multiple

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen. Beachten Sie bei der Auswahl die Paramatereinstellungen der Symbole für die Betriebsart LVB-Noti. Multiple Symbols.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang ReadGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel werden mit Array Subset die ersten 3 ADS-Symbole der Liste selektiert.
  4. Es wird für jedes selektierte ADS-Symbol ein Handle auf das LVBuffer, mit dem Aufruf von Init LVBuffer Handle, initialisiert.
  5. Mit dem Aufruf von LVB-Noti. Multiple Symbols werden ADS-Notifications am ADS-Server für die selektierte ADS-Symbole registriert. Hierzu nimmt der Block ein Array von ADS Symbols als Eingang. Zusätzlich kann die Dauer der einzelnen Notification in Millisekunden eingegeben werden. So werden die Notifications nach dem Ablauf der Zeit automatisch gestoppt.
  6. Im nächsten Schritt werden die einzelnen Symbole in einer while-Schleife gelesen. Auf das Lesen kann eine definierte Zeit (Timeout) oder unendlich lange gewartet werden.
  7. Beim Aufrufen des Blocks Unregister Notification wird die ADS-Notification des Symbols am ADS-Server abgemeldet und das Handle auf die ADS-Notification aus dem Speicher freigegeben.
  8. Beim Aufrufen des Blocks Release LVBuffer Handle wird das Handle auf den LVBuffer aus dem Speicher freigegeben.
  9. Im letzten Schritt wird der Grund-Block Release aufgerufen und damit der ADS-Client aus dem Speicher freigegeben.

Read Notification-LVBuffer Single

Das Beispiel, wie die anderen Beispiele in Grundlegende Beispiele, nutzt die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen. Beachten Sie bei der Auswahl die Paramatereinstellungen der Symbole für die Betriebsart LVB-Noti. Single Symbol.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang ReadGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel wird mit Index Array das erste ADS-Symbol der Liste selektiert.
  4. Es wird für das selektierte ADS-Symbol ein Handle auf den LVBuffer, mit dem Aufruf von Init LVBuffer Handle, initialisiert.
  5. Mit dem Aufruf von LVB-Noti. Single Symbol werden ADS-Notifications am ADS-Server für das selektierte ADS-Symbol registriert. Zusätzlich ermöglicht es der Block, eine Messdauer in Millisekunden einzugeben. So werden die Notifications nach dem Ablauf der Zeit automatisch gestoppt.
  6. Im nächsten Schritt kann das selektierte Symbol in einer while-Schleife gelesen werden. Auf das Lesen kann eine definierte Zeit (Timeout) oder unendlich lange gewartet werden. Wichtig dazu zu betrachten ist, ob die ADS-Notifications Cyclic oder OnChange vom Server gesendet werden.
  7. Beim Aufrufen des Blocks Unregister Notification wird die ADS-Notification des Symbols am ADS-Server abgemeldet und das Handle auf die ADS-Notification aus dem Speicher freigegeben.
  8. Beim Aufrufen des Blocks Release LVBuffer Handle wird das Handle auf den LVBuffer aus dem Speicher freigegeben.
  9. Im letzten Schritt wird der Grund-Block Release aufgerufen und damit der ADS-Client aus dem Speicher freigegeben.

Daten kontinuierlich schreiben

Continuos Write Sync Base.vi

Das Beispiel, wie die anderen Beispiele in Grundlegende Beispiele, nutzt die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang WriteGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel wird mit Index Array das erste ADS-Symbol der Liste selektiert.
  4. Um das Schreiben und Type Resolving zu beschleunigen, werden im nächsten Schritt der ADS-Writer, mit dem Aufruf Init Writer, und der TypeResolver, mit dem Aufruf Init Type, einmalig vorher initialisiert.
  5. Im nächsten Schritt sendet der Send Writer-Request-Block mit jedem Zyklus der Schleife ein neues Datenpaket an TwinCAT. Vor dem Schreiben wird der LabVIEW™-Datentyp Variant, mit dem Aufruf von Resolve To TC Type Block, in einem passenden TwinCAT 3-Datentyp konvertiert.
  6. Nach Erreichen der Abbruchbedingung der Schleife wird der ADS-Reader, mit dem Aufruf von Release Writer, und der TypeResolver, mit dem Aufruf von Release Type, aus dem Speicher freigegeben.
  7. Im letzten Schritt wird der Grund-Block Release aufgerufen und der ADS-Client aus dem Speicher freigegeben.

LabVIEW™-Typ generieren

Um einen LabVIEW™-Datentyp automatisch zu einem ADS-Symbol zu generieren, werden der TypeResolver und der Generate Type Wrapper Block genutzt. Die folgenden Beispiele beschreiben zwei verschiedene Wege, um dies umzusetzen:

Generate Type using Symbol Interface or Symbol’s file

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol in seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht mehr das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang ReadGrpSymbols und WriteGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben).
  4. In einer For-Schleife wird ausgeführt:
    • TypeResolver: Mit Init Type wird die Typ-Beschreibung im TypeResolver geladen und an den LabVIEW™-Prozess als XML-Zeichenkette (TypeInfo) weitergegeben.
    • TypeGenerator: Mit dem Aufruf des Generate Type Wrapper VI wird ein LabVIEW™-Typ generiert.
    • Release-Type: Gibt das Handle auf den TypeResolver aus dem Speicher frei.
  5. Gibt das Handle auf den Client frei.

Generate Type using TypeInfo file

Das Beispiel nutzt, im Gegenteil zu Generate Type using Symbol Interface or Symbol’s file, eine vorgenerierte TypeInfo-Datei, um einen LabVIEW™-Typ zu generieren.

SumUp Lesen oder Schreiben

Read SumUp with TypeResolving.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs aus den LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol aus seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung ihrer ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie auch vor dem Starten des VIs im Front Panel die exportierete Datei auswählen, sodass die XML geladen wird und nicht das UI aufgerufen wird.
  2. Im zweiten Schritt werden der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang ReadGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel werden mit Index Array das erste und zweite ADS-Symbol der Liste selektiert.
  4. Nach der Initialisierung des ADS-Clients werden die TypeResolvers mit den selektierten Symbolen initialisiert.
  5. Danach wird das SumUp Handle mit Hilfe Init SumUp fürs Lesen initialisiert. Hier wird das flag bAutosend auf true gesetzt, damit neue Daten automatisch gelesen werden.
  6. Der Block Add Request baut die SumUp Subkommandos zusammen.
  7. Danach teilt sich das Beispiel in zwei verscheiden Threads:
    • Loop 1: Liest zyklisch die neuen Daten nacheinander aus den Subkommandos. Die gelesenen Daten werden mit dem initialisierten TypeResolver in entsprechende LabVIEW™-Datentypen konvertiert.
    • Loop 2: Ermöglicht das Aktivieren oder Deaktivieren des automatischen Sendens von ADS-Anfragen.
  8. Im letzten Schritt werden die alle initialisierten Handles aus dem Speicher freigegeben.

Hinweis

ADS-Fehlermeldung beim Lesen von Symbolen mit bAutosend auf false

In Loop 1 können ADS-Fehlermeldungen auftreten, wenn beim Initialisieren des SumUp Handle das Flag bAutosend auf false gesetzt ist. In diesem Fall fängt der Block Get Data an, die Daten aus den Subkommandos zu lesen, obwohl sie noch nicht an den ADS-Server geschickt wurden und daher keine Daten beinhalten.

Write SumUp with TypeResolving.vi

Das Beispiel nutzt, wie die anderen Beispiele in Grundlegende Beispiele, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Symbol Interface aufgerufen. Bei Ausführung des Beispiels öffnet sich das User-Interface und der Nutzer kann ein ADS-Symbol aus seiner TwinCAT-Laufzeit auswählen.
    • Wenn Sie bereits eine XML-Beschreibung der ADS-Symbole aus dem Symbol Interface exportiert haben, können Sie es als Pfad auswählen, sodass die XML geladen wird und nicht das UI aufgerufen wird.
  2. Im zweiten Schritt wird der Grund-Block Init aufgerufen und der ADS-Client initialisiert.
  3. Der Ausgang WriteGrpSymbols enthält ggf. mehr als ein ADS-Symbol (wenn Sie mehr als ein Symbol unter Schritt 1 ausgewählt haben). Im Beispiel werden zwei ADS Symbole von den Typen Zeitstempel und Zeichenkette erwartet. Mit Index Array werden das erste und das zweite ADS-Symbol der Liste selektiert.
  4. Nach der Initialisierung werden die TypeResolvers auf die selektierten Symbole initialisiert. Danach wird überprüft, ob das erste Symbol den Datentyp Zeitstempel und das zweite den Datentyp Zeichenkette hat.
  5. Danach wird das SumUp Handle mit Hilfe Init SumUp für das Schreiben initialisiert. Hier wird das flag bAutosend auf false gesetzt, um die neuen Daten nicht automatisch zu schreiben.
  6. Danach teilt sich das Beispiel in zwei verscheiden Threads:
    • Loop 1: Wartet in einer Ereignis-Struktur auf neue Daten, die von Loop 2 generiert werden. Die neuen Daten werden zu den entsprechenden Subkommandos verteilt und auf das Senden gewartet. Davor werden die Rohdaten in einen TwinCAT 3 Datentyp transformiert. Beinhaltet das Subkommando schon Daten, werden diese durch die Neuen ersetzt. In der Ereignis-Struktur kann das automatische Senden aktiviert oder deaktiviert werden.
    • Loop 2: Erzeugt die Block Diagramm Ereignisse in einem Zyklus von 250 ms.
  7. Im letzten Schritt werden alle initialisierten Handles aus dem Speicher freigegeben.

CoE lesen oder schreiben

Das Beispiel nutzt, wie die anderen Beispiele in diesem Kapitel, die Grund-VIs und die Low-Level-VIs aus LabVIEW™-VIs in den folgenden Schritten:

  1. Im ersten Schritt wird der Grund-Block Init mit einer leeren Zeichenkette aufgerufen und der ADS-Client wird initialisiert.
  2. Die CoE-Blöcke erwarten die AMS-Adresse als Zeichenkette des EtherCAT-Teilnehmers, von dem die CoE-Konfiguration gelesen werden soll. Das Steuerelement Device Address erwartet eine Zeichenkette mit dem folgenden Format: AMS Net-Id des Masters und AMS Port des Teilnehmers (AMS NetId:Port).

Wenn das Steuerelement leer gelassen wird, öffnet das Beispiel ein Dialogfenster zur Auswahl eines EtherCAT-Teilnehmers.

  1. Das Beispiel liest die CoE-Liste von dem EtherCAT-Teilnehmer.
  2. Interaktion:
    • Mit einem Doppelklick auf ein Objekt in der CoE-Liste kann dieses ausgewählt werden, um die Objektbeschreibung zu lesen. Hierbei wird das Low-Level VI aufgerufen.
    • Über den Button Check Entry kann ein Eintrag mit Subindex gelesen werden.
    • Im nächsten Schritt können verschiedene CoE-Einträge gelesen oder geschrieben werden.
  3. Im letzten Schritt wird das Client Handle aus dem Speicher freigegeben.