Client - SBO Control with enhanced security

Dieses Beispiel zeigt die exemplarische Implementierung des Befehls: Anwahl-vor-Ausführung-mit-erweiterter-Sicherheit (ctlModel := 4, select before operate control with enhanced security) in einem TwinCAT IEC 61850 Client-Projekt für folgende Datenklassen der Schaltersteuerung (Common Data Class, CDC):

Download TwinCAT XAE Project (*.zip): Sample07.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ü die Implementierung der Befehle: Anwahl-vor-Ausführung-mit-erweiterter-Sicherheit wird ein zusätzlicher, selbstimplementierter Funktionsbaustein benötigt. Im Beispiel wurde dafür ein neuer Funktionsbaustein: „FB_SBOwControl“ hinzugefügt. Der Funktionsbaustein: „FB_SBOwControl“ 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_SBOwControl“-Funktionsbausteins die Befehlsausführung des Clients aktivieren. Um sämtliche Zustände des SBO-Befehls (SBO = select before operate) zu berücksichtigen, wird hier ein Enum zur Aktivierung verwendet. Sobald eines der Enums, z. B. „eControl_LLN0_Mod“ nicht „E_AcsiCtlService.None“ ist, wird der Befehl aktiviert. 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 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 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 CDC. Zu Demonstrationszwecken wird z. B. ein Zahlenwert hochgezählt oder ein boolescher Wert getoggelt. 

Abhängig von dem Enum-Wert zum Auslösen eines Befehls ändert sich die Ausführung. Das Enum kann folgende Werte annehmen: None, Select, Operate, Select&Operate, Cancel. Bei Select, Operate und Cancel wird nur ein Befehl ausgeführt. Bei Select & Operate wird zuerst ein Select-Befehl durchgeführt, sobald dieser erfolgreich abgeschlossen wurde beginnt der Operate-Befehl. Der Benutzer kann sich für eine dieser Möglichkeiten beim Umschalten des Enums in den Online-Werten entscheiden.

Sobald bei einem der Enum-Werte eine Änderung erfolgte, wird die jeweilige Methode, passend zum CDC-Typ, ausgerufen. Wenn dies erfolgreich beendet wurde, wechselt die Statemachine in den State 11. Dies ist notwendig, da die Bearbeitung der Befehle länger als einen Zyklus in der SPS benötigen. Innerhalb dieses States wird die „Execute“-Methode zyklisch aufgerufen. 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.

Im Gegensatz zu dem Sample05 mit der beispielhaften Implementierung zu „Select before operate control with normal security“ erhält der Benutzer beim erfolgreichen Ausführen des „Select before operate with enhanced security“ das Event „OnCommandTerminationInd“ am „FB_IEDClient“-Funktionsbaustein. Falls beim Ausführen des Befehls ein Fehler auftritt erhält der Benutzer das Event „OnLastApplErrorInd“.

Client - SBO Control with enhanced security 1:

Dies ist nur eine exemplarische Implementierung der Befehle: Anwahl-vor-Ausführung-mit-erweiterter-Sicherheit in der TwinCAT SPS.