变量定义

变量的定义可以在POU的 定义部分实现或者通过 自动定义对话框,同样的方法适用于 DUT 或者 GVL 编辑器中。

变量的 "分类" (在定义对话框中名为 "范围") 必须通过特殊的 关键字包含其中一个或者多个变量。例如命令变量定义是通过 "VAR" 和 "END_VAR"。更多类型参见: VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_GLOBAL, VAR_TEMP, VAR_STAT, VAR_EXTERNAL, VAR_CONFIG

变量类型关键字是由 属性关键字提供。例如: "RETAIN" (VAR_INPUT RETAIN)。

变量的定义必须符合以下规则:

语法:

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

位于大括号 {} 中的是操作部分。

标识:变量名的标识。当定义一个标识时以下列出的名目要注意,也请注意以下给予的建议: “标示符的命名建议”

  • 不能包含空格或者特殊字符。
  • 不区分大小写,例如 "VAR1", "Var1" 以及 "var1" 都表示相同的变量。
  • 定义中可以使用下划线 (例如 "A_BCD" 以及 "AB_CD" 被认为是两个不同的定义),但是一行中最多只能有一个下划线。
  • 定义部分的长度也就是它的说明部分,没有限制。
  • 下文中列出的文本块规则必须要进行注意:

多个变量定义 (命名空间):

  • 一个识别符不能在附近复制。
  • 识别符不能与关键字相同。
  • 全局定义的标识符可以被复用,本地变量名可与全局变量名相同。在一个 POU 内部本地变量将被进行操作。
  • 定义在 “全局变量列表 - GVL ”的变量可以与定义在其他区域的全局变量有相同的名称。这这种情况下注意以下 IEC 61131-3 扩展因素,在之前的CoDeSys V2.3中不可用:
    • 全局范围操作:一个以 "." 启动的实例路径打开一个全局范围。所以,如果有本地变量,例如 "ivar",与全局变量有相同的名称, ".ivar" 将会被作为全局变量引用。
    • 全局变量列表可以用过一个包含变量的命名空间。所以相同变量可以在其他全局变量类表中定义,并且可以通过列表名称来进行特殊全局变量的指定。
      示例:
      globlist1.ivar := globlist2.ivar; (* ivar from GVL globlist2 is copied to ivar in GVL globlist1 *)
    • 在包含的函数库中定义的全局变量可以通过语法 "<函数库命名空间>.<GVL名称>.<变量名>" 获得。参阅以下函数库命名空间的说明。
      示例:
      globlist1.ivar := lib1.globlist1.ivar (* ivar from globlist1 in library lib1 is copied to ivar in GVL globlist1 kopiert *)
  • 对于一个函数库一个 命名空间被定义,当其包含在函数库管理中时。所以可以访问一个函数库模块或者通过"<函数库命名空间>.<模块名|变量名>" 获得变量。注意所有函数库中相近的函数库命名空间必须被相继启动。
    例如:如果 Lib1 参考于 Lib0,模块 fun 位于 Lib1 的获得方式为 "Lib0.Lib1.fun":

    ivar := Lib0.Lib1.fun(4, 5); (* return value of fun is copied to variable ivar in the project *)
    同时 "发布工程中所有 IEC 图标,如果这些参考没有被包含在函数库中。" 将会在相关的函数库中的 属性中被激活,模块 fun 也可以通过路径 "Lib0.fun" 获取。

 

AT <地址>: 这个变量可以直接被连接到 明确的地址通过使用关键字 AT。

在功能块中也可以使用不完全地址指定特殊的变量。以便于这个变量可以在本地接口中使用,但是在 '变量配置' 中必须有一个接口。

类型: 有效的 数据类型, 通过  ":=< 初始化>"进行扩展。

 

任意的 参数说明 可以包含在一个工程中的定义部分,以便于用于变量目的影响代码创建。

注意 自动定义

定义的最快输入,使用 捷径模式