Aufruf der Funktion in ST

Syntax
function-name();

function-name 
  (input_1:=x1,input_2:=x2,...,input_n:=xn,
  output_1=>y1,output_2=>y2,...,output_n=>yn);
Bedeutung

formaler →Aufruf der →Funktion (= formaler Funktionsaufruf) ohne oder mit Parameterliste
Der Aufruf einer von Ihnen deklarierten Anwenderfunktion (z.B. Simple2) und einer Systemfunktion (z.B. des IEC-Bausteins AND) erfolgt mit der gleichen Syntax. 

Keine Prüfung von Rekursionen

Rekursionen bei →Funktionen und →Methoden werden von logi.CAD 3  nicht verboten oder geprüft. Erstellen Sie trotzdem keine Selbstaufrufe und vermeiden Sie einen gegenseitigen Aufruf von 2 (oder mehr) Funktionen/Methoden in Ihrer Anwendung. 
Beachten Sie, dass Rekursionen von Funktionen/Methoden in Ihrer Anwendung unerwartete Ereignisse beim Ausführen der Anwendung verursachen können, z.B. könnte die Anwendung in einer Endlosschleife ausgeführt werden und/oder das →Laufzeitsystem reagiert nicht mehr.

Die Parameterliste beim formalen →Aufruf kann aus folgenden Elementen bestehen:

  • →Zuweisungen auf →Eingangsvariablen (inkl. auf Eingang EN)
    Der Ausdruck auf der rechten Seite des Zuweisungsoperators ":=" in den Zuweisungen auf Eingangsvariablen darf eines jener Konstrukte sein, wie unter Zuweisung angeführt.
  • Zuweisungen auf →Ein-/Ausgangsvariablen
    Der Ausdruck auf der rechten Seite des Zuweisungsoperators ":=" in den Zuweisungen auf Ein-/Ausgangsvariablen darf nur eines jener Konstrukte sein, die auch auf der linken Seite des Zuweisungsoperators ":=" stehen könnten.
  • Zuweisungen von →Ausgangsvariablen (inkl. auf Ausgang ENO)
    Der Ausdruck auf der rechten Seite des Zuweisungsoperators "=>" in den Zuweisungen von Ausgangsvariablen darf eine deklarierte →Variable (z.B. result) des passenden →Datentyps sein.

Als Alternativen können Sie auch die folgenden Varianten beim Aufruf verwenden:

  • nicht-formaler Aufruf 
    Die Parameterliste muss genau dieselbe Anzahl an Eingangsvariablen haben – in genau derselben Reihenfolge und mit passenden Datentypen, wie in der Deklaration
    angegeben, ausgenommen der Parameter zur Ausführungssteuerung EN und ENO.
     
    Beispiel: Inst2 (10,20,T#3ms); – Dieser nicht-formale Aufruf ist gleichbedeutend mit diesem formalen Aufruf: Inst2 (EN := TRUE,IN1:=10,IN2 := 20,T1 := T#3ms, OUT => result);  

  • unvollständige Parameterliste beim formalen Aufruf
    Sie können Eingangsvariablen und Ausgangsvariablen in der Parameterliste weglassen. 
    Weggelassene Eingangsvariablen erhalten den Standard-→Initialisierungswert.
     Siehe die Beispiele unten.
    Spezialverhalten: Bei ausziehbaren Funktionen (wie z.B. dem AND-Baustein) werden Eingangsvariablen nach der am höchsten angegebenen Eingangsvariable nicht für die
    Funktionalität des Bausteins berücksichtigt und erhalten somit auch nicht den Standard-Initialisierungswert (siehe Beispiele unten).

Im FAQ-Artikel "Wann soll ich einen formalen Aufruf verwenden? Wann einen nicht-formalen Aufruf?" finden Sie Informationen darüber, wann der formale Aufruf im Vergleich zum nicht-formalen Aufruf zu verwenden ist.

Beispiel
Simple1();

Simple2(IN1:=10,IN2 :=20,T1 := T#3ms,OUT => result);  
 
AND(IN1:=TRUE,IN2:=FALSE);

Beispiele für unvollständige Parameterliste beim formalen Aufruf für eine Funktion:

SyntaxBedeutung
FUNCTION fun1 : INT
    VAR_INPUT
        i1 : INT := 7;
        i2 : INT := 8;
    END_VAR
END_FUNCTION

Deklaration der Funktion fun1

Deklaration der Variablen i1 und i2 mit Initialisierungswerten

FUNCTION fun2 : INT
    fun2:=22;
END_FUNCTION
Deklaration der Funktion fun2 (mit dem Ergebniswert '22')
fun1(); Aufruf der Funktion fun1 ohne Parameterliste
fun1 erhält den Initialisierungswert 7 für i1 und den Initialisierungswert 8 für i2
fun1(i2:=3); Aufruf der Funktion fun1 mit unvollständiger Parameterliste
fun1 erhält den Initialisierungswert 7 für i1 und den zugewiesenen Wert 3 für i2
fun1(i2:=fun2()); Aufruf der Funktion fun1 mit unvollständiger Parameterliste
fun1 erhält den Initialisierungswert 7 für i1 und den Ergebniswert 22 (von fun2) für i2.
fun1(i2:=fun2(EN:=FALSE)); Aufruf der Funktion fun1 mit unvollständiger Parameterliste
fun1 erhält den Initialisierungswert 7 für i1 und den Initialisierungswert 8 für i2.

Erklärung: Da EN := FALSE, wird fun2 nicht aufgerufen. Daher wird i2 mit dem Initialisierungswert versorgt.
Detaillierte Informationen über das Verhalten von Aufrufen mit einer Zuweisung auf den Eingang EN finden Sie unter "Zuweisungen in ST".  

Beispiele für unvollständige Parameterliste beim formalen Aufruf für den ausziehbaren AND-Baustein:

SyntaxBedeutung
AND(); 

Aufruf der Funktion AND ohne Parameterliste
Dieser Aufruf wird als fehlerhaft gekennzeichnet. Zuweisungen auf die ersten 2 Eingänge sind für den AND-Baustein erforderlich.

AND(IN2:=TRUE); 

Aufruf der Funktion AND mit unvollständiger Parameterliste
Der Wert TRUE wird auf IN2 zugewiesen.
Die weggelassene Eingangsvariable vor IN2 (also IN1) erhält den Standard-Initialisierungswert FALSE.
Die weggelassene Eingangsvariablen nach IN2 (also IN3 bis IN16) werden für die AND-Funktionalität nicht berücksichtigt.

AND(IN1:=TRUE,IN10:=TRUE); Aufruf der Funktion AND mit unvollständiger Parameterliste
Der Wert TRUE wird auf IN1 und IN10 zugewiesen.
Die weggelassene Eingangsvariablen vor IN10 (also IN2 bis IN9) erhalten den Standard-Initialisierungswert FALSE.
Die weggelassene Eingangsvariablen nach IN10 (also IN11 bis IN16) werden für die AND-Funktionalität nicht berücksichtigt.