Nelle variabili intere, è possibile accedere ai singoli bit. A questo scopo, aggiungere l'indice del bit da indirizzare alla variabile e separarlo con un punto. È possibile assegnare qualsiasi costante all'indice bit. L'indicizzazione è a base 0.
Se il processore non supporta l'accesso diretto ai bit, è possibile utilizzare un semaforo (SysSemEnter) o una tecnica simile per impedire l'accesso ai bit concorrenti. Tuttavia, per evitare l'accesso da parte di due task, si consiglia di eseguire l'accesso ai bit all'interno di un solo task.
a : INT;
b : BOOL;
...
a.2 := b;
Il terzo bit della variabile a
verrà impostato sul valore della variabile b
, pertanto la variabile a
sarà uguale a 3.
Se l'indice è maggiore dell'ampiezza di bit della variabile, viene generato il seguente messaggio:
'Indice '<n>' fuori dall'intervallo valido per variabile '<var>'!'
L'indirizzamento bit è possibile con le variabili dei seguenti tipi di dati:
SINT
INT
DINT
USINT
UINT
UDINT
BYTE
WORD
DWORD
Se il tipo di dati non consente l'accesso bit, viene generato il seguente messaggio:
'Tipo dati non valido '<tipo>' per indicizzazione diretta'.
Non assegnare l'accesso bit a una variabile VAR_IN_OUT
.
Se è stata dichiarata una costante globale che definisce l'indice di bit, è possibile utilizzare questa costante per un accesso bit.
Esempio di accesso bit tramite una costante globale e in una variabile:
1. Dichiarazione della costante globale in un elenco di variabili globali
La variabile enable
definisce il bit al quale si esegue l'accesso:
VAR_GLOBAL CONSTANT
enable:int:=2;
END_VAR
2. Accesso bit in una variabile intera
Dichiarazione nel POU:
VAR
xxx:int;
END_VAR
Accesso bit:
xxx.enable := true; (* -> the third bit in variable xxx will be set TRUE *)
Il tipo di dati BIT è un tipo di dati speciale consentito soltanto nelle strutture. È quindi possibile accedere a ciascun bit singolarmente utilizzando il nome del componente. Per maggiori informazioni, vedere la sezione Accesso bit nelle strutture.
Esempio: accesso nei tipi di dati BITBIT
Dichiarazione della struttura
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
Dichiarazione nel POU
VAR
ControllerDrive1:ControllerData;
END_VAR
Accesso bit
ControllerDrive1.Status_OperationEnabled := TRUE;