跳到主要内容

输入输出变量:VAR_IN_OUT

一个 VAR_IN_OUT 类型变量同时兼有输入变量和输出变量的特性,外部变量调用本功能块时是引用方式访问调用,功能块运算返回后将影响输入输出变量连接的外部变量的值。

ST示例

VAR_IN_OUT
<variable name> : <data type>;
END_VAR

用法

  • 调用: 当一个 POU 被调用时,正式的 VAR_IN_OUT var1 接收实际变量(“按引用传递变量”)作为参数。在运行时,传递参数时不会生成副本。相反,形式变量接收对远程传递的实际变量的引用。引用变量在内部包含一个内存地址作为实际值的值(作为指针传递, 调用参考)。不能直接指定常量(文字)或位变量作为参数。

  • POU 内的读/写访问: 如果变量被写入 POU 中,那么这会影响传递的变量。退出 POU 时,将保留任何已执行的更改。这意味着一个 POU 使用它的 VAR_IN_OUT 变量就像调用 POU 使用它的变量一样。始终允许读取访问。

  • 远程读/写访问VAR_IN_OUT 变量 不能通过远程直接读取或写入 <function block instance name>.<variable name>.这仅适用于 VAR_INPUTVAR_OUTPUT 变量。

  • 传递字符串变量:如果将字符串变量作为参数传递,那么实际变量和形式变量应该具有相同的长度。否则,传递的字符串可能会被无意中操作。在以下情况下不会出现此问题 VAR_OUTPUT CONSTANT 参数。

  • 传递位变量: 位变量不能直接传递给 VAR_IN_OUT 变量,因为它需要一个中间变量。

  • 传递属性: 不允许

提示

如果将字符串作为变量或常量传递给形式 VAR_IN_OUT CONSTANT 变量,则字符串自动完全传递。您不必检查字符串长度。