Daten kontinuierlich lesen
Beim kontinuierlichen Lesen einer Zeitreihe aus TwinCAT bekommt der Client in LabVIEW™ kontinuierlich Datenpakete vom ADS-Server. Die Datenpakete können einerseits im Polling-Verfahren zyklisch und andererseits als ADS-Notification event-basiert angefragt werden. Beide Varianten werden im Folgenden erläutert.
Lesen mit Polling-Zyklus
Einfaches Lesen
Beim Polling sendet der Client in einem definierten Zeitabstand Anfragen an den Server. Dies kann beispielsweise mit Hilfe der Low-Level VIs einfach aufgebaut werden. Der ADS-Reader wird nur einmal initialisiert und fragt mit jedem Zyklus der Schleife ein neues Datenpaket aus TwinCAT an. Mit jedem Zyklus wird eine neue Anfrage an den Server gesendet und auf eine entsprechende Antwort gewartet. Nach Erreichen der Abbruchbedingung der Schleife wird der ADS-Reader freigegeben. Das Bild unten zeigt die vollständige Vorgehensweise in LabVIEW™.

Beispiel in LabVIEW™: Grundlegende Beispiele
Das Verfahren ist fehleranfällig in der Hinsicht, dass nicht garantiert werden kann, dass ein sich zyklisch ändernder Wert in der SPS lückenfrei gesampled wird. Für diesen Use Case wird empfohlen, mit E-Notifications zu arbeiten, welche im Folgenden beschrieben sind.
Lesen mit LVB-Notification
Im Vergleich zu Ereignisgesteuertes Lesen, können die ADS-Notifications auch mit einem bestimmten Polling-Zyklus kontinuierlich gelesen werden. Das Lesen geschieht in diesem Fall asynchron, wie beschrieben in der Grafik unten. Hier werden die ADS-Notifications von dem Thread1 registriert und in den LVBuffer geschrieben. Später wird der LVBuffer mit dem Thread2 gelesen.

Im Gegenteil zu Notification E-Buffered werden in diesem Fall keine LabVIEW™-Events eingesetzt. Der LabVIEW™-Nutzer hat dementsprechend einen direkten Zugriff auf den LVBuffer. In LabVIEW™ sieht das Blockdiagramm wie folgt aus:

Beispiele in LabVIEW™: Read Notification-LVBuffer Multiple
Das Blockdiagramm nutzt die LVBuffer Blöcke (siehe LVBuffer):
- Init LVBuffer Handle
- Read From LVBuffer
- LVBuffer Status
- Release LVBuffer Handle
Das Blockdiagramm nutzt die ADS Notification Blöcke:
Hinweis | |
Polling-Zyklus Wenn der Polling-Zyklus langsamer als die Notification-Cycle-Time ist, kann der LVBuffer volllaufen und dadurch Samples verloren gehen. |