Deklaration von Variablen, die auf einem Interface basieren

Syntax
VAR | VAR_INPUT | VAR_OUTPUT
  name_1, name_2, ..., name_n : interface;
END_VAR

TYPE
  name_1: STRUCT
    name_e1 : interface;
    ...
  END_STRUCT; 
END_TYPE
Bedeutung

Deklaration einer oder mehrerer →Variablen, die auf einem →Interface basieren
Solche Variablen verhalten sich wie Referenz-Variablen (siehe "Deklaration von Referenz-Variablen (inkl. Zuweisungen darauf)" für Details). Das bedeutet, solche Variablen werden mit dem Wert NULL initialisiert (d.h., eine Variable, die auf einem Interface basiert, verweist auf nichts).

Einschränkungen und Hinweise zur Verwendung

  • Für Variablen, die auf einem Interface basieren, sind die folgenden Möglichkeiten nicht zulässig, auch wenn der jeweilige Abschnitt selbst diese Möglichkeit unterstützt:
  • Für den Zugriff auf eine Methode des Interfaces über die Variable geben Sie den Namen der Variable (z.B. IN1) und den Namen der Methode (z.B. SwitchState) durch das Zeichen . voneinander getrennt ein.
    Beispiel: IN1.SwitchState
  • Derzeit existiert in logi.CAD 3 keine Möglichkeit, Variablen basierend auf einem Interface zu initialisieren.
    logi.CAD 3 prüft diese ST-Konstrukte nicht bei der Eingabe im ST-Editor, sondern erst beim Ausführen der Anwendung. Dabei erfolgt diese Fehlerbehandlung:
    1. Der Ausgang ENO der umfassenden →POE wid auf den Wert FALSE (bzw. einer Entsprechung) gesetzt.
    2. Der restliche Baustein-Code wird nicht mehr ausgeführt.

    logi.cals empfiehlt Ihnen, Code in Ihrer Anwendung (z.B. IF-Anweisungen) einzufügen, um die Verwendung von solchen Variablen mit dem Inhalt NULL zu erkennen.

Die Deklaration von Variablen basierend auf einem Interface ist innerhalb dieser Abschnitte möglich:

AbschnittDie Deklaration der Variable erfolgt als:
VAR ... END_VARinterne Variable (siehe "Deklaration von internen Variablen")
VAR_INPUT ... END_VAREingangsvariable (siehe "Deklaration von Eingangsvariablen in ST")
VAR_OUTPUT ... END_VARAusgangsvariable (siehe "Deklaration von Ausgangsvariablen in ST")
TYPE
 name_1: STRUCT
 ...
 END_STRUCT;
END_TYPE

als Strukturelement (siehe "Deklaration eines strukturierten Datentyps in ST")


Abweichung zur IEC-Norm

In logi.CAD 3 ist es nicht möglich, Variablen basierend auf einem Interface im Abschnitt für →temporäre Variablen (VAR_TEMP ... END_VAR) zu deklarieren.


Beispiel für die Deklaration eines Interfaces und einer Variable, die auf diesem Interface basiert
INTERFACE ISwitch   (* Deklaration eines Interfaces mit einem Methoden-Prototyp *)
  METHOD SwitchState
    VAR_INPUT
      STATE : BOOL;
    END_VAR
  END_METHOD
END_INTERFACE
 
FUNCTION_BLOCK myFB
  VAR_INPUT
    IN1 : ISwitch;  (* Deklaration einer Variable basierend auf dem Interface *)
    IN2 : BOOL;
  END_VAR
 
  IN1.SwitchState(STATE := IN2); (* Derzeit verursacht diese Zeile die oben-erwähnte Fehlerbehandlung beim Laden der Anwendung, da das Interface noch nicht initialisiert werden kann. *)
END_FUNCTION_BLOCK