Syntax
( * internal call of method of the current function block *)
THIS.method-name();|method-name();
THIS.method-name|method-name
(input_1:=x1,input_2:=x2,...,input_n:=xn,
output_1=>y1,output_2=>y2,...,output_n=>yn);
( * internal call of a method of the base function block from within a derived function block *)
SUPER.method-name();
SUPER.method-name
(input_1:=x1,input_2:=x2,...,input_n:=xn,
output_1=>y1,output_2=>y2,...,output_n=>yn)
( * external call of a method *)
instance-name.method-name();
instance-name.method-name
(input_1:=x1,input_2:=x2,...,input_n:=xn,
output_1=>y1,output_2=>y2,...,output_n=>yn);
Bedeutung
|
formaler →Aufruf der →Methode ohne oder mit Parameterliste Die Methode wird aufgrund des Methodennamens method-name aufgerufen. Die Angabe vor dem Methodenname bestimmt, in welchem Kontext die Methode aufgerufen wird:
THIS. – Damit rufen Sie eine Methode des gleichen Sprachkonstrukts auf. Als Alternative ist es dafür auch möglich, THIS. wegzulassen. Beispiel: THIS.UP5(); oder UP5(); – Damit wird die Methode UP5 z.B. in der Methode UP aufgerufen. Beide Methoden sind im gleichen →Funktionsbaustein deklariert oder im Basis-Funktionsbaustein (wenn der Funktionsbaustein mit dem Aufruf der Methode ein abgeleiteter Funktionsbaustein ist; siehe Informationen zum Schlüsselwort EXTENDS unter "Deklaration eines Funktionsbausteins in ST").
SUPER. – Damit rufen Sie eine Methode des Basis-Funktionsbaustein in einem abgeleitetet Funktionsbaustein auf. Beispiel: SUPER.UP5(); – Damit wird die Methode UP5 des Basis-Funktionsbausteins aufgerufen. Der Aufruf der Methode erfolgt in einem Funktionsbaustein, der aufgrund des Schlüsselworts EXTENDS vom Basis-Funktionsbausteins abgeleitetet wurde.
instance-name. – Damit rufen Sie die Methode einer →Instanz auf. Beispiel: Inst1.UP5(); – Damit wird die Methode UP5 der Instanz Inst1 aufgerufen.
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 Möglichkeiten für die Parameterliste sind analog zum Aufruf von Funktionen.
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:
Inst1.UP3 (10,20,T#3ms);
– Dieser nicht-formale Aufruf ist gleichbedeutend mit diesem formalen Aufruf:
Inst1.UP3 (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.
Wie bereits erwähnt, ist dies
analog zum Aufruf einer Funktion (s
iehe die Beispiele dort).
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.
|
Ein Beispiel für den internen Aufruf einer Methode mit Parameterliste, aber ohne EN/ENO finden Sie unter "Deklaration einer Methode".
Ein Beispiel mit den unterschiedlichen Aufrufen von Methoden (mit THIS., SUPER. und instance-name.) finden Sie unter "Deklaration eines Funktionsbausteins in ST".