回复:FC Inout引脚 与 FB Inout 引脚 有没有本质的区别?

已锁定

Jade Q

  • 帖子

    10
  • 精华

    0
  • 被关注

    1

论坛等级:游侠

注册时间:2020-07-14

普通 普通 如何晋级?

发布于 2022-04-15 14:36:04

12楼

展开查看
以下是引用Zane在2021-07-28 23:35:54的发言 >2楼

读懂楼主的话真有点费劲,断句都不会了,语文是工控老师教的吗?


是不是这个意思,“FB中的Inout引脚关联了一个全局变量,如果这个变量中的某一个位在触摸屏上定义了按钮点动触发的功能,则有可能会出现该位变量一直被置1的情况,即使手已经离开屏幕,按钮已经复位。”


如果是这样,

首先,先问你是否使用的是西门子的触摸屏(大概率不是我猜)?

其次,按钮的点动功能是如何定义的(不管谁家的产品)?

第三,确保程序里没有对该位的写操作(有意的或无意的)?

最后,与变量类型是否IN-OUT没有半毛钱的关系

这个问题时间太长了,当时确实对自己所想知道的答案有些迷糊。后来自己找了很久的资料,也大概知道了原因。


大概是1200/1500中FB/FC 参数传送 的机制有关



参数传送 分为两种 指针 和 副本


在不考虑优化块和非优化块的区别的情况下,参数在FC\FB中的传递方式如下图:


而如果 实参 与 该FB/FC设置的块属性 不相同时 (优化块与标准块),in-out结构型数据会改变访问方式,即更改为副本的访问方式。



查找的资料里面有这么一句话:

如果被调用块中含有大量的结构化参数,则很快会导致临时存储区(局部数据堆栈)溢出。

如果异步过程(如HMI访问或中断OB)更改所传递的实参,则可能导致错误发生,

如果块操作后讲这些值重新复制到最初作为实参传递的操作书中,则会覆盖异步操作中对这些操作数所做的更改。


这就能解释为什么在IN-OUT 接口下 变量按钮按下弹不起来的情况了


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10979条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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