ADS FlexDAQ
Das ADS FlexDAQ (Flexible Data Acquisition) VI ist eine Weiterentwicklung des ADS DAQ VI. Ebenso wie beim ADS DAQ, handelt es sich um ein LabVIEW™ Express VI, welches das Konfigurieren von Messaufgaben mit TwinCAT 3 vereinfacht und lesend auf die TwinCAT-Laufzeit zugreift.
Das ADS FlexDAQ VI bietet darüber hinaus die folgenden weiteren Optionen:
- Es können beliebig viele ADS-Symbole pro Instanz gelesen werden.
- Den Symbolen kann eine eindeutige Loop-ID zugewiesen werden. Symbole mit derselben Loop-ID werden in derselben while-Schleife gelesen.
- Jedem Symbol kann ein entsprechender TDMS Flag zugewiesen werden, um die zu lesenden Daten in einer TDMS-Datei zu speichern.
Das User-Interface leitet Sie Schritt für Schritt durch die Konfiguration Ihrer Messaufgabe:
- Auswahl der zu lesenden Datenpunkte (ADS-Symbole)
- Konfiguration des Lese-Modus (ADS-Notification)
- Konfiguration der Loop-IDs
- Konfiguration der Speicherung von Messdaten in einer TDMS-Datei
- Konfiguration von Start- und Endbedingung der Messaufgabe
Nach dem Platzieren der ADS FlexDAQ Instanz im LabVIEW™-Blockdiagramm oder per Doppelklick, öffnet sich das Konfigurationsfenster. Mit Hilfe der nachfolgend beschriebenen Auswahlfenster können die Konfigurationen vorgenommen werden. Nach Fertigstellung der Konfiguration erstellt die Instanz alle notwendigen Ressourcen für das Lesen der Daten.
![]() | VI vor Nutzung des ADS FlexDAQ VI speichern Das ADS FlexDAQ VI speichert die Konfiguration einer Instanz im Pfad des aktuellen Projekts. Daher ist es erforderlich, dass das Projekt zuvor gespeichert wird. |
ADS FlexDAQ VI beschleunigt öffnen
- Die Bibliothek muss vorkompiliert sein.
- 1. Öffnen Sie in den LabVIEW™ Einstellungen unter Tools > Advanced die Einstellungen für „Mass Compile“.
- 2. Wählen Sie den Ordner der Bibliothek des TwinCAT 3 Interfaces for LabVIEW™ aus, z. B. C:\Program Files\ National Instruments\LabVIEW 2023\user.lib\Beckhoff-LabVIEW-Interface .
- 3. Starten Sie „Mass Compile“.

Eingang/Ausgang | Bedeutung |
---|---|
[1] Reader Handles | Handles auf die lesenden Symbole |
[20] Handle | Handle auf den ADS-Client |
[26] Selection | LabVIEW™-Cluster bestehend aus zwei Elementen:
|
![]() | Generierung von TwinCAT-3-Datentyp Um alle Notification Modi zu unterstützen, werden alle generierten Typen in Arrays umgewandelt. So werden Notifications Buffered ebenso wie Notifications Single in gleicher Art und Weise unterstützt. |
Symbol-Auswahl-Fenster
Genauso wie beim ADS DAQ, werden mit Hilfe des Symbol-Auswahl-Fensters die ADS-Symbole ausgewählt, die mit der ADS Flex DAQ Instanz gelesen werden sollen. Zusätzlich gibt es die Option Import Configuration, mit Hilfe derer eine gespeicherte Konfiguration importiert werden kann. Dazu öffnet sich ein LabVIEW™-Datei-Dialogfeld, in dem ein Pfad zu einer exportierten Konfiguration ausgewählt werden kann.

Notification und Loop-ID-Auswahl-Fenster
In diesem Fenster werden der Notification Mode und die Loop-ID ausgewählt. Die möglichen Notification Modi können im Abschnitt ADS DAQ nachgelesen werden. Mit der Loop-ID wird das Lesen der Symbole auf while-Schleifen verteilt. Beim ADS Flex DAQ besteht die Möglichkeit, mehreren Symbolen die gleiche Loop-ID zuzuweisen. Diese werden dann in der gleichen while-Schleife verarbeitet. Somit wird die Anzahl der Schleifen reduziert.

![]() | Maximale Loop-IDs Die Anzahl der Eingänge ist bei der ADS Flex DAQ Instanz auf 23 begrenzt. Folglich können auch maximal 23 verschiedene Loop-IDs zugewiesen werden. |
Speichern von Messdaten
Für jedes Symbol gibt es die Option „Save To TDMS“, mit der das jeweilige Symbol beim Lesen aus TwinCAT in einer TDMS-Datei gespeichert wird. Hierzu wird der Block ADS DAQ genutzt.

Automatisch generierter Code im Blockdiagramm
Nachfolgend werden exemplarisch zwei Varianten des automatisch generierten Codes erläutert.
Im ersten Beispiel wird das ADS FlexDAQ VI mit Default-Einstellungen generiert, d. h. Buffered Type Resolved Queue, keine Speicherung von Messdaten, Start mit LabVIEW™ Run, Stop mit LabVIEW™ Stop. Gelesen wird ein ADS-Symbol MAIN.aAM.

- 1: Für die ausgewählten ADS-Symbole werden ADS Reader-Handles initialisiert. Die ADS Reader-Handles werden bei jeder neuen Konfiguration des ADS FlexDAQ VI neu generiert. Die obsoleten Reader-Handles werden automatisch aus dem Speicher freigegeben.
- 2: Von der Instanz des ADS FlexDAQ geht ein Handle von Simpe Queue1 auf die darunterliegenden Queue-Blöcke. Die Queue des ADS FlexDAQ VI beinhaltet bereits Type-Resolved-Datenpakete. Jedes Datenpaket ist von der Größe LvBufferSize (vgl. Einstellungen in den Kommunikations-Modi), da Buffered Type Resolved Queue konfiguriert wurde.
- 3a: Die Queue wird mit einem LabVIEW™ Cluster, Read Package, initialisiert. Der Cluster beinhaltet ein Data Array als Variant (TypeResolved ADS-Notification Daten) und ein Nummerisches Array (Notification Zeitstempeln) als Elemente.
- 3b: While-Schleife mit Startbedingung „LabVIEW™ Run“ und ohne Endbedingung.
- 3b.1: Dequeue-Element: Wartet auf empfangene Datenpakete für eine unendliche Zeit (anpassbar).
- 3b.2: Unbundle-Element: Teilt das Cluster in Daten- und ADS-Zeitstempel auf.
- 3b.3: For-Schleife: Entnimmt die einzelnen Elemente des Variant Arrays und konvertiert den Datentyp in den entsprechenden LabVIEW™-Datentyp. Hier kann der Nutzer beispielsweise direkt auf den umgewandelten Typ zugreifen und damit weiterarbeiten.
- 3c und 3d: Der Queue-Speicher wird freigegeben. Danach wird die Queue aus dem LabVIEW™-Speicher freigegeben. Optional kann der Nutzer nach diesen Schritten das ADS-Client-Handle aus dem Speicher freigeben.
Im zweiten Beispiel wird die Startbedingung von LabVIEW™-Run auf „Trigger on LabVIEW™ Event“ geändert und das Speichern der Daten in eine TDMS-Datei aktiviert. Es werden zwei Symbole gelesen: MAIN.aAM und MAIN.aSine. Diesen wird die gleiche Loop-ID zugewiesen. Somit werden beide Symbole in der gleichen while-Schleife gelesen.

Die bereits im ersten Beispiel beschrieben Blöcke 1a, 2, 3b, 3b.2, 3b.4, 3c und 3d bleiben in ihrer Funktion identisch.
- 1b: Es wird eine Logik erstellt, die bei einer boolschen Wertänderung ein Trigger-Event generiert. Dieses wird genutzt, um die ADS-Notifications zu starten.
- 3a: Die Queue wird mit einem LabVIEW™ Cluster als Datentyp initialisiert mit den Member Variablen:
- SymbolName: Identifiziert das gelesene Datenpaket
- Data: TypeResolved ADS-Notification-Datenpaket
- Timestamp: ADS-Notification Zeitstempeln
- 3b.2: Das gelesene Datenpaket wird entpackt und an die entsprechende Case-Struktur verteilt.
- 3b.3: Case-Struktur, die die ADS-Daten für die entpackten Symbol-Daten an LabVIEW™ weiter gibt. Im Beispiel verwaltet die Case-Struktur zwei ADS Symbol MAIN.aAM und MAIN.aSine.
- 3b.5: Der TDMS-Block wird automatisch generiert aufgrund der Einstellung, dass die Daten gespeichert werden sollen. Die zu speichernden Daten sind automatisch mit dem To Variant-Block verknüpft. Sollten die empfangenen Daten einem LabVIEW™-Signal entsprechen, können diese vor dem To Variant in eine LabVIEW™-Waveform umgewandelt werden. Der Nutzer kann dazu die automatisch generierte Konstante dt nutzen, welche dem zeitlichen Abstand zweier Datenpunkte entspricht (Abtastperiodendauer).
- 3e: Initialisierung des Handles auf die TDMS-Datei.