Partieller Variablenzugriff

Der Ausdruck ist konform zur Norm IEC 61131-3.

Bei IEC-Variablen vom Datentyp BYTE, WORD, DWORD oder LWORD (Datentyp ANY und ANY_<Typ>) ist ein partieller Variablenzugriff möglich.

Syntax:

<Variablenname>.%<Partieller Typ><Partieller Index>

Nach dem Punktoperator . ist ein Leerzeichen erlaubt. Nach dem Prozentzeichen % und nach dem partiellen Typ sind keine Leerzeichen erlaubt.

<Variablenname>

Name der ANY_BIT-Variable vom Typ BYTE, WORD, DWORD oder LWORD

<Partieller Typ>

X für BIT-Zugriff

B für BYTE-Zugriff

W für WORD-Zugriff

D für DWORD-Zugriff

L für LWORD-Zugriff

Der Zugriff auf __XWORD ist ebenfalls zulässig und verhält sich je nach Zeigergröße wie ein DWORD oder LWORD.

Der Zugriff auf BOOL ist nicht erlaubt, auch wenn der Datentyp BOOL Teil der ANY_BIT-Typen ist.

<Partieller Index>

Von 0 bis zum Indexmaximum

Für weitere Informationen siehe:

Verwendung

Der partielle Zugriff kann nur für nicht-temporäre Variablen verwendet werden (benutzerdefinierte Variablen, Felder, Array-Zugriffe oder Dereferenzierungen). Für temporäre Ergebnisse oder Literale ist dies nicht erlaubt.

Der Ausdruck selbst ist nicht temporär und kann als Ausdruck in REFERENCE TO oder als ADR-Operator verwendet werden.

Beispiel

bPartialVarB := GVL.nVar.%B0;
bPartialVarX := aArray[nIdx].%X0;
bPartialVarW := nTempVar.%W2;
bPartialVarD := pPointer^.%D2;
bPartialVarB := nVar.%W1.%B1

Bei Funktionsaufrufen, Indexausdrücken, Literalen oder Propertys ist ein partieller Zugriff nicht möglich.

Negativbeispiel:

FunctionCall().%B0
(1+index).%B0
(DWORD#16#12345678).%B0
Property.%B0

Indexmaximum der partiellen Typen

Der partielle Zugriff ist nur möglich, wenn der aufgerufene Ausdruck einen konformen Typ hat und der Teilindex kleiner oder gleich dem maximalen Teilindex ist. Ansonsten wird ein Compilerfehler ausgegeben.

Partieller Typ

Zugriffstyp

Maximum des partiellen Index

X

BYTE

7

WORD

15

DWORD

31

LWORD

63

B

BYTE

0

WORD

1

DWORD

3

LWORD

7

W

BYTE

Nicht unterstützt

WORD

0

DWORD

1

LWORD

3

D

BYTE

Nicht unterstützt

WORD

Nicht unterstützt

DWORD

0

LWORD

1

L

BYTE

Nicht unterstützt

WORD

Nicht unterstützt

DWORD

Nicht unterstützt

LWORD

0

Ausdruck mit partiellem Zugriff

Der Typ eines partiellen Zugriffsausdrucks hängt nur von <Partieller Typ> ab und muss anhand der folgenden Tabelle ausgewählt werden.

Partieller Typ

Typ des Ausdrucks

X

BIT

B

BYTE

W

WORD

D

DWORD

L

LWORD

Adressen

Es ist erlaubt, die Adresse von einem partiellen Zugriffsausdrucks des partiellen Typs B, W, D und L zu bilden.

Es ist nicht erlaubt, die Adresse von einem partiellen Zugriffsausdrucks des partiellen Typs X zu bilden.

Es ist nicht erlaubt, einen partiellen Zugriffsausdruck vom Typ BIT einer VAR_INOUT-Variablen zuzuweisen.

Beispiele

ADR(nVar.%B0)
refVar REF= nVar.%W1

Negativbeispiel:

ADR(nVar.%X0)
refVar REF= nVar.%X0