Remote Zugriff auf den Eventlogger mittels PLC
Auf den Eventlogger eines Systems kann von einem anderen, entfernten System zugegriffen werden.
Dieses bietet die unter „Usermode API“ beschriebene Schnittstelle an. Hierbei erstellen Nutzer eigene (Usermode-)Programme, die über eine ADS-Route (und damit ggf. auch über Netzwerk) mit dem Eventlogger eines anderen Systems kommunizieren.
![]() | Verfügbar mit TwinCAT 3.1 4026 Die folgende Funktionalität steht ab TwinCAT 3.1 Build 4026 bereit. |
Die SPS bietet zusätzlich die Möglichkeit des Zugriffs über Netzwerk mittels der Funktionsbausteine in dem Ordner „RemoteEventlogger“ der SPS-Bibliothek. Die bereitstehenden Funktionen werden hier beschrieben.
Verbindungsaufbau
Zuerst wird eine Verbindung zum entfernten System aufgebaut:
VAR
sNetIdTarget : T_AmsNetID; //the AmsNetId of the remote system
fbRemoteLogger : FB_TcRemoteEventLogger;
END_VAR
hr := fbRemoteLogger.Connect(sNetId:=sNetIdTarget);
Dieses kann zyklisch erfolgen, was bei einem Verbindungsabbruch den Wiederaufbau initiiert.
Die Verbindung kann wieder beendet werden:
VAR
fbRemoteLogger : FB_TcRemoteEventLogger;
END_VAR
hr := fbRemoteLogger.Disconnect();
Der Zustand kann überwacht werden:
hr := fbRemoteLOgger.hrConnect;
Um Nachrichten von einem entfernten System zu empfangen, muss ein Funktionsbaustein implementiert werden, der FB_RemoteListenerBase
erweitert:
FUNCTION_BLOCK FB_RemoteListener EXTENDS FB_RemoteListenerBase
Neben den aus dem FB_ListenerBase2
bekannten Callback-Methoden OnMessageSent
usw. erhält dieser Funktionsbaustein folgende Methoden, die speziell für die Remotefunktionalität zuständig sind:
OnEventLoggerError
(): Wird aufgerufen, wenn der entfernte Eventlogger einen Fehlercode als HRESULT liefert.OnConnectionStateChanged
(): Diese Methode wird aufgerufen, wenn sich der Verbindungsstatus ändert. Er stellt die jeweilige Änderung als EnumTcRemoteConnectionChangeReason
bereit.
Mithilfe eines solchen Bausteins können die Nachrichten empfangen werden, indem eine Anmeldung stattfindet:
hr := fbListener.Subscribe(fbRemoteLogger, 0);
Entsprechend gibt es auch eine Möglichkeit diese Anmeldung rückgängig zu machen:
hrUnsubscribe:= fbListener.Unsubscribe();
Der Funktionsbaustein FB_TcRemoteEventLogger stellt ansonsten äquivalente Funktionen zu der lokalen Variante FB_TcEventLogger bereit. Überwachen Sie bei der Nutzung den Verbindungszustand.