输入输出变量: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_INPUT
和VAR_OUTPUT
变量。 -
传递字符串变量:如果将字符串变量作为参数传递,那么实际变量和形式变量应该具有相同的长度。否则,传递的字符串可能会被无意中操作。在以下情况下不会出现此问题
VAR_OUTPUT CONSTANT
参数。 -
传递位变量: 位变量不能直接传递给
VAR_IN_OUT
变量,因为它需要一个中间变量。 -
传递属性: 不允许
提示
如果将字符串作为变量或常量传递给形式 VAR_IN_OUT CONSTANT 变量,则字符串自动完全传递。您不必检查字符串长度。