L'espressione è conforme allo standard IEC 61131-3.
L'accesso parziale alla variabile è possibile nel caso di variabili IEC di tipo BYTE, WORD, DWORD o LWORD (tipo di dati ANY, ANY_<tipo> <tipo> ).
Sintassi:
<variable name>. % <partial type> <partial index>
È consentito uno spazio dopo l'operatore punto (.). Non sono ammessi spazi dopo il segno di percentuale (%) e dopo il tipo parziale.
|
<nome della variabile> |
Nome della variabile ANY_BIT del tipo BYTE, WORD, DWORD, o LWORD |
|
<tipo parziale> |
X per l'accesso al BIT B per accesso BYTE W per l'accesso a WORD D per accesso DWORD L per l'accesso LWORD È consentito anche l'accesso a __XWORD, che si comporta come una DWORD o una LWORD, a seconda della dimensione del puntatore. L'accesso a BOOL non è consentito anche se il tipo di dati BOOL fa parte dei tipi ANY_BIT. |
|
<indice parziale> |
Da 0 al massimo dell'indice |
Utilizzo
L'accesso parziale può essere utilizzato solo per variabili non temporanee (variabili definite dall'utente, campi, accessi ad array o dereferenziazione). Questo non è consentito per risultati temporanei o letterali.
L'espressione stessa non è temporanea e può essere utilizzata come espressione in REFERENCE TO o come operatore ADR.
Esempio
// Implementation PartialVarB := GVL.Variable.%B0; PartialVarX := array[idx].%X0; PartialVarW := tempVariable.%W2; PartialVarD := ptr^.%D2; PartialVarB := variable.%W1.%B1
L'accesso parziale non è possibile nel caso di chiamate di funzione, espressioni di indice, letterali o proprietà.
Esempio negativo:
FunctionCall().%B0 (1+index).%B0 (DWORD#16#12345678).%B0 Property.%B0
Indice massimo dei tipi parziali
L'accesso parziale è possibile solo se l'espressione chiamata ha un tipo conforme e l'indice parziale è inferiore o uguale all'indice parziale massimo. Altrimenti viene segnalato un errore del compilatore.
|
Tipo parziale |
Tipo di accesso |
Massimo dell'indice parziale |
|---|---|---|
|
X |
||
|
BYTE |
7 |
|
|
PAROLA |
15 |
|
|
DWORD |
31 |
|
|
PAROLA D'ORDINE |
63 |
|
|
B |
||
|
BYTE |
0 |
|
|
PAROLA |
1 |
|
|
DWORD |
3 |
|
|
PAROLA D'ORDINE |
7 |
|
|
W |
||
|
BYTE |
Non supportato |
|
|
PAROLA |
0 |
|
|
DWORD |
1 |
|
|
PAROLA D'ORDINE |
3 |
|
|
D |
||
|
BYTE |
Non supportato |
|
|
PAROLA |
Non supportato |
|
|
DWORD |
0 |
|
|
PAROLA D'ORDINE |
1 |
|
|
L |
||
|
BYTE |
Non supportato |
|
|
PAROLA |
Non supportato |
|
|
DWORD |
Non supportato |
|
|
PAROLA D'ORDINE |
0 |
Espressione con accesso parziale
Il tipo di un'espressione di accesso parziale dipende solo da <tipo parziale> e deve essere selezionato utilizzando la seguente tabella.
|
Tipo parziale |
Tipo di espressione |
|---|---|
|
X |
BIT |
|
B |
BYTE |
|
W |
PAROLA |
|
D |
DWORD |
|
L |
PAROLA D'ORDINE |
Indirizzi
È consentito creare l'indirizzo da un'espressione di accesso parziale di tipo B, W, D e L.
È non consentito creare l'indirizzo da un'espressione di accesso parziale di tipo parziale X.
È non consentito assegnare un'espressione di accesso parziale di tipo BIT a una variabile VAR_INOUT.
Esempi
ADR(var%.B0) referenceVariable REF= var.%W1
Esempio negativo:
ADR(var.%X0) ref REF= var.%X0