Deklaration von Ein-/Ausgangsvariablen in ST

Syntax
VAR_IN_OUT
  name_1, name_2, ..., name_n : data-type;
  name_3, name_4, ..., name_n : STRING[length];
  name_5, name_6, ..., name_n : ARRAY [x..y] OF type;
  name_7, name_8, ..., name_n : ARRAY [x1..y1, x2..y2, x3..y3] OF type;   
  FB_instance_1, FB_instance_2, ..., FB_instance_n : FB-type;
  FB_instance_A, FB_instance_B, ..., FB_instance_n: ARRAY [x..y] OF FB-type;
  FB_instance_C, FB_instance_D, ..., FB_instance_n: ARRAY [x1..y1, x2..y2, x3..y3] OF FB-type;
END_VAR
Bedeutung

Deklaration einer bzw. mehrerer →Ein-/Ausgangsvariablen, wobei name_1 , name_2 usw. →IEC-Bezeichner sein müssen.
Die Deklaration mehrerer solcher Abschnitte ist zulässig. Die Deklaration ist innerhalb der Deklaration eines →Funktionsbausteins oder einer →Funktion möglich.

Ein →Datentyp ist als Typ für eine Variable möglich, ein vorhandener Funktionsbaustein (in →ST oder →FBS erstellt) als Typ für eine Funktionsbaustein-Instanz.

Informieren Sie sich unter "Unterstützte Datentypen", welche Datentypen Sie für die Deklaration von Variablen angeben können. Außerdem ist es möglich,

Sie können Funktionsbaustein-Instanzen auch mit Hilfe von ein- oder mehrdimensionalen ARRAYs deklarieren (auch dies ist analog zu "Deklaration eines ARRAY-Datentyps in ST") oder mit Hilfe von Strukturelementen deklarieren (siehe "Deklaration eines strukturierten Datentyps in ST").

logi.CAD 3  bietet außerdem die Möglichkeit, zusätzliche Daten bei der Deklaration anzugeben. Siehe "Beschreibung, Kommentar oder JSON-String für Variablen und Datentypen angeben" für Details.

Beispiel
VAR_IN_OUT
  In_out1 : INT;
  In_out2: ARRAY [1..2] of BOOL;
  In_out3 : STRING[10]; 
  IO_TMR : TOF; 
END_VAR

Beachten Sie Folgendes für die Verwendung von Ein-/Ausgangsvariablen:

  • →Zuweisungen auf Ein-/Ausgangsvariablen erfordern Ausdrücke auf der rechten Seite des Zuweisungsoperators ":=" , die auch auf der linken Seite des Zuweisungsoperators ":=" stehen könnten.
  • Bei Aufrufen von Bausteinen mit Ein-/Ausgangsvariablen müssen Sie formale Aufrufe verwenden (siehe FAQ-Artikel "Wann soll ich einen formalen Aufruf verwenden? Wann einen nicht-formalen Aufruf?" für weitere Informationen zum formalen Aufruf). Außerdem müssen die Ein-/Ausgangsvariablen immer vom gleichen Datentyp sein, da eine implizite Konvertierung für Ein-/Ausgangsvariablen nicht erlaubt ist. Die Zuweisung einer Ein-/Ausgangsvariable auf sich selbst ist im Aufruf nicht erlaubt – dieser Aufruf ist daher nicht möglich: MyFB(In_out1 := MyFB.In_out1);
  • Der Aufruf einer Funktionsbaustein-Instanz ist erlaubt, falls diese als Ein-/Ausgangsvariable deklariert wurde.
  • Der lesende Zugriff auf Ein-/Ausgangsvariablen ist außerhalb des Funktionsbausteins oder der Funktion nicht erlaubt. Ebenso ist eine Zuweisung darauf außerhalb des Funktionsbausteins oder der Funktion nicht erlaubt.
  • Bei einem Aufruf einer Funktionsbaustein-Instanz ist es möglich, einer Ein-/Ausgangsvariablen eine →Eingangsvariable der gleichen Funktionsbaustein-Instanz zuzuweisen. logi.cals rät Ihnen jedoch davon ab, da es dadurch möglich ist, die Werte für Eingangsvariablen innerhalb des Funktionsbausteins zu verändern. Dies ist jedoch laut der →IEC-Norm nicht zulässig.