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:

  1. Aufruf der Methode

  2. Aufruf der Funktionsbaustein-Instanz – nur wenn keine Methode mit dem gleichen Namen vorhanden ist

  3. 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 Abschnitt VAR...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.

Beispiel 1 für Reihenfolge für den Aufruf
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.

Beispiel 2 für Reihenfolge für den Aufruf
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.

Beispiel 3 für Reihenfolge für den Aufruf
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