Semantischer Fehler (SEM1065): Unzulässige implizite Adresse '...'.
In einem Code-Arbeitsblatt soll auf eine nicht existierende Bitposition einer ANY_BIT-Variablen zugegriffen werden.
Beispiele für Fehler: Im FBS/KOP-Beispiel wird die Breite des Datentyps WORD überschritten (0..15). Im ersten ST-Beispiel wird die BYTE-Breite (0..7) überschritten. In der dritten ST-Zeile wird eine falsche Ergänzung verwendet.
Hintergrund: Implizite Adressierung von ANY_BIT
Implizierte Adressierung ist eine IEC 61131-Erweiterung, die den spezifischen Zugriff auf Teile bereits deklarierter Variablen eines ANY_BIT-Datentyps erlaubt. ANY_BIT-Variablen können prinzipiell mit "Bitfolgen" verglichen werden. Deshalb ist es möglich, schreibend oder lesend auf ein spezifisches Bit, Byte oder Word einer Variablen zuzugreifen (je nach Länge der betreffenden Variablen).
Implizite Adressierung erfolgt auf einfache Weise durch Angabe des Variablennamens gefolgt durch ein Suffix, welches den zu lesenden oder schreibenden Teil der Bitstruktur spezifiziert. (Im Prinzip ist diese Vorgehensweise vergleichbar mit dem Zugriff auf Strukturelemente).
Syntax (am Beispiel einer LWORD-Variablen)
Die folgende Tabelle zeigt, welche Suffixe mit dem Variablennamen eingegeben werden müssen, um spezifische Teile einer LWORD-Variablen anzusprechen. Diese Angaben gelten entsprechend übertragen auch für die Datentypen DWORD, WORD, BYTE oder BOOL.
Hinweis
Der anzusprechende Teil muss in einem breiteren Datentyp enthalten sein, z.B. DWORD in LWORD, BYTE in WORD usw. Eine implizite Adressierung des gesamten Datentyps (z.B. MyWord.W0) ist nicht möglich. |
Anzusprechender Teil der LWORD-Variable | Zugriff durch Variablenname und Ergänzung | Beschreibung |
---|---|---|
DWord | MyVar.D0 MyVar.D1 | '.D0' adressiert das niederwertigste und '.D1' das hochwertigste Doppelwort der Variablen 'MyVar'. |
Word | MyVar.W0 ... MyVar.W3 | '.W0' adressiert das niederwertigste und '.W3' das hochwertigste Wort der Variablen 'MyVar'. |
Byte | MyVar.B0 ... MyVar.B7 | '.B0' adressiert das niederwertigste und '.B7' das hochwertigste Byte der Variablen 'MyVar'. |
Bit | MyVar.X0 ... MyVar.X63 | '.X0' adressiert das niederwertigste und '.X63' das hochwertigste Bit der Variablen 'MyVar'. |
Hinweis
Die implizite Adressierung ist unabhängig vom verwendeten Typ der Steuerung. Es spielt keine Rolle, ob die Byte-Anordnung Little Endian oder Big Endian ist. In beiden Fällen wird auf den richtigen Teil einer Variablen zugegriffen. |
Implizite Adressierung ist im grafischen Editor und im Texteditor möglich und steht damit für alle unterstützten IEC 61131-3-Programmiersprachen zur Verfügung.