一般信息

概述

可通过以下位置声明变量:

要声明的变量的类型(在表格声明编辑器中,称为范围)是由关键字指定(关键字将一个或多个变量的声明括起)。在文本声明编辑器中,通用变量声明用 VAREND_VAR 括起。

有关其他变量声明范围,请参阅:

  • VAR_INPUT

  • VAR_OUTPUT

  • VAR_IN_OUT

  • VAR_GLOBAL

  • VAR_TEMP

  • VAR_STAT

  • VAR_INST

  • VAR_EXTERNAL

  • VAR_CONFIG

变量类型关键字可能由属性关键字补充。

示例RETAIN (VAR_INPUT RETAIN)

语法

变量声明的语法:

<标识符> {AT <地址>}:<数据类型> {:=<初始值>};

{} 中的部分是可选的。

标识符

标识符是指变量的名称。

定义标识符时,请考虑以下方面:

  • 不允许使用空格或特殊字符

  • 不区分大小写:VAR1Var1var1 均为相同变量

  • 可识别下划线字符:A_BCDAB_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 *)

    注: 一旦激活了复选框对此项目发布全部 IEC 符号,就像引用被直接包含。(所引用的库 Lib属性对话框中),便可通过 Lib0.fun 直接访问模块 fun
  • 应用程序树全局节点的 GVL 或 POU 中声明的变量可通过以操作符 "__POOL." 添加前缀的方式来访问。

AT <地址>

可以使用关键字 AT 将变量直接链接到明确地址

在功能块中,还可以使用不完整的地址语句来指定变量。要能够在本地实例中使用此类变量,此类变量必须在变量配置中存在一个条目。

类型

有效的数据类型,由 :=<初始值> 扩展(可选)。

Pragma 指令

(可选)可以在对象的声明部分中添加 pragma 指令以影响用于各种目的的代码生成。

提示

还可以自动声明变量。

要更快速地输入声明,请使用快捷模式