Indirizzamento dei bit nelle variabili
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.
<variablename>.<bitindex>
a : INT;
b : BOOL;
...
a.2 := b;
Il terzo bit della variabile a verrà impostato al valore della variabile b, quindi la variabile a sarà uguale a 3.
Se l'indice è maggiore dell'ampiezza di bit della variabile, viene generato il seguente messaggio:
'Index '<n>' outside the valid range for variable '<var>'!'
L'indirizzamento bit è possibile con le variabili dei seguenti tipi di dati:
oSINT
oINT
oDINT
oUSINT
oUINT
oUDINT
oBYTE
oWORD
oDWORD
Se il tipo di dati non consente l'accesso bit, viene generato il seguente messaggio:
'Invalid data type '<type>' for direct indexing'.
Non assegnare l'accesso bit a una variabile VAR_IN_OUT.
Accesso bit tramite una costante globale
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 *)
Accesso nei tipi di dati BITBIT
Il tipo di dati BIT è un tipo di dati speciale consentito soltanto nelle strutture. 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;