部分变量访问
该表达式符合 IEC 61131-3 标准。
对于 IEC 数据类型变量,可以进行部分变量访问 BYTE
, WORD
, DWORD
或者 LWORD
(数据类型 ANY,ANY_<类型> )。
句法:
<变量名称>。 % <部分类型> <部分索引>
点运算符后面允许有一个空格 (.
)。百分号后不允许有空格 (%
) 和部分类型之后。
<变量名称> | 的名字 |
<部分类型> |
进入 进入 |
<部分索引> | 从 0 到索引最大值 |
有关更多信息,请参阅:
用法
部分访问只能用于非临时变量(用户定义的变量、字段、数组访问或取消引用)。对于临时结果或文字,不允许这样做。
表达式本身不是临时的,可以用作 REFERENCE TO
或作为 ADR
操作员。
// 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
部分类型的索引最大值
仅当被调用表达式具有一致类型且部分索引小于或等于最大部分索引时,部分访问才可能。否则会报编译错误。
部分型 | 接入类型 | 部分索引的最大值 |
---|---|---|
| ||
| 7 | |
| 15 | |
| 31 | |
| 63 | |
| ||
| 0 | |
| 1 | |
| 3 | |
| 7 | |
| ||
| 不支持 | |
| 0 | |
| 1 | |
| 3 | |
| ||
| 不支持 | |
| 不支持 | |
| 0 | |
| 1 | |
| ||
| 不支持 | |
| 不支持 | |
| 不支持 | |
| 0 |
具有部分访问权限的表达式
部分访问表达式的类型仅取决于 <部分类型> 并且必须使用下表进行选择。
部分型 | 表达类型 |
---|---|
|
|
|
|
|
|
|
|
|
|
地址
允许从部分类型的部分访问表达式创建地址 B
, W
, D
, 和 L
。
这是 不是 允许从部分类型的部分访问表达式创建地址 X
。
这是 不是 允许分配类型的部分访问表达式 BIT
到一个 VAR_INOUT
多变的。
ADR(var%.B0) referenceVariable REF= var.%W1
反面例子:
ADR(var.%X0) ref REF= var.%X0