Der Ausdruck entspricht der Norm IEC 61131-3.
Teilweiser Variablenzugriff ist möglich bei IEC-Variablen vom Datentyp BYTE, WORD, DWORD oder LWORD (Datentyp ANY, ANY_<type> <type> ).
Syntax:
<variable name>. % <partial type> <partial index>
Nach dem Punktoperator (.) ist ein Leerzeichen erlaubt. Nach dem Prozentzeichen (%) und nach der Teilart sind keine Leerzeichen erlaubt.
|
<Variablenname> |
Name der ANY_BIT-Variable vom Typ BYTE, WORD, DWORD oder LWORD |
|
<partieller Typ> |
X für BIT-Zugang B für BYTE-Zugriff W für WORD-Zugang D für DWORD-Zugriff L für LWORD-Zugang 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 BOOL-Datentyp Teil der ANY_BIT-Typen ist. |
|
<Teilindex> |
Von 0 bis zum Indexmaximum |
Verwendung als
Teilweiser Zugriff kann nur für nicht temporäre Variablen (benutzerdefinierte Variablen, Felder, Array-Zugriffe oder Dereferenzierung) verwendet werden. Dies ist für Zwischenergebnisse oder Literale nicht zulässig.
Der Ausdruck selbst ist nicht temporär und kann als Ausdruck in REFERENCE TO oder als ADR-Operator verwendet werden.
Beispiel
// Implementation PartialVarB := GVL.Variable.%B0; PartialVarX := array[idx].%X0; PartialVarW := tempVariable.%W2; PartialVarD := ptr^.%D2; PartialVarB := variable.%W1.%B1
Teilweiser Zugriff ist nicht möglich bei Funktionsaufrufen, Indexausdrücken, Literalen oder Eigenschaften.
Negatives Beispiel:
FunctionCall().%B0 (1+index).%B0 (DWORD#16#12345678).%B0 Property.%B0
Indexmaximum der Teiltypen
Ein teilweiser Zugriff ist nur möglich, wenn der aufgerufene Ausdruck einen konformen Typ hat und der Teilindex kleiner oder gleich dem maximalen Teilindex ist. Andernfalls wird ein Compilerfehler gemeldet.
|
Teilweise Typ |
Zugangstyp |
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 |
|
|
U |
||
|
BYTE |
Nicht unterstützt |
|
|
WORD |
Nicht unterstützt |
|
|
DWORD |
Nicht unterstützt |
|
|
LWORD |
0 |
Ausdruck mit teilweisem Zugriff
Der Typ eines partiellen Zugriffsausdrucks hängt nur von <partieller Typ> ab und muss anhand der folgenden Tabelle ausgewählt werden.
|
Teilweise Typ |
Art des Ausdrucks |
|---|---|
|
X |
BIT |
|
B |
BYTE |
|
W |
WORD |
|
D |
DWORD |
|
U |
LWORD |
Adressen
Es ist erlaubt, die Adresse aus einem partiellen Zugriffsausdruck vom Typ B, W, D und L zu erzeugen.
Es ist nicht erlaubt, die Adresse aus einem Teilzugriffsausdruck des Teiltyps X zu erzeugen.
Es ist nicht erlaubt, einer VAR_INOUT-Variablen einen Teilzugriffsausdruck vom Typ BIT zuzuweisen.
Beispiele
ADR(var%.B0) referenceVariable REF= var.%W1
Negatives Beispiel:
ADR(var.%X0) ref REF= var.%X0