Deklaration eines Funktionsbausteins in ST
FUNCTION_BLOCK (* optional_begin *) FINAL|ABSTRACT (* optional_end *) FB_name_2 (* optional_begin *) USING Namespace_1; USING Namespace_2; (* optional_end *) (* optional_begin *) EXTENDS FB_name_1 (* optional_end *) (* optional_begin *) IMPLEMENTS interface_1, interface_2, ... interface_n (* optional_end *) (* optional: declaration of variables/instances *) (* optional: declaration of methods *) (* optional: body of function block *) END_FUNCTION_BLOCK
Bedeutung |
---|
Deklaration eines →Funktionsbausteins, wobei logi.CAD 3 unterstützt die folgenden Varianten an Funktionsbausteinen:
Die Schlüsselwörter
Die Das Schlüsselwort
Das Schlüsselwort
|
FUNCTION_BLOCK Control END_FUNCTION_BLOCK
INTERFACE ISwitch (* Deklaration des 1. Interfaces *) METHOD SwitchState VAR_INPUT STATE : BOOL; END_VAR END_METHOD END_INTERFACE INTERFACE IValve (* Deklaration des 2. Interfaces *) METHOD Open END_METHOD END_INTERFACE FUNCTION_BLOCK MySwitch IMPLEMENTS ISwitch, IValve VAR switchState : BOOL; valveOpen : BOOL; END_VAR METHOD PUBLIC SwitchState VAR_INPUT STATE : BOOL; END_VAR switchState := STATE; END_METHOD METHOD PUBLIC Open valveOpen := TRUE; END_METHOD END_FUNCTION_BLOCK
FUNCTION_BLOCK LightRoom (* der Basis-Funktionsbaustein "LightRoom" *) VAR Light : BOOL; END_VAR VAR_INPUT Daytime : BOOL; END_VAR METHOD PUBLIC M1 : INT m1:=2; END_METHOD Light := NOT(Daytime); END_FUNCTION_BLOCK FUNCTION_BLOCK FB_A METHOD PUBLIC m1 : INT m1 := 1; END_METHOD END_FUNCTION_BLOCK FUNCTION_BLOCK Light2Room EXTENDS LightRoom (* der abgeleitete Funktionsbaustein "Light2Room" *) VAR Light2 : BOOL; // 2. Licht Inst1 : FB_A; v1, v2, v3 : INT; END_VAR METHOD PUBLIC OVERRIDE M1 : INT m1 := 3; END_METHOD METHOD PUBLIC M2 END_METHOD SUPER(); // Der Body des Basis-Funktionsbaustein "LightRoom" wird hier aufgerufen. Light2:= NOT(Daytime); v1 := SUPER.M1(); // Die Methode "M1" des Basis-Funktionsbausteins "LightRoom" wird hier aufgerufen. v2 := THIS.M1(); // Die Methode "M1" des aktuellen Funktionsbausteins "Light2Room " wird hier aufgerufen. v3 := Inst1.M1(); // Die Methode "M1" der Funktionsbaustein-Instanz 'Inst1' (= Funktionsbaustein 'FB_A') wird hier aufgerufen. END_FUNCTION_BLOCK
FUNCTION_BLOCK FB1 (* der Basis-Funktionsbaustein "FB1" *) VAR Var1 : INT; END_VAR METHOD PUBLIC InitFB1 Var1 := 5; END_METHOD InitFB1(); (* Aufruf der Methode "InitFB1" *) END_FUNCTION_BLOCK FUNCTION_BLOCK FB2 EXTENDS FB1 (* der abgeleitete Funktionsbaustein "FB2" *) VAR Var2 : INT; END_VAR METHOD PUBLIC InitFB2 Var2 := 5; InitFB1(); (* Aufruf der Methode "InitFB1" des Basis-Funktionsbaustein "FB1" - identisch zum Aufruf der Methode im Basis-Funktionsbaustein selbst *) END_METHOD InitFB2(); (* Aufruf der Methode "InitFB2" des abgeleiteten Funktionsbaustein "FB2" *) END_FUNCTION_BLOCK FUNCTION_BLOCK FB3 VAR iFB2 : FB2; END_VAR iFB2(); (* Aufruf des Instanz für den abgeleiteten Funktionsbaustein-Typ "FB2" *) END_FUNCTION_BLOCK
In einem Funktionsbaustein dürfen Sie die folgenden Sprachelemente für ST verwenden:
Die Verwendung dieser Sprachelemente ermöglicht wiederum eine Verwendung von weiteren Elementen (z.B. Deklaration von STRING
-Variablen im Abschnitt VAR ... END_VAR
). Dieses Elemente sind in der obigen Liste nicht angeführt.