InOut-Variablen: Regeln und besondere Merkmale
InOut-Variablen sind Formalparameter von Funktionsbaustein-POEs. Sie werden in der Variablentabelle einer FB-POE mit dem Schlüsselwort 'InOut' (in der Spalte 'Verw.') deklariert. Ein InOut-Formalparameter ist sowohl Eingang als auch Ausgang des Funktionsbausteins. Innerhalb einer POE kann die Variable sowohl gelesen als auch geschrieben werden. Beim Lesen/Schreiben einer InOut-Variablen wird eine Referenz (ein Zeiger) auf die Speicheradresse des Formalparameters verarbeitet.
InOut-Variablen werden typischerweise für komplexe Datentypen wie Zeichenfolgen, Felder und Strukturen verwendet.
- Der Formalparameter muss auf der Eingangsseite geschrieben werden (d.h. der Formalparameter darf nicht unverbunden sein).Das bedeutet:
- In FBS muss eine Variable eines passenden Datentyps auf der linken Seite des Blocksymbols (Eingangsseite) angeschlossen werden.
- In ST muss der Operator := für die Zuweisung des Formalparameters zu einer passenden Variablen verwendet werden. Passende Variablen sind Variablen vom Typ Eingang, Ausgang, InOut, Extern, Programm und Instanz, die nicht als konstante Variablen (Kontrollkästchen Konstante ist deaktiviert) deklariert sind.
- Auf der Ausgangsseite kann eine InOut-Variable verbunden oder nicht verbunden sein. Wenn verbunden, gilt für den Datentyp das Gleiche wie für die Eingangsseite beschrieben (siehe voriger Punkt).
- In ST können InOut-Variablen nicht direkt mit dem Konstrukt FB_InstanceName.InOutVarName gelesen/geschrieben werden (im Gegensatz zu Eingangs- und Ausgangsvariablen).
- Bitvariablen können nicht direkt InOut-Variablen zugewiesen werden. Stattdessen muss eine Zwischenvariable verwendet werden.Fehlerbeispiel:
MyFB(MyInOutParam := MyBoolVar, weitere Parameter);Workaround:
MyTempVar := MyBoolVar;
MyFB(MyInOutParam := MyTempVar, weitere Parameter);
MyBoolVar := MyTempVar;