输入输出变量:VAR_IN_OUT
一个 VAR_IN_OUT 类型变量同时兼有输入变量和输出变量的特性,外部变量调用本功能块时是引用方式访问调用,功能块运算返回后将影响输入输出 变量连接的外部变量的值。
ST示例
VAR_IN_OUT
<variable name> : <data type>;
END_VAR
用法
-
调用: 当一个 POU 被调用时,形式参数
VAR_IN_OUT var1接收实际变量(按引用传递)。运行时不会生成副本;对形式参数的写入会影响实参。不能将字面量、位变量或CONSTANT变量作为实参;常量作为VAR_IN_OUT实参会报 E3163。 -
POU 内的读/写访问: 如果变量被写入 POU 中,那么这会影响传递的变量。退出 POU 时,将保留任何已执行的更改。这意味着一个 POU 使用它的
VAR_IN_OUT变量就像调用 POU 使用它的变量一样。始终允许读取访问。 -
远程读/写访问:
VAR_IN_OUT变量 不能通过远程直接读取或写入<function block instance name>.<variable name>.这仅适用于VAR_INPUT和VAR_OUTPUT变量。 -
传递字符串变量:如果将字符串变量作为参数传递,那么实际变量和形式变量应该具有相同的长度。否则,传递的字符串可能会被无意中操作。在以下情况下不会出现此问题
VAR_OUTPUT CONSTANT参数。 -
传递位变量: 位变量不能直接传递给
VAR_IN_OUT变量,因为它需要一个中间变量。 -
传递属性: 不允许
提示
若形式参数声明为 VAR_IN_OUT CONSTANT,调用期间只能读取该参数;仍须传入可按引用传递的变量,不能将以 CONSTANT 声明 的变量作为实参。字符串会完整传递,无须检查字符串长度。