Syntax zum Zugriff auf Variablen

Dieses Kapitel erläutert die Syntax zum Zugriff auf Variablen, Feld- und Strukturelementen und Bits aus ganzzahligen Variablen.

Diese Syntax wird sowohl bei der Angabe von Eigenschaftswerten als auch auf der programmatischen Ebene verwendet. Eine einfache Unterstützung bei der Angabe von Eigenschaftswerten bietet der Variablenauswahldialog. Hier werden alle verknüpfbaren SPS-Werte, also die Einzelvariablen und die Feld- und Strukturelemente zur Auswahl aufgelistet. Einzelne Bits können zusätzlich aus dem gewählten Bezeichner ausgewählt werden. Das Ergebnis wird als Zeichenkette zur Übernahme bereitgestellt. Wenn Sie also beispielsweise einen Generator schreiben, der Variablenbezeichner zusammenstellt und damit zur Laufzeit Probleme auftreten, bietet es sich an, die angesprochenen Variablen einmal im Variablenauswahldialog auszuwählen und die Zeichenketten mit dem eigenen Ergebnis zu vergleichen.

<Ch><VarAlias><Elementeauflösung>

mit

<Ch>
Name des Kanals mit einem Punkt abgeschlossen (z. B. Ch1.). Bei internen Variablen entfällt dieser Teil.
<VarAlias>
Der Alias der Variablendefinition.
<Elementeauflösung>
Durch geschweifte Klammern ({}) umfasste teilweise geschachtelte Angabe von Feldindex, Strukturelementnamen oder Bitnummer.

Für die Elementauflösung gelten folgende Regeln:

  • Die Angabe eines Feldelementes erfolgt über den 0-basierten Index. Der Feldelementindex wird durch eckige Klammern ([]) umfasst.
  • Die Angabe eines Strukturelementes erfolgt über den Strukturelementnamen. Der Strukturelementname wird durch einen führenden Punkt identifiziert und ist nicht numerisch.
  • Die Angabe einer Bitnummer erfolgt über den 0-basierten Bitindex. Der Bitindex wird durch einen führenden Punkt identifiziert und ist rein numerisch.
  • Die Angabe eines Bitbereichs erfolgt über die 0-basierten Bitindizes von Start- und Endbit. Zuerst wird durch einen führenden Punkt gekennzeichnet das Startbit erwartet, anschließend durch zwei führende Punkte gekennzeichnet das Endbit.

Beispiele

Die im Folgenden gezeigten Syntaxbeispiele werden von links nach rechts interpretiert:

MyInternalVar
Zugriff auf die interne Variable MyInternalVar.
Ch1.MyVar

Variable MyVar in Kommunikationskanal Ch1. Siehe Anmerkungen unten.

Ch1.Simulation.MyVar

Variable Simulation.MyVar in Kommunikationskanal Ch1.

Anmerkung: Der Variablenname darf Punkte enthalten, die eine Gliederung in Namensräume erlauben. Der Kommunikationskanalname darf keinen Punkt enthalten.
Ch1..Simulation.Variable1

Variable .Simulation.MyVar in Kommunikationskanal Ch1.

Durch die Angabe eines Punktes am Anfang des Variablenalias entsteht ein leerer Namensraum. Dies wird bei einigen SPS-Typen verwendet, um globale Variablen zu bezeichnen.

Ch1.Simulation.MyVar{.7}

Variable Simulation.MyVar in Kommunikationskanal Ch1, Zugriff auf Bit 7.

Wird bei booleschen Logiken verwendet (z. B.: Setze ein Bit auf Knopfdruck).

Ch1.Simulation.MyVar{.0..3}
Variable Simulation.MyVar in Kommunikationskanal Ch1, Zugriff auf Bitgruppe 0..3 (4 Bit).
Ch1.Simulation.MyVar{[2]}
Variable Simulation.MyVar in Kommunikationskanal Ch1 als Feld definiert (Feldgröße <> 0), Zugriff auf Feldelement 2.
Ch1.Simulation.MyVar{[2].7}

Variable Simulation.MyVar in Kommunikationskanal Ch1 als Feld definiert (Feldgröße <> 0), Zugriff auf Feldelement 2, Bit 7.

Wird bei booleschen Logiken verwendet (z. B.: Setze ein Bit auf Knopfdruck).

Ch1.MyStructVar{.Var1}

Variable MyStructVar in Kommunikationskanal Ch1, Zugriff auf Strukturelement Var1.

In MyStructVar ist als Datentyp eine Struktur angegeben.

Ch1.MyStructVar{.Var1.5}

Variable MyStructVar in Kommunikationskanal Ch1, Zugriff auf Bit 5 im Strukturelement Var1.

In MyStructVar ist als Datentyp eine Struktur angegeben.

Ch1.MyStructVar{.Var1[2].5}

Variable MyStructVar in Kommunikationskanal Ch1, Zugriff auf Strukturelement Var1, hier Zugriff auf Feldelement 2 und darin wiederum Zugriff auf Bit 5.

In MyStructVar ist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein.

Ch1.MyStructVar{.Var1.SubVar1}

Variable MyStructVar in Kommunikationskanal Ch1, Zugriff auf Strukturelement Var1 und darin auf Strukturelement SubVar1.

In MyStructVar ist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein.

Ch1.MyStructVar{.SS3[0].SubS2[10].15}

Variable MyStructVar in Kommunikationskanal Ch1, Zugriff auf Strukturelement SS3 darin auf Feldelement 0, darin auf Strukturelement SubS2, darin auf Feldelement 10, darin auf Bit 15.

In MyStructVar ist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein.

MyStructVar{.SS3[2].SubS2[22].0..8}

Variable MyStructVar in Kommunikationskanal Ch1, Zugriff auf Strukturelement SS3 darin auf Feldelement 2, darin auf Strukturelement SubS2, darin auf Feldelement 22, darin auf Bitbereich 0..8.

In MyStructVar ist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein.

Anmerkung:

Die Angabe von Variablennamen muss zeichengenau erfolgen, d. h. beachten Sie:

  • Groß-/Kleinschreibung
  • Leerzeichen am Anfang oder Ende eines Variablenbezeichners

Die Verwendung von Sonderzeichen in Kanalnamen, Variablenalias und Strukturelementnamen, die zur Auflösung der Syntax verwendet werden, wird vom Entwicklungssystem weitgehend verhindert. Trotzdem kann es vorkommen, dass im Projekt ein Fehler bei der Auflösung eines Variablenbezeichners auftritt, wenn beispielsweise die Projektdatei direkt bearbeitet wird.

Anmerkung:

Ein von der Entwicklungsumgebung noch nicht gelöster Konflikt ist auch die Vergabe des Alias für interne Variablen. Wird hier als führender Namensraum der Name eines Kanals angegeben, entsteht eine Mehrdeutigkeit, die vom System nicht aufgelöst werden kann.

Beispiel: Name einer internen Variable Ch1.w0 führt zum Konflikt mit der Variablen w0 in Kanal Ch1. Vermeiden Sie solche Mehrdeutigkeiten!