Client - Basis Beispielprojekt
Dieses Beispiel zeigt die grundlegende TwinCAT Implementierung der Kommunikation eines TwinCAT IEC 61850 Clients und die Verwendung einiger Methoden, um Daten von einem Server zu lesen. Die GOOSE-Komponenten und Reporting sind in diesem Beispiel nicht enthalten, um es einfach halten zu können. Diese und andere Funktionalitäten werden in separaten Beispielen behandelt. Der hier implementierte Client versucht nach dem SPS-Programmstart eine Verbindung zum Server mit der Host-Adresse: „127.0.0.1“ und Portnummer: 102 aufzubauen. Diese Werte können im SPS-Beispielcode anpasst werden. Die SPS-Entwicklungsumgebung wird beim Übersetzen eine Warnung mit einem Hinweis dazu ausgeben. Ein Doppelklick auf diese Meldung leitet Sie zu der entsprechenden Stelle im SPS-Code.
Download TwinCAT XAE Project (*.zip): Sample01.zip
Das hier beschriebene Beispiel nutzt die Statemachine, welche in dem Kapitel „Allgemeine Client - Projektstruktur“ beschrieben ist. Die States: 0,1,11 und 100 sind identisch zu der dort beschriebenen Statemachine. Andere States wurden für das Beispiel modifiziert oder auch neue States hinzugefügt.
Im State 10 sind mehrere IF-Anweisungen aufgeführt, welche Befehle (Methodenaufrufe) des Client-Bausteins aktivieren. Durch eine steigende Flanke an einer der booleschen Variablen in der IF-Anweisung wird der Befehl aktiviert und die entsprechende Client-Methode aufgerufen. Zur Testzwecken kann der Benutzer in der Online-Ansicht die Werte der booleschen Variablen auf „TRUE“ setzen und die Befehlsabarbeitung auf diese Weise auslösen.
Nach der erfolgreichen Abarbeitung eines Befehls wird die Statemachine in den State 0 versetzt. Falls mehrere der booleschen Variablen auf „TRUE“ gesetzt wurden, wird die oberste IF-Anweisung mit dem jeweiligen Befehl zuerst bearbeitet. Je häufiger und komplexer die Befehle, die an den Server gesendet werden, desto länger benötigt der Client, um diese abzuarbeiten.
In der folgenden Tabelle sind einige der booleschen Variablen aufgelistet. Zudem sind die Methodennamen und eine Beschreibung der Funktionalität enthalten.
Befehle im Sample01
Variablenname | Methodenname | Beschreibung |
---|---|---|
bGetServerDirectory | GetServerDirectoryReq | Gibt eine Liste aller logischen Geräte (Logical Devices) eines IEDs (Intelligent Electronic Device) zurück. |
bGetLogicalDeviceDirectory | GetLogicalDeviceDirectoryReq | Gibt eine Liste aller logischen Knoten (Logical Nodes) innerhalb eines logischen Gerätes (Logical Device) zurück. |
bGetLogicalNodeDirectory | GetLogicalNodeDirectoryReq | Gibt eine Liste von allen Instanzen einer bestimmten logischen Knoten Klasse (Logical Node Class) wieder. In unserem Beispiel ist es die Klasse: „E_AcsiLogicalNodeClass.DataSet“. |
bGetAllServerValues | GetAllServerValuesReq | Liest alle Datenwerte des angegebenen IEDs. |
bGetAllDataValues_LLN0_ST | GetAllDataValuesReq | Liest alle Datenwerte eines angegebenen logischen Knoten (Logical Node) und der angegebenen funktionalen Gruppe (Functional Constraint). |
bGetDataValues_LLN0_ST_Beh | GetDataValuesReq | Liest alle Datenwerte eines angegebenen Datenobjekts (Data Object) und der angegebenen funktionalen Gruppe (Functional Constraint). |
Die Benennung der booleschen Variablen ist beispielhaft und kann beliebig angepasst werden. Sie soll nur verdeutlichen, welche Werte durch das Anschalten der Variablen gelesen werden können.