Deklaration eines Sprachelements mit partieller Adresse in ST

logi.CAD 3 ermöglicht es, einen noch nicht festgelegten Speicherort (= eine partielle Adresse) bei den folgenden Sprachelementen zu definieren:

Syntax
TYPE
   name_1: STRUCT
      name_e1 AT %(I|Q|M)* (* optional_begin *) {OFFSET := value} (* optional_end *) : type := initial-value;
      name_e2 AT %(I|Q|M)* (* optional_begin *) {OFFSET := value} (* optional_end *) : type := initial-value;
      ...
   END_STRUCT;
END_TYPE
 
VAR | VAR_INPUT | VAR_OUTPUT | VAR_GLOBAL | VAR_TEMP
   name_3, name_4, ..., name_n1 AT %(I|Q|M)* : type := initial-value;              (* Hier wird die Variable 'name_n1' mit einer partiellen Adresse definiert. *)
   name_5 AT %(I|Q|M)*, name_6 AT %(I|Q|M)*, ... name_n2 : type := initial-value;  (* Hier werden die Variablen 'name_5' und 'name_6' mit einer partiellen Adresse definiert. *)
   ...
END_VAR  
Bedeutung der partiellen Adresse und des Offsets

Mit AT %(I|Q|M)* wird dem Sprachelement eine partielle Adresse zugeordnet. Der Speicherort wird zu einem späteren Zeitpunkt spezifiziert, z.B. in einem Tool zum Adressieren der IOs oder in einem VAR_CONFIG-Abschnitt (für jene Variablen, die mit dem strukturierten Datentyp deklariert sind). Details: Siehe "VAR_CONFIG-Abschnitte im SPS-Objekt deklarieren".

AT %(I|Q|M)* ist eine optionale Angabe für das Sprachelement. Ohne dieser Angabe wird keine partielle Adresse für das Sprachelement definiert. Geben Sie eine partielle Adresse laut diesem Aufbau ein:


ZeichenBedeutung
1.%leitet die Adresse ein
2.Präfix für Lagedefiniert die Lage

IEingang

QAusgang

MSpeicher (Memory)
3.*

noch nicht festgelegter Speicherort
(ersetzt den Präfix für die Größe und die Zahlen, wie diese bei einer vollständigen physikalischen Adresse definiert werden)


Erweiterung zur IEC-Norm

Als Erweiterung zur →IEC-Norm ist es möglich, mehrere Variablen mit einer partiellen Adressen oder mehrere Variablen mit partiellen Adressen in einer Zeile zu deklarieren.


Mit dem optionalen Attribut OFFSET wird ein relativer Offset nach der Adresse definiert. Dieses Attribut wird nur bei Strukturelementen unterstützt.

Erweiterung zur IEC-Norm

Das Attribut OFFSET ist ebenfalls eine Erweiterung zur IEC-Norm.

Einschränkungen bzw. Erweiterung zur IEC-Norm

  • logi.CAD 3 unterstützt keine Prüfung, ob die Speicherorte vollständig festgelegt sind.

  • logi.CAD 3 prüft den Abschnitt der Variable nur bedingt, bei der das Sprachelement mit partiellen Adressen deklariert ist. So ist es möglich, partielle Adressen in den nachfolgend genannten Variablen-Arten zu verwenden und solche Datentypen sogar für alle in logi.CAD 3 unterstützten Variablen-Arten zu verwenden. Dies steht im Widerspruch zur Forderung der →IEC-Norm (laut Abschnitt "6.5.5.4 Directly represented variables – partly specified using “ * ”"), dass Variablen mit partiellen Adressen nicht als →Eingangsvariablen oder →Ein-/Ausgangsvariablen zu verwenden sind.
  • Die Definition der unvollständigen Speicherorte hat keine Auswirkung auf die Ausführung der Anwendung.

Die Deklaration von partiellen Adressen ist innerhalb dieser Abschnitte möglich:
(Informieren Sie sich in der jeweiligen Beschreibung zum Abschnitt über evtl. zusätzliche Möglichkeiten für die Variable.)

AbschnittDie Deklaration des Sprachelements 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")
VAR_GLOBAL ... END_VARglobale Variable (siehe "Deklaration von externen Variablen in ST")
VAR_TEMP ... END_VARtemporäre Variable (siehe "Deklaration von temporären Variablen in ST")

TYPE ... END_TYPE
(nur bei Strukturelementen)

→strukturierter Datentyp (siehe "Deklaration eines strukturierten Datentyps in ST")

Beispiel
TYPE
  MyType1 : STRUCT
     Elem1 AT %I* : INT;                 (* Zuweisung eines noch nicht festgelegten Eingangs, kein Offset *)
     Elem2 AT %Q* {OFFSET := 9} : INT;   (* Zuweisung eines noch nicht festgelegten Ausgangs, Offset für 'elem2': 9 *)
     Elem3 : INT;                        (* keine Zuweisung einer Adresse *)
  END_STRUCT;
END_TYPE