Adressage de bits de variables
Il est possible d'accéder à chacun des bits d'une variable de type entier. Pour ce faire, vous devez ajouter l'index du bit à adresser à la variable, en utilisant le point comme séparateur. Cet index peut être associé à n'importe quelle constante. L'indexation part de 0.
<nom de la variable>.<index du bit>
a : INT;
b : BOOL;
...
a.2 := b;
Le troisième bit de la variable a étant défini sur la valeur de la variable b, la variable a est égale à 3.
Lorsque l'index dépasse la largeur de bit de la variable, le message suivant s'affiche :
'<n>' is no valid bit number for '<var>'
L'adressage de bits est possible avec les variables appartenant aux types de données suivants :
oSINT
oINT
oDINT
oUSINT
oUINT
oUDINT
oBYTE
oWORD
oDWORD
Lorsque le type de données ne prend pas en charge l'accès aux bits, le message suivant apparaît :
Bitaccess is only possible on integer types
L'adressage de bits ne doit pas être utilisé avec une variable VAR_IN_OUT.
Accès aux bits via une constante globale
Si vous avez déclaré une constante globale définissant l'index de bit, vous pouvez vous en servir pour accéder à un bit.
Exemple d'accès à un bit via une constante globale et pour une variable :
1. Déclaration de la constante globale dans une liste de variables globales
La variable enable définit le bit auquel accéder :
VAR_GLOBAL CONSTANT
enable:int:=2;
END_VAR
2. Accès au bit pour une variable de type entier
Déclaration dans le POU :
VAR
xxx:int;
END_VAR
Accès aux bits :
xxx.enable := true; (* -> the third bit in variable xxx will be set TRUE *)
Accès aux bits pour des types de données BIT
Le type de données BIT est spécialement réservé aux structures. Pour plus d'informations, reportez-vous au chapitre Accès aux bits de structures.
Exemple : accès aux bits pour des types de données BIT
Déclaration de la structure
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
Déclaration dans le POU
VAR
ControllerDrive1:ControllerData;
END_VAR
Accès aux bits
ControllerDrive1.Status_OperationEnabled := TRUE;