Bei Integer-Variablen kann auf einzelne Bits zugegriffen werden. Dazu wird der Index des zu adressierenden Bits an die Variable angehängt, getrennt durch einen Punkt. Der Bit-Index kann durch eine beliebige Konstante angegeben werden. Die Indizierung ist 0-basiert.
Bit-Zugriff in direkten Variablen ist nicht erlaubt.
Beispiel
a : INT; b : BOOL; ... a.2 := b;
Das dritte Bit der Variablen a wird auf den Wert der Variablen b gesetzt.
Ist der Index größer als die Bitbreite der Variablen, wird die folgende Fehlermeldung ausgegeben: Index '<n>' außerhalb des gültigen Bereichs für Variable '<var>'!
Die Bit-Adressierung ist mit den folgenden Variablentypen möglich: SINT, INT, DINT, USINT, UINT, UDINT, BYTE, WORD, DWORD.
Wenn der Variablentyp dies nicht zulässt, wird die folgende Fehlermeldung ausgegeben: "Ungültiger Datentyp '<Typ>' für die direkte Indizierung"
Einer VAR_IN_OUT-Variablen darf kein Bit-Zugriff zugewiesen werden!
Bitzugriff über eine globale Konstante:
Wenn Sie eine globale Konstante deklariert haben, die den Bit-Index definiert, können Sie diese Konstante für einen Bit-Zugriff verwenden.
Die Projektoption 'Konstanten ersetzen' (Kategorie Build) muss aktiviert sein.
Siehe in den folgenden Beispielen für einen solchen Bitzugriff auf eine Variable bzw. eine Strukturvariable:
Deklaration in der Liste der globalen Variablen für beide Beispiele:
Die variable Freigabe definiert, auf welches Bit zugegriffen werden soll:
VAR_GLOBAL CONSTANT enable:int:=2; END_VAR
Beispiel 1, Bit-Zugriff auf eine Integer-Variable:
Erklärung in POU:
VAR xxx:int; END_VAR
Bitaccess:
xxx.enable:=true;
Das dritte Bit in der Variablen xxx wird auf TRUE gesetzt.
Beispiel 2, Bit-Zugriff auf eine Integer-Strukturkomponente:
Erklärung der Struktur stru1:
TYPE stru1 : STRUCT bvar:BOOL; rvar:REAL; wvar:WORD; {bitaccess enable 42 'Start drive'} END_STRUCT END_TYPE
Erklärung in POU:
VAR x:stru1; END_VAR
Bitaccess:
x.enable:=true;
Dadurch wird das 42. Bit in der Variablen x auf TRUE gesetzt. Da bvar 8 Bits und rvar 32 Bits hat, wird der Bitzugriff auf das zweite Bit der Variablen wvar durchgeführt, die dadurch den Wert 4 erhält.
Wenn eine Variable, die mit Hilfe einer globalen Konstante einen Bit-Zugriff auf eine Strukturvariable durchführt, im Eingabeassistenten, bei der Überwachung im Deklarationsfenster und in der Intellisense-Funktion korrekt angezeigt werden soll. Bitte verwenden Sie pragma {bitaccess}, das im Beispiel⮫ „Pragma-Anweisungen für Initialisierung, Überwachung, Erstellung von Symbolen, Bit-Zugriff, Verknüpfung“ gezeigt wird. Dann bekommen Sie bei der Überwachung im Deklarationsfenster zusätzlich die globale Konstante hinter der jeweiligen Strukturvariablen angezeigt: