恭喜,你发布的帖子
发布于 2022-04-15 14:36:04
12楼
读懂楼主的话真有点费劲,断句都不会了,语文是工控老师教的吗?
是不是这个意思,“FB中的Inout引脚关联了一个全局变量,如果这个变量中的某一个位在触摸屏上定义了按钮点动触发的功能,则有可能会出现该位变量一直被置1的情况,即使手已经离开屏幕,按钮已经复位。”
如果是这样,
首先,先问你是否使用的是西门子的触摸屏(大概率不是我猜)?
其次,按钮的点动功能是如何定义的(不管谁家的产品)?
第三,确保程序里没有对该位的写操作(有意的或无意的)?
最后,与变量类型是否IN-OUT没有半毛钱的关系
这个问题时间太长了,当时确实对自己所想知道的答案有些迷糊。后来自己找了很久的资料,也大概知道了原因。
大概是1200/1500中FB/FC 参数传送 的机制有关
参数传送 分为两种 指针 和 副本
在不考虑优化块和非优化块的区别的情况下,参数在FC\FB中的传递方式如下图:
而如果 实参 与 该FB/FC设置的块属性 不相同时 (优化块与标准块),in-out结构型数据会改变访问方式,即更改为副本的访问方式。
查找的资料里面有这么一句话:
如果被调用块中含有大量的结构化参数,则很快会导致临时存储区(局部数据堆栈)溢出。
如果异步过程(如HMI访问或中断OB)更改所传递的实参,则可能导致错误发生,
如果块操作后讲这些值重新复制到最初作为实参传递的操作书中,则会覆盖异步操作中对这些操作数所做的更改。
这就能解释为什么在IN-OUT 接口下 变量按钮按下弹不起来的情况了
请填写推广理由:
分享
只看
楼主