Indirizzamento dei bit nelle variabili

Panoramica

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.

Sintassi

<variablename>.<bitindex>

Esempio

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;