Deklaration eines strukturierten Datentyps mit partieller Adresse in ST

Bei Strukturelementen für einen strukturierten Datentyp ist es möglich, einen noch nicht festgelegten Speicherort (= eine partielle Adresse) zu definieren.

Syntax
TYPE
   name_1: STRUCT
      name_e1 AT %(I|Q|M)* (* optional_begin *) {OFFSET := value} (* optional_end *) : data-type := initial-value;
      name_e2 AT %(I|Q|M)* (* optional_begin *) {OFFSET := value} (* optional_end *) : data-type := initial-value;
      ...
   END_STRUCT;
END_TYPE 
Bedeutung der partiellen Adresse und des Offsets

Mit AT %(I|Q|M)* wird dem Strukturelement eine partielle Adresse zugeordnet. Der Speicherort wird erst in einem VAR_CONFIG-Abschnitt spezifiziert, und zwar für jene Variable, die mit dem strukturierten Datentyp deklariert ist.

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)
Mit dem optionalen Attribut OFFSET wird ein relativer Offset nach der Adresse definiert.

Einschränkungen

  • logi.CAD 3 unterstützt keine Prüfung, ob die Speicherorte in einem VAR_CONFIG-Abschnitt vollständig festgelegt sind.
  • logi.CAD 3 prüft außerdem den Abschnitt der Variable nicht, bei der ein strukturierter Datentyp mit partiellen Adressen deklariert ist. Es ist sogar möglich, solche Datentypen für alle in logi.CAD 3 unterstützten Variablen-Arten zu verwenden. Dies steht im Widerspruch zur Forderung der →IEC-Norm, dass ein strukturierter Datentyp mit partiellen Adressen nicht für →Eingangsvariablen, →Ein-/Ausgangsvariablen oder →temporärer Variablen zu verwenden ist.
  • Da der Code für die VAR_CONFIG-Abschnitte noch nicht für die SPS erzeugt wird, hat die Definition der unvollständigen Speicherorte außerdem noch keine Auswirkung auf die Ausführung der Anwendung.

Erweiterung zur IEC-Norm

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


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
TYPE
  MyType1 : STRUCT
     Elem1 AT %I* : INT;                 (* Zuweisung eines noch nicht festgelegten Eingangs, keine 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