Aufrufe in ST
Die folgenden Sprachelemente können in ST aufgerufen werden:
Reihenfolge für Sprachelemente beim Aufruf
Falls Sie eines dieser Sprachelemente aufrufen, aber unterschiedliche Sprachelemente mit dem gleichen Namen vorhanden sind, gilt die folgende Reihenfolge:
- Aufruf der Methode
- Aufruf der Funktionsbaustein-Instanz – nur wenn keine Methode mit dem gleichen Namen vorhanden ist
- Aufruf der Funktion – nur wenn keine Methode und keine Funktionsbaustein-Instanz mit dem gleichen Namen vorhanden ist
Hier die Erläuterung dieser Reihenfolge anhand des Beispiels 1, in dem diese 3 Sprachelemente deklariert sind:
- eine Funktionsbaustein-Instanz mit dem Namen
Element1
(im AbschnittVAR...END
) - eine Methode mit dem Namen
Element1
- eine Funktion mit dem Namen
Element1
Aufgrund der Reihenfolge für den Aufruf des Sprachelements ruft logi.CAD 3 die Methode auf. Parameter beim Aufruf, die in der Methode nicht deklariert sind, werden als fehlerhaft gekennzeichnet.
FUNCTION_BLOCK CallElement VAR Element1 : MyFB1; END_VAR METHOD PUBLIC Element1 END_METHOD Element1(IN1:=1, IN2:=2); // Die Methode "Element1" wird aufgerufen. 'IN1' und 'IN2' wird als fehlerhaft gekennzeichnet. Element1(IN1:=1); // Die Methode "Element1" wird aufgerufen. 'IN1' wird als fehlerhaft gekennzeichnet. Element1(); // Die Methode "Element1" wird aufgerufen. END_FUNCTION_BLOCK FUNCTION_BLOCK MyFB1 VAR_INPUT IN1 : int; IN2 : int; END_VAR VAR_OUTPUT OUT1 : int; END_VAR OUT1 := IN1 + IN2 +2; END_FUNCTION_BLOCK FUNCTION Element1 VAR_INPUT IN1 : int; END_VAR VAR_OUTPUT OUT1 : int; END_VAR END_FUNCTION
Fehlt die Deklaration der Methode (siehe Beispiel 2) ruft logi.CAD 3 die Funktionsbaustein-Instanz auf.
FUNCTION_BLOCK CallElement VAR Element1 : MyFB1; END_VAR Element1(IN1:=1, IN2:=2); // Die Funktionsbaustein-Instanz "Element1" wird aufgerufen. Element1(IN1:=1); // Die Funktionsbaustein-Instanz "Element1" wird aufgerufen. Element1(); // Die Funktionsbaustein-Instanz "Element1" wird aufgerufen. END_FUNCTION_BLOCK FUNCTION_BLOCK MyFB1 VAR_INPUT IN1 : int; IN2 : int; END_VAR VAR_OUTPUT OUT1 : int; END_VAR OUT1 := IN1 + IN2 +2; END_FUNCTION_BLOCK FUNCTION Element1 VAR_INPUT IN1 : int; END_VAR VAR_OUTPUT OUT1 : int; END_VAR END_FUNCTION
Erst, wenn die Deklaration der Funktionsbaustein-Instanz ebenfalls fehlt (siehe Beispiel 3), ruft logi.CAD 3 die Funktion auf. Parameter beim Aufruf, die in der Funktion nicht deklariert sind, werden als fehlerhaft gekennzeichnet.
FUNCTION_BLOCK CallElement Element1(IN1:=1, IN2:=2); // Die Funktion "Element1" wird aufgerufen. 'IN2' wird als fehlerhaft gekennzeichnet. Element1(IN1:=1); // Die Funktion "Element1" wird aufgerufen. Element1(); // Die Funktion "Element1" wird aufgerufen. END_FUNCTION_BLOCK FUNCTION_BLOCK MyFB1 VAR_INPUT IN1 : int; IN2 : int; END_VAR VAR_OUTPUT OUT1 : int; END_VAR OUT1 := IN1 + IN2 +2; END_FUNCTION_BLOCK FUNCTION Element1 VAR_INPUT IN1 : int; END_VAR VAR_OUTPUT OUT1 : int; END_VAR END_FUNCTION