回复:UDT数据类型做FB 输入输出接口时,HMI置位操作UDT中一个BOOL变量时,偶尔置位不成功!

已锁定

伊默

西门子1847工业学习平台

  • 帖子

    4271
  • 精华

    118
  • 被关注

    220

论坛等级:至圣

注册时间:2003-10-24

白金 白金 如何晋级?

发布于 2024-12-23 23:18:19

5楼

弄明白这个问题, 你得搞清楚到底什么是IN_OUT? 它的运行机制是什么?

IN_OUT类型和Variant/REF_TO 的区别是什么?


这种普通类型的参数,在IN_OUT里传递的是一个“复制”出来的脚本。 就是当调用时,在调用块里把实参复制一个副本出来(IN的动作),此时原本并不参与调用块的处理, 刚好你在调用块里在处理副本时,触摸屏来个置位,把原本置位了,此时没问题, 可是等调用块完成时系统又自动将调用块的副本全部拷贝赋值给外面的原本(OUT的动作), 这下就把刚才触摸屏的操作给覆盖了!


你把变量用Varianrt形参传递,然后调用块里采用REF_TO来指向(或使用VariantGet与VariantPut组合来操作),这个时候才是真正的在调用块直接操作实参了! 相当于把实参完全变成了类似全局变量了!


说再多,也得自己去体会了。

I can do it
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15356条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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