技术论坛

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

作者 主题
游民

经验值: 81
发帖数: 2
精华帖: 0
主题:如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令”
推荐帖


只看楼主 楼主 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下面,这样在没有写命令时,将自动跳转到第三步。
前辈讲得挺详细的,但我不知道要具体添加哪些指令上去。。。。求教!谢谢!
 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1670835&b_id=66&s_id=0&num=3

版主

经验值: 76166
发帖数: 19135
精华帖: 378
回复:如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令”


只看楼主 1楼 2021-01-19 00:37:15

呵呵,MODBUS通信是基于任务的通信,一个通信任务你管他是读是写呢?


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
侠圣

经验值: 4241
发帖数: 344
精华帖: 1
回复:如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令”


只看楼主 2楼 2021-12-17 10:36:05

消消火,估计楼主表达的,和你理解的有偏差


理想很丰满,现实很骨感
以下网友喜欢您的帖子:

  
侠士

经验值: 1657
发帖数: 87
精华帖: 0
回复:如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令”


只看楼主 3楼 2021-12-18 12:40:50

你的前辈都讲的很清楚了啊,照着做就好了,不会再问他就好了呀!


努力到无能为力,拼搏到感动自己!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
如何让MODBUS主站轮询时一直读取数据,但只按照修改值操作发送“写入指令”
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。