Bitzugriff auf Variablen
Mit einem Indexzugriff können Sie einzelne Bits in ganzzahligen Variablen adressieren. Mit Hilfe einer Strukturvariablen oder einer Funktionsbaustein-Instanz können Sie einzelne Bits symbolisch adressieren.
Indexzugriff auf Bits in ganzzahligen Variablen
Sie können in ganzzahligen Variablen einzelne Bits adressieren. Dazu hängen Sie an die Variable mit einem Punkt abgetrennt den Index des zu adressierenden Bits an. Der Bitindex kann durch eine beliebige Konstante angegeben werden. Die Indizierung ist 0-basiert.
Syntax:
<integer variable name> . <index>
<integer data typ> = BYTE | WORD | DWORD | LWORD | SINT | USINT | INT | UINT | DINT | UDINT | LINT | ULINT
Wenn der Typ der Variablen nicht zulässig ist, gibt TwinCAT folgende Fehlermeldung aus: Unzulässiger Datentyp <Typ> für direkte Indizierung. Wenn der Index größer als die Bitbreite der Variablen ist, gibt TwinCAT folgenden Fehler aus: Index <n> außerhalb des gültigen Bereichs für Variable <Name>.
Beispiel Indexzugriff:
Im Programm wird das dritte Bit der Variablen nVarA
auf den Wert der Variablen nVarB
gesetzt.
PROGRAM MAIN
VAR
nVarA : WORD := 16#FFFF;
bVarB : BOOL := 0;
END_VAR
// Index access in an integer variable
nVarA.2 := bVarB;
Ergebnis: nVarA = 2#1111_1111_1111_1011 = 16#FFFB
Beispiel Konstante als Index:
Die Konstante cEnable
fungiert als Index, um auf das dritte Bit der Variablen nVar
zuzugreifen.
// GVL declaration
VAR_GLOBAL CONSTANT
cEnable : USINT := 2;
END_VAR
PROGRAM MAIN
VAR
nVar : INT := 0;
END_VAR
// Constant as index
nVar.cEnable := TRUE; // Third bit in nVar is set TRUE
Ergebnis: nVar = 4
![]() | Erreichbarkeit der Variablen, die die Bitnummer definiert Beachten Sie, dass die Variable, die die Bitnummer definiert (im Beispiel oben |
Symbolischer Bitzugriff in Strukturvariablen
Mit dem Datentyp BIT
können Sie einzelne Bits mit einem Namen bezeichnen und zu einer Struktur zusammenfassen. Das Bit wird dann mit dem Komponentennamen adressiert.
Beispiel
Typdeklaration der Struktur:
TYPE ST_ControllerData :
STRUCT
nStatus_OperationEnabled : BIT;
nStatus_SwitchOnActive : BIT;
nStatus_EnableOperation : BIT;
nStatus_Error : BIT;
nStatus_VoltageEnabled : BIT;
nStatus_QuickStop : BIT;
nStatus_SwitchOnLocked : BIT;
nStatus_Warning : BIT;
END_STRUCT
END_TYPE
Deklaration und Schreibzugriff auf ein Bit:
PROGRAM MAIN
VAR
stControllerDrive1 : ST_ControllerData;
END_VAR
// Symbolic bit access to nStatus_ EnableOperation
stControllerDrive1.nStatus_EnableOperation := TRUE;
Symbolischer Bitzugriff in Funktionsbaustein-Instanzen
In Funktionsbausteinen können Sie Variablen für einzelne Bits deklarieren.
Beispiel
Typdeklaration der Struktur:
FUNCTION_BLOCK FB_Controller
VAR_INPUT
nSwitchOnActive : BIT;
nEnableOperation : BIT;
nVoltageEnabled : BIT;
nQuickStop : BIT;
nSwitchOnLocked : BIT;
END_VAR
VAR_OUTPUT
nOperationEnabled : BIT;
nError : BIT;
nWarning : BIT;
END_VAR
VAR
END_VAR
PROGRAM MAIN
VAR
fbController : FB_Controller;
END_VAR
// Symbolic bit access to nSwitchOnActive
fbController(nSwitchOnActive:= TRUE);
Siehe auch: