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