Heartbeat
In diesem Kapitel finden Sie eine Beschreibung der VIs, mit denen Sie eine Heartbeat-Verbindungsüberwachung zwischen LabVIEWTM und TwinCAT erstellen können. Weitere Informationen zu den Parametern finden Sie im Abschnitt Heartbeat Connection Monitoring in der technischen Einführung. Die Verbindungsüberwachung kann aus folgenden Low-Level VIs erstellt werden:
- Init Heartbeat
- Run Heartbeat
- Stop Heartbeat
- Release Heatrbeat
- Get RTD Estimate
Außerdem enthält der Ordner das Heartbeat Grund-VI, in dem die Verbindungsüberwachung zu einem VI zusammengefasst ist.
![]() | Systemvoraussetzung Die Heartbeat-Funktion ist ab TwinCAT 3.1 Build 4026 verfügbar. |
Init Heartbeat
Der Block „Init Heartbeat“ erstellt eine Heartbeat-Instanz. Basierend auf dem Client-Handle (siehe Init) wird für jedes registrierte Target gescannt, ob eine Instanz vom FB_Heartbeat vorhanden ist. Ist dies der Fall, wird für jedes gefundene Heartbeat eine Verbindungsüberwachung vorbereitet. Wird an keinem Target eine Instanz vom FB_Heartbeat gefunden, gibt das VI den Fehler -8114 zurück.
![]() | FB_Heartbeat Der Funktionsbaustein FB_Heartbeat kann in der Bibliothek Tc3_HeartbeatConnectionMonitoring gefunden werden und muss in dem Projekt, zu dem eine Verbindungsüberwachung aufgebaut wird, angelegt und aufgerufen werden. |
Außerdem erstellt der Block ein Heartbeat-Event. Dieses kann im weiteren Verlauf genutzt werden, um den Zustand der Verbindung abzufragen. Sobald sich der Status der Verbindung ändert, wird ein Heartbeat-Event erzeugt. Das Heartbeat-Event verfügt über folgende Event-Daten:
- HeartbeatHandle: Handle zu der Heartbeat-Instanz von der das Event erzeugt wurde.
- TargetAddr: String, der die AMS-Adresse (NetId:Port) des Targets enthält, von dem das Heartbeat-Event ausgelöst wurde.
- Connection State: Enum, der den Grund für das Auslösen des Heartbeat-Events angibt.
- Waiting: Heartbeat initialisiert, Connection-Monitoring (noch) nicht gestartet.
- Connected: Connection-Monitoring gestartet.
- Timeout detected: Connection-Monitoring hat eine Unterbrechung detektiert.
- Stopped: Connection-Monitoring wurde gestoppt.
- Error: Bei dem Connection-Monitoring ist ein Fehler aufgetreten (Fehler-Code wird am Heartbeat Ausgang bereitgestellt. Wird mehr als ein Target überwacht, wird nur das Connection-Monitoring zum entsprechenden Target gestoppt; die anderen laufen weiter).
- Reserved: reserviert (ignorieren)

Eingang/Ausgang | Bedeutung |
---|---|
[0][4] Handle | Handle zum ADS-Client |
[5] PollingTime in ms | Parameter Polling-Zeit in ms |
[6] HeartbeatHandle | Handle zur Heartbeat-Instanz |
[7] UseRtdEstimation? | Parameter UseRtdEstimation |
[9] Offset in ms | Parameter Offset |
[10] HeartbeatEvent | User Event Refnum auf das erzeugte Heartbeat Event |
Run Heartbeat
Der Block Run Heartbeat dient dazu, das Connection-Monitoring zu starten und kontinuierlich auszuführen. Dieser Block wird so lange ausgeführt, bis das Connection-Monitoring mit dem Stop Heartbeat gestoppt wird.

Eingang/Ausgang | Bedeutung |
---|---|
[0][4] Handle | Handle zum ADS-Client |
[5][6] HeartbeatHandle | Handle zur Heartbeat Instanz |
Stop Heartbeat
Der Block Stop Heartbeat dient dazu, das Connection-Monitoring zu stoppen.

Eingang/Ausgang | Bedeutung |
---|---|
[0][4] HeartbeatHandle | Handle zur Heartbeat-Instanz |
Release Heartbeat
Der Block Release Heartbeat gibt das Handle auf das Heartbeat Connection-Monitoring aus dem Speicher frei.

Eingang/Ausgang | Bedeutung |
---|---|
[0][4] Handle | Handle zum ADS-Client |
[5] HeartbeatHandle | Handle zur Heartbeat Instanz |
Get RTD Estimate
Der Block Get RTD Estimate gibt die aktuelle (maximale) Roundtrip-Delay (RTD) Schätzung zum ausgewählten Target zurück. Das Target kann über den „TargetAddr“ String ausgewählt werden. Ist der String leer, wird automatisch das zuerst gefundene Target ausgewählt. Um diesen Block zu nutzen, ist es erforderlich, das Heartbeat Connection-Monitoring auszuführen (siehe zuvor beschriebene VIs).

Eingang/Ausgang | Bedeutung |
---|---|
[0][4] Handle | Handle zum ADS-Client |
[5][6] HeartbeatHandle | Handle zur Heartbeat-Instanz |
[7][8] TargetAddr | String mit der Addresse des Targets |
[10] RTDEstimate | Schätzung des maximalen RTDs in ms |
Heartbeat
Der Block Heartbeat nutzt intern die Blöcke Init Heartbeat, Run Heartbeat, Stop Heartbeat und Release Heartbeat, um mit nur einem Block den Einsatz des Heartbeat Connection-Monitorings zu ermöglichen. Der Heartbeat Block dient außerdem als Illustration dafür, wie das Heartbeat Connection-Monitoring eingesetzt und bearbeitet werden kann.
Das Heartbeat Connection-Monitoring wird kontinuierlich ausgeführt, bis es über ein Control gestoppt wird. Detektiert die Verbindungsüberwachung eine Unterbrechung (Timeout), wird versucht, ein VI (vi path timeout detected) aufzurufen. Ist der Aufruf des VIs nicht möglich, wird der Block und das Heartbeat Connection-Monitoring gestoppt. Am Ausgang des VIs wird dann über Timeout detected und die TargetAddr angezeigt, zu welchem Target eine Unterbrechung detektiert wurde. Bei mehreren Unterbrechungen wird nur die erste Unterbrechung angezeigt.

Eingang/Ausgang | Bedeutung |
---|---|
[0][4] Handle | Handle zum ADS-Client |
[1] Stop Heartbeat | Referenz auf ein Boolean Control, über das die Ausführung des Heartbeat VIs beendet wird. |
[2] vi path timeout detected | Pfad zu einem VI, das aufgerufen werden soll, falls eine Verbindungsunterbrechung detektiert wird. |
[5] PollingTime in ms | Parameter Polling-Zeit in ms |
[6] TargetAddr | String, der angibt, zu welchem Target der mögliche Timeout gehört. |
[7] UseRtdEstimation? | Parameter UseRtdEstimation |
[9] Offset in ms | Parameter Offset |
[10] Timeout detected | Gibt an, ob eine Verbindungsunterbrechung detektiert wurde. |