可通过以下位置声明变量:
要声明的变量的类型(在表格声明编辑器中,称为文本声明编辑器中,通用变量声明用 VAR
和 END_VAR
括起。
有关其他变量声明范围,请参阅:
VAR_INPUT
VAR_OUTPUT
VAR_IN_OUT
VAR_GLOBAL
VAR_TEMP
VAR_STAT
VAR_INST
VAR_EXTERNAL
VAR_CONFIG
变量类型关键字可能由属性关键字补充。
示例:RETAIN (VAR_INPUT RETAIN)
标识符是指变量的名称。
定义标识符时,请考虑以下方面:
不允许使用空格或特殊字符
不区分大小写:VAR1
、Var1
和 var1
均为相同变量
可识别下划线字符:A_BCD
和 AB_CD
被视为 2 个不同标识符。一行最多只能使用 1 个下划线字符。
长度不受限制
不允许使用关键字名称,如 VAR_GLOBAL
多次使用(参见下文)
另请,请参阅章节标识符命名最佳做法。
以下概述了有关标识符的多次使用的规则:
不允许在本地多次使用同一标识符。
允许在全局多次使用某个标识符:本地变量的名称可与全局变量具有相同的名称。在此情况下,POU 中的本地变量优先。
在某个全局变量列表 (GVL) 中定义的变量可以与另一个全局变量列表 (GVL) 中定义的变量具有相同名称。在此上下文中,请考虑以下 IEC 61131-3 扩展功能:
全局范围操作符:以句点 (.
.) 开头的实例路径将打开一个全局范围。因此,如果有一个本地变量(例如 ivar
)与某个全局变量的名称相同,则 .ivar
将引用全局变量。
可以使用全局变量列表 (GVL) 的名称作为所包含变量的命名空间。可以在不同的全局变量列表 (GVL) 中声明相同名称的变量。可以通过在列表名称前面加上变量名称来访问这些变量。
示例
globlist1.ivar := globlist2.ivar;
(* globlist2 中的 ivar 会复制到 GVL globlist1 中的 ivar *)
可以根据语法 <库命名空间>..<GVL 名称>.<变量> 来访问某个包含库的全局变量列表中定义的变量。
示例:
globlist1.ivar := lib1.globlist1.ivar
(* 库 lib1 中的来自 globlist1 中的 ivar 会复制到 GVL globlist1 中的 ivar *)
此外,对于某个库,当通过
包含该库时,将定义一个命名空间。因此,可以按照 <库命名空间>.<模块名称|变量名称> 格式来访问某个库模块或变量。如果是嵌套库,请注意,必须连续声明所有相关库的命名空间。
示例:如果 Lib1
是由 Lib0
引用,那么属于 fun
的模块 Lib1
将通过 Lib0.Lib1.fun
来访问。
ivar := Lib0.Lib1.fun(4, 5);
(* fun 的返回值将复制到项目中的变量 ivar *)
Lib
的 对话框中),便可通过 Lib0.fun
直接访问模块 fun
。
在"__POOL."
添加前缀的方式来访问。