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
MyVarin KommunikationskanalCh1. Siehe Anmerkungen unten. Ch1.Simulation.MyVar-
Variable
Simulation.MyVarin KommunikationskanalCh1.Anmerkung: Der Variablenname darf Punkte enthalten, die eine Gliederung in Namensräume erlauben. Der Kommunikationskanalname darf keinen Punkt enthalten. Ch1..Simulation.Variable1-
Variable
.Simulation.MyVarin KommunikationskanalCh1.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.MyVarin KommunikationskanalCh1, Zugriff auf Bit7.Wird bei booleschen Logiken verwendet (z. B.: Setze ein Bit auf Knopfdruck).
Ch1.Simulation.MyVar{.0..3}- Variable
Simulation.MyVarin KommunikationskanalCh1, Zugriff auf Bitgruppe0..3(4 Bit). Ch1.Simulation.MyVar{[2]}- Variable
Simulation.MyVarin KommunikationskanalCh1als Feld definiert (Feldgröße <> 0), Zugriff auf Feldelement2. Ch1.Simulation.MyVar{[2].7}-
Variable
Simulation.MyVarin KommunikationskanalCh1als Feld definiert (Feldgröße <> 0), Zugriff auf Feldelement2, Bit7.Wird bei booleschen Logiken verwendet (z. B.: Setze ein Bit auf Knopfdruck).
Ch1.MyStructVar{.Var1}-
Variable
MyStructVarin KommunikationskanalCh1, Zugriff auf StrukturelementVar1.In
MyStructVarist als Datentyp eine Struktur angegeben. Ch1.MyStructVar{.Var1.5}-
Variable
MyStructVarin KommunikationskanalCh1, Zugriff auf Bit 5 im StrukturelementVar1.In
MyStructVarist als Datentyp eine Struktur angegeben. Ch1.MyStructVar{.Var1[2].5}-
Variable
MyStructVarin KommunikationskanalCh1, Zugriff auf StrukturelementVar1, hier Zugriff auf Feldelement2und darin wiederum Zugriff auf Bit5.In
MyStructVarist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein. Ch1.MyStructVar{.Var1.SubVar1}-
Variable
MyStructVarin KommunikationskanalCh1, Zugriff auf StrukturelementVar1und darin auf StrukturelementSubVar1.In
MyStructVarist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein. Ch1.MyStructVar{.SS3[0].SubS2[10].15}-
Variable
MyStructVarin KommunikationskanalCh1, Zugriff auf StrukturelementSS3darin auf Feldelement0, darin auf StrukturelementSubS2, darin auf Feldelement10, darin auf Bit15.In
MyStructVarist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein. MyStructVar{.SS3[2].SubS2[22].0..8}-
Variable
MyStructVarin KommunikationskanalCh1, Zugriff auf StrukturelementSS3darin auf Feldelement2, darin auf StrukturelementSubS2, darin auf Feldelement22, darin auf Bitbereich0..8.In
MyStructVarist als Datentyp eine Struktur angegeben. Ein Strukturelement darf ein Feld oder selbst eine Struktur sein.
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.
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!