Skip to main content

部分变量访问

该表达式符合 IEC 61131-3 标准。

对于 IEC 数据类型变量,可以进行部分变量访问 BYTE, WORD, DWORD 或者 LWORD (数据类型 ANY,ANY_<类型> )。

句法:

<变量名称>。 % <部分类型> <部分索引>

点运算符后面允许有一个空格 (.)。百分号后不允许有空格 (%) 和部分类型之后。

<变量名称>

的名字 ANY_BIT 类型的变量 BYTE, WORD, DWORD, 或者 LWORD

<部分类型>

X 为了 BIT 使用权

B 为了 BYTE 使用权

W 为了 WORD 使用权

D 为了 DWORD 使用权

L 为了 LWORD 使用权

进入 __XWORD 也是允许的并且表现得像 DWORD 或者 LWORD 取决于指针的大小。

进入 BOOL 即使 BOOL 数据类型是 ANY_BIT 类型。

<部分索引>

从 0 到索引最大值

有关更多信息,请参阅:

用法

部分访问只能用于非临时变量(用户定义的变量、字段、数组访问或取消引用)。对于临时结果或文字,不允许这样做。

表达式本身不是临时的,可以用作 REFERENCE TO 或作为 ADR 操作员。

200. 例子
// Implementation
PartialVarB := GVL.Variable.%B0;
PartialVarX := array[idx].%X0;
PartialVarW := tempVariable.%W2;
PartialVarD := ptr^.%D2;
PartialVarB := variable.%W1.%B1

对于函数调用、索引表达式、文字或属性,部分访问是不可能的。

反面例子:

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


部分类型的索引最大值

仅当被调用表达式具有一致类型且部分索引小于或等于最大部分索引时,部分访问才可能。否则会报编译错误。

部分型

接入类型

部分索引的最大值

X

BYTE

7

WORD

15

DWORD

31

LWORD

63

B

BYTE

0

WORD

1

DWORD

3

LWORD

7

W

BYTE

不支持

WORD

0

DWORD

1

LWORD

3

D

BYTE

不支持

WORD

不支持

DWORD

0

LWORD

1

L

BYTE

不支持

WORD

不支持

DWORD

不支持

LWORD

0

具有部分访问权限的表达式

部分访问表达式的类型仅取决于 <部分类型> 并且必须使用下表进行选择。

部分型

表达类型

X

BIT

B

BYTE

W

WORD

D

DWORD

L

LWORD

地址

允许从部分类型的部分访问表达式创建地址 B, W, D, 和 L

这是 不是 允许从部分类型的部分访问表达式创建地址 X

这是 不是 允许分配类型的部分访问表达式 BIT 到一个 VAR_INOUT 多变的。

201. 例子
ADR(var%.B0)
referenceVariable REF= var.%W1

反面例子:

ADR(var.%X0)
ref REF= var.%X0