技术论坛

 回复:IN_OUT引脚使用探讨

返回主题列表
作者 主题
Setrarin
侠士

经验值:1749
发帖数:139
精华帖:4
楼主    2019-08-31 11:37:09
主题:IN_OUT引脚使用探讨

前段时间在项目上遇到一个问题,今天我把它抽象一个小程序,大家一块探讨下问题的奥秘。

1. 建立一个非优化的数据块,内容如图:


2.建立FB,在in_out引脚填写与数据块相同的变量,然后编写程序,分布通过inout引脚和直接访问的方式对数据块的变量进行赋值。





3。OB1调用FB, 引脚赋值


我先请大家预测下结果并测试下,看看结果与你的预期是否一致。


项目1.zip


但行好事,莫问前程
mkas
侠士

经验值:1080
发帖数:125
精华帖:2
9楼    2019-09-10 16:40:31
精华帖  主题:回复:IN_OUT引脚使用探讨

请看下面的解释:

优化访问块和标准访问块之间的参数传送 

如果在块调用过程中将结构作为 in/out 参数传送到被调用块中,则系统默认将这些结构传 送为指针(引用调用)。 但如果这两个块的优化设置不同,则不适用:如果一个块的属性为“优化访问”(Optimized access),而另一个块的属性为“标准访问”(Standard access),则所有参数都始终作为副 本传送(传值调用)。  如果块包含大量结构化参数,这会很快导致临时存储区(局部数据堆栈)溢出。 如果异步过程(如 HMI 访问或中断 OB)原始操作数发生变更,则可能会导致错误发送。 如果在块处理后重新将副本复制回原操作数中,则将覆盖原操作数中因块调用过程中创建 副本而发生的异步更改。 通过将两个块设置为相同的访问方式,或者先将异步访问结果写入一个单独存储区,然后 再在适当的时间同步复制该区域,可有效避免这种错误的发生。

好好学习,天天向上
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。