Client - Direct Control with normal security

Dieses Beispiel zeigt die exemplarische Implementierung der Direktbefehle (ctlModel := 1, direct control with normal security) in einem TwinCAT IEC 61850 Client-Projekt für folgende Datenklassen der Schaltersteuerung (Common Data Class, CDC):

Download TwinCAT XAE Project (*.zip): Sample04.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.

Für die Implementierung der direkten Befehle wird ein zusätzlicher, selbstimplementierter Funktionsbaustein benötigt. Im Beispiel wurde dafür ein neuer Funktionsbaustein: „FB_DirectControl“ hinzugefügt. Der Funktionsbaustein: „FB_DirectControl“ wickelt die eigentliche Befehlsausführung für die unterschiedlichen CDC-Typen ab. Im modifizierten State 10 vom „FB_IEDClient“ sind mehrere IF-Anweisungen aufgeführt, welche über die Instanz des „FB_DirectControl“-Funktionsbausteins die Befehlsausführung des Clients aktivieren. Im Deklarationsteil von „FB_IEDClient“ sind mehrere boolesche Variablen definiert. Eine steigende Flanke an der entsprechenden booleschen Variablen aktiviert in der IF-Anweisung die Befehlsausführung. Dies kann der Benutzer über die Online-Werte der Applikation auslösen.

Methoden des "FB_DirectControl"-Funktionsbausteins

Methodenname

Beschreibung

APC

BAC

BSC

DPC

ENC_Mod

INC

ISC

SPC

Für jeden steuerbaren CDC-Typ ist eine Methode hinzugefügt worden, da die meisten CDCs unterschiedliche Kontrollwert-Typen verwenden, z. B. „APC“ -> „REAL“ und „SPC“ -> „BOOL“. Weil die CDCs unterschiedliche Typen verwenden, besitzt auch jede dieser Methoden für den Kontrollwert (z. B. „ctlVal“) einen anderen Eingangsparameter. Innerhalb der Methode wird der Wert auf einen Union-Typ geschrieben, welches für jeden CDC-Typ einen Member enthält. Die Union-Variable wird an die „Request“-Methode übergeben. Die „Request“-Methode ist eine private Methode und sie aktiviert die Befehlsausführung.

Execute

Sobald die „Request“-Methode des Funktionsbausteins erfolgreich aufgerufen wurde, muss die „Execute“-Methode in jeden Zyklus aufgerufen werden. Innerhalb dieser Methode befindet sich eine separate Statemachine, welche unabhängig von der Statemachine im Client-Funktionsbaustein arbeitet. Hierdurch wird der Code in kleinere Abschnitte aufgeteilt und kann in Zukunft besser erweitert werden.

Clear

Bricht den Befehl ab und setzt den Funktionsbaustein zurück.

Der Befehl, abhängig vom CDC-Typen, modifiziert den Kontrollwert des CDCs. Zu Demonstrationszwecken wird, z. B. ein Zahlenwert hochgezählt oder ein boolescher Wert getoggelt.

Sobald einer der Befehle ausgelöst und erfolgreich abgearbeitet wurde, wird die Statemachine des „FB_IEDClient“-Funktionsbausteins in den State 11 versetzt. Hier verweilt die Statemachine, bis der Befehl erfolgreich durchgeführt wurde. Dafür wird in dem State 11 die „Execute“-Methode in jedem Zyklus aufgerufen und anhand des „ipResult“-Schnittstellenzeigers kann ermittelt werden, ob der Befehl noch bearbeitet wird oder bereits abgeschlossen ist. Dies wird über die „IsBusy()“-Methode abgefragt. Sobald der Befehl erfolgreich durchgeführt wurde, wechselt die Statemachine in den State 0.

Client - Direct Control with normal security 1:

Dies ist nur eine exemplarische Implementierung der Direktbefehle in der TwinCAT SPS.