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.
| Name der |
|
Der Zugriff auf Der Zugriff auf |
| 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 |
---|---|---|
|
| 7 |
| 15 | |
| 31 | |
| 63 | |
|
| 0 |
| 1 | |
| 3 | |
| 7 | |
|
| Nicht unterstützt |
| 0 | |
| 1 | |
| 3 | |
|
| Nicht unterstützt |
| Nicht unterstützt | |
| 0 | |
| 1 | |
|
| Nicht unterstützt |
| Nicht unterstützt | |
| Nicht unterstützt | |
| 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 |
---|---|
|
|
|
|
|
|
|
|
|
|
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