Adressierung von Bits in Variablen
In ganzzahligen Variablen ist der Zugriff auf einzelne Bits möglich. Zu diesem Zweck wird der Index an das zu adressierende Bits angehängt und mit einem Punkt abgetrennt. Dem Bit-Index kann eine beliebige Konstante zugewiesen werden. Die Indizierung ist 0-basiert.
<Variablename>.<Bitindex>
a : INT;
b : BOOL;
...
a.2 := b;
Das dritte Bit der Variablen a wird auf den Wert der Variablen b gesetzt. Das bedeutet, dass die Variable a dem Wert 3 entspricht.
Ist der Index größer als die Bit-Breite der Variablen so wird folgender Fehler ausgegeben:
'Index '<n>' Außerhalb des gültigen Bereichs für Variable '<var>'!'
Die Bitadressierung ist bei folgenden Datentypen möglich: :
oSINT
oINT
oDINT
oUSINT
oUINT
oUDINT
oBYTE
oWORD
oDWORD
Ist der Datentyp nicht zulässig, so wird folgende Fehlermeldung ausgegeben:
'Unzulässiger Datentyp '<Typ>' für direkte Indizierung'.
Ein Bit-Zugriff darf nicht einer VAR_IN_OUT-Variablen zugewiesen werden!
Bitzugriff mit Hilfe einer globalen Konstante
Wenn eine globale Konstante deklariert wird, die den Bitindex definiert, kann diese Konstante für den Bitzugriff verwendet werden.
Beispiele für den Bitzugriff über eine globale Konstante
1. Deklaration einer globalen Konstanten in einer globalen Variablenliste
Die Variable enable legt fest, auf welches Bit zugegriffen werden soll:
VAR_GLOBAL CONSTANT
enable:int:=2;
END_VAR
2. Bitzugriff auf eine ganzzahlige Variable
Deklaration in einem POU:
VAR
xxx:int;
END_VAR
Bitzugriff:
xxx.enable := true; (* -> the third bit in variable xxx will be set TRUE *)
Der BIT-Datentyp ist ein besonderer Datentyp, der nur in Strukturen erlaubt ist. Weitere Informationen hierzu finden Sie unter Bit-Zugriff in Strukturen.
Beispiel: Bit-Zugriff auf BIT-Datentypen
Deklaration der Struktur
TYPE ControllerData :
STRUCT
Status_OperationEnabled : BIT;
Status_SwitchOnActive : BIT;
Status_EnableOperation : BIT;
Status_Error : BIT;
Status_VoltageEnabled : BIT;
Status_QuickStop : BIT;
Status_SwitchOnLocked : BIT;
Status_Warning : BIT;
END_STRUCT
END_TYPE
Deklaration in einem POU
VAR
ControllerDrive1:ControllerData;
END_VAR
Bitzugriff
ControllerDrive1.Status_OperationEnabled := TRUE;