如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令”

已锁定

沧海霁月

  • 帖子

    2
  • 精华

    0
  • 被关注

    2

论坛等级:游民

注册时间:2020-07-13

普通 普通 如何晋级?

如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令”

1254

3

2021-01-18 16:04:11

展开查看
引用自找答案,问题ID:247383

S7-1516-3 PN/DP作为主站,与被控制的DC/DC设备进行通讯,能正常连接,可以读到设备的状态值,也可以往下写命令,控制DC/DC设备的启动与停止。
但是有个问题:用监测软件‘SSCOM 串口/网络数据调试器V5.13.1’监测到,只要程序转至在线,启动CPU,CPU就开始不断重复的发送一条“读命令”与两条“写命令”,写指令的内容是修改设备的状态值,大约每隔一秒发一条指令,这是不是我程序的问题呢,或许是我对“写保持寄存器”的值进行修改时,进行的操作有问题,导致它不断的在往外面发送修改值呢?附上SSCOM监控指令图、主站轮询程序图、主站监控表图。
在通过监控表执行修改指令时,我的操作步骤是:1.在‘写保持寄存器’区域输入要修改的值。2.点击”立即一次性修改所有选定值“。
轮询过程中,我们cpu一直发送读取指令应该是正确的,但是不应该一直发送写入指令对设备进行控制吧?如何进行修改才能保证我在想要对设备进行写入命令控制设备时,CPU才发送写入指令,而其余的时间只进行扫描,不发送写入指令呢,请大佬们给些意见吧,谢谢谢谢!

提问者:沧海霁月


123_123 回答道:

只有读指令需要轮询,写指令不需要轮询,把写指令从轮询中移除。

还有4人在找答案上回答了该问题,查看全部>
轮询时,读数据,是定时读取,也就是轮询就可以了,但是向外发送‘写命令’时,不是根据我的需求进行发送,而是轮询到写保持寄存器时,就发送一次写入指令。如何进行修改,让程序根据我自己的需求向外发送指令,而不是一直发送指令呢。
有前辈给出了解决方法:就是在写保持寄存器的Req前加条件,比如写命令的时候,可以置1一个变量,比如Write1,将这个变量串在写保持寄存器的Req引脚上,这样只有Write1为1时,轮询到这一步才会执行写命令。然后在下一个程序段中复位这个变量,表示当写命令成功后把Write1复位。当但不发送写命令的时候,那Write1为0,所以将不执行写命令,为了能跳转,在程序段7,把Write1以常闭形式,并联在M10.6下面,这样在没有写命令时,将自动跳转到第三步。
前辈讲得挺详细的,但我不知道要具体添加哪些指令上去。。。。求教!谢谢!
如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令” 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有8577条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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