Client - GOOSE Subscriber (ohne Client-Server-Kommunikation)
In einem Client Projekt wird von dem TwinCAT Telecontrol Configurator standardmäßig auch ein Client-Baustein generiert (siehe: „Allgemeine Client -Projektstruktur“). Der Client-Baustein kann dann z.B. dazu verwendet werden, um den GOOSE-Publisher auf der Serverseite via Client-Server-Dienste wie „GetGoCBDataValues“ oder „SetGoCBDataValues“ zu aktivieren/deaktivieren oder die GoCBs zu konfigurieren. In manchen Fällen soll aber auf eine Client-Server-Kommunikation mit dem Gerät verzichtet werden und nur ein „reiner“ GOOSE Subscriber implementiert werden. Ein solcher Subscriber kann nach dem SPS-Programmstart automatisch mit dem Empfang der GOOSE-Nachrichten beginnen. Dieses Beispiel zeigt die Implementierung eines Subscribers, aber ohne den Client-Server-Kommunikationsteil. Die nicht benötigten Teile des Client-Projekts wurden in diesem Beispiel bewusst entfernt.
Download TwinCAT XAE Project (*.zip): Sample13.zip
In der globalen Variablenliste wird eine IED-Datenmodell-Bausteininstanz („fbIED“) und eine oder mehrere GSE-Bausteininstanzen für GOOSE-Kommunikation und GSE-Management („fbIEDGse“) benötigt. Dieses Beispiel verwendet nur einen Netzwerkadapter für die GOOSE-Kommunikation und drei GoCBs im IED-Datenmodell.
Namensraum: TcTelecontrol
Typ: Globale Variablenliste (GVL)
VAR_GLOBAL
ipCreator : I_AcsiCodeCreatorClass := GVL_AcsiVars.Creator.SetCodeRev(codeRev:=2).SetGuiVer(major:=1, minor:=0, build:=93, revision:=10);
fbIED : FB_IED_IED;
fbIEDGse : FB_IEDGse := (fbAdapter:=(ipIED:=fbIED, settings:=(sMulticastAddr:='01-0C-CD-01-00-01', eDispatchMode:=E_GseDispatchMode.NonPromiscuous)));
END_VAR
Das „MAIN“-Programm wird zyklisch von einer TwinCAT Task aufgerufen und muss nur das Programm „P_IEC61850MAIN“ aufrufen. „P_IEC61850MAIN“ ruft wiederum den GSE-Baustein auf, der für den Empfang der GOOSE-Nachrichten und das Mapping der empfangenen GOOSE-Daten ins IED-Datenmodell zuständig ist.
PROGRAM MAIN
VAR
END_VAR
P_IEC61850MAIN();
PROGRAM P_IEC61850MAIN
VAR
END_VAR
fbIEDGse();
In der Beispielimplementierung des GSE-Bausteins wird der Subscriber-Prozess bei allen drei GoCBs nach dem SPS-Start automatisch aktiviert. Eine steigende Flanke an der „bUnsubscribe“-Variablen deaktiviert den Subscriber-Prozess der GoCBs.
FUNCTION_BLOCK FB_IEDGse IMPLEMENTS I_GseLinkStatusEventSink
VAR_INPUT
fbAdapter : FB_GseAdapterClass := (ipLinkStatus:=THIS^);
END_VAR
VAR
eLinkStatus : E_GseLinkStatus;
bSuccess : BOOL;
ipError : I_ServiceErrorClass;
bSubscribe : BOOL := TRUE;
bUnsubscribe : BOOL;
END_VAR
bSuccess:= fbAdapter.Execute(ipError=>ipError);
IF bSubscribe THEN
bSubscribe:= FALSE;
bSuccess:= fbIED.IEDLD1.LLN0.gocb01.Subscriber.Enable(ipAdapter:=fbAdapter, ipError=>ipError);
bSuccess:= fbIED.IEDLD1.LLN0.gocb02.Subscriber.Enable(ipAdapter:=fbAdapter, ipError=>ipError);
bSuccess:= fbIED.IEDLD1.LLN0.gocb03.Subscriber.Enable(ipAdapter:=fbAdapter, ipError=>ipError);
ELSIF bUnsubscribe THEN
bUnsubscribe:= FALSE;
bSuccess:= fbIED.IEDLD1.LLN0.gocb01.Subscriber.Disable(ipError=>ipError);
bSuccess:= fbIED.IEDLD1.LLN0.gocb02.Subscriber.Disable(ipError=>ipError);
bSuccess:= fbIED.IEDLD1.LLN0.gocb03.Subscriber.Disable(ipError=>ipError);
ELSE
bSuccess:= fbIED.IEDLD1.LLN0.gocb01.Subscriber.Execute(ipError=>ipError);
bSuccess:= fbIED.IEDLD1.LLN0.gocb02.Subscriber.Execute(ipError=>ipError);
bSuccess:= fbIED.IEDLD1.LLN0.gocb03.Subscriber.Execute(ipError=>ipError);
END_IF
Der GSE-Baustein implementiert die „I_GseLinkStatusEventSink“-Schnittstelle. Die Methode: „OnLinkStatusChange“ gehört zu dieser Schnittstellenimplementierung und wird immer dann aufgerufen, wenn sich der Status der Netzwerkverbindung (am Netzwerkadapter) ändert. Die SPS-Applikation kann z. B. den Netzwerkverbindungsstatus via „eLinkStatus“-Variable abfragen oder überprüfen.
METHOD OnLinkStatusChange
VAR_INPUT
ipAdapter : I_GseAdapterClass;
eStatus : E_GseLinkStatus;
END_VAR
VAR
END_VAR
eLinkStatus:= eStatus;
Im Projektbaum unter dem Zweig I/O-Device finden Sie eine Netzwerkadapterinstanz mit dem Namen „GSE (RT-Ethernet Adapter)“. Diese Adapterinstanz muss entsprechend konfiguriert werden, d.h. die I/O-Konfiguration muss an die vorhandene Hardware und auf die Zielplattform, auf der das Projekt laufen soll, angepasst werden.
Eine erneute I/O-Konfiguration ist auch dann nötig, wenn Sie die Zielplattform wechseln. Diese Konfiguration muss manuell in TwinCAT XAE vorgenommen werden. Zusätzlich zu der I/O-Konfiguration des Netzwerkadapters muss ein Link zwischen dem Netzwerkadapter und den SPS-Bausteinen für die Goose-Kommunikation hergestellt werden. Mit dem Link können die vom Netzwerkadapter empfangenen Daten an die Instanz des Funktionsbausteins: „FB_[IEDName]Gse“ weitergeleitet werden. In umgekehrter Richtung kann die Instanz des Funktionsbausteins „FB_[IEDName]Gse“ die zu sendenden Daten an den Netzwerkadapter weiterleiten.
Hier finden Sie weitere Informationen: RT – Ethernet Adapter Konfiguration.