跳到主要内容

输入输出变量: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 声明的变量作为实参。字符串会完整传递,无须检查字符串长度。