CODOSYS之结构化文本(ST)—— 初级篇(五)基础-变量定义

9 篇文章 39 订阅
9 篇文章 11 订阅

变量的定义可以在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 <地址>}:<数据类型> {:=<初始值>};

eg:Test  AT%IW0 :WORD:=52;

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

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

  • 不能包含空格或者特殊字符。
  • 不区分大小写,例如 "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。

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

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

 

任意的变量说明 可以包含在一个工程中的定义部分,以便清楚的了解变量的用途与目的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值