Accesso parziale alle variabiliPermalink

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