Modbus_TCP轮询时,req不能置位,导致无法刷新数据,原因是这个...

已锁定

昔日如诗

  • 帖子

    826
  • 精华

    3
  • 被关注

    10

论坛等级:侠圣

注册时间:2018-04-17

钻石 钻石 如何晋级?

Modbus_TCP轮询时,req不能置位,导致无法刷新数据,原因是这个...

1178

9

2024-07-04 10:00:28

    我这里是用一个网关接好多485设备,PLC做Modbus_TCP的客户端,用MB_Client功能块。

    轮询代码的最前面是一个按钮(起名“读数据”),后面接REQ的线圈set形式。按钮是“瞬时”模式,由人工触发,就是按一下再放掉,它自己就会先置位再复位,留下PLC里的req一直被置位,等通信结束之后req又被done和error复位。就这样完成一次数据刷新。

    一般地这个任务都能比较好地完成,就是总能刷新数据,但是时不时有会有在面板上按了“读数据”按钮时,req没有被置位,自然就没有激活MB_Client功能块了,没有刷新数据。这种事不是天天犯的,而是这天或者那天犯的。我以前不重视。但是有一天,这件事严重干扰了工作,我在下午刷新不了数据,到了晚上还刷新不了。我想,确实得解决这个问题了。

     起初我以为是PLC的扫描周期导致的,我的解释是:在HMI按了“读数据”按钮时,PLC已经扫描过头了,没有读到这个按钮的置位信号。我还在此论坛上发贴求助过。

     但是那天我在七个小时内经常去刷新数据(就是让req置位)而不成功,那肯定就不是PLC扫描周期的问题了。

     解决过程复杂,直接说答案吧,这个问题是宕机导致的。就是某次轮询时,你还没有等它结束,就去轮询别的数据了,导致上一个轮询的req位卡在中间,既不能复位,也不能置位(症状就是在面板上触发不了它了);去轮询下一个数据时,又报错说“此通信被另一个实例应用”。

    怎么解决的呢?就是从头到尾再轮询一下所有的485设备,比如依次按轮询1、轮询2、轮询3.....一直到最后一个轮询。


Modbus_TCP轮询时,req不能置位,导致无法刷新数据,原因是这个... 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15113条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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