展开查看
S7-1516-3 PN/DP作为主站,与被控制的DC/DC设备进行通讯,能正常连接,可以读到设备的状态值,也可以往下写命令,控制DC/DC设备的启动与停止。
但是有个问题:用监测软件‘SSCOM 串口/网络数据调试器V5.13.1’监测到,只要程序转至在线,启动CPU,CPU就开始不断重复的发送一条“读命令”与两条“写命令”,写指令的内容是修改设备的状态值,大约每隔一秒发一条指令,这是不是我程序的问题呢,或许是我对“写保持寄存器”的值进行修改时,进行的操作有问题,导致它不断的在往外面发送修改值呢?附上SSCOM监控指令图、主站轮询程序图、主站监控表图。
在通过监控表执行修改指令时,我的操作步骤是:1.在‘写保持寄存器’区域输入要修改的值。2.点击”立即一次性修改所有选定值“。
轮询过程中,我们cpu一直发送读取指令应该是正确的,但是不应该一直发送写入指令对设备进行控制吧?如何进行修改才能保证我在想要对设备进行写入命令控制设备时,CPU才发送写入指令,而其余的时间只进行扫描,不发送写入指令呢,请大佬们给些意见吧,谢谢谢谢!
提问者:沧海霁月
只有读指令需要轮询,写指令不需要轮询,把写指令从轮询中移除。
轮询时,读数据,是定时读取,也就是轮询就可以了,但是向外发送‘写命令’时,不是根据我的需求进行发送,而是轮询到写保持寄存器时,就发送一次写入指令。如何进行修改,让程序根据我自己的需求向外发送指令,而不是一直发送指令呢。
有前辈给出了解决方法:就是在写保持寄存器的Req前加条件,比如写命令的时候,可以置1一个变量,比如Write1,将这个变量串在写保持寄存器的Req引脚上,这样只有Write1为1时,轮询到这一步才会执行写命令。然后在下一个程序段中复位这个变量,表示当写命令成功后把Write1复位。当但不发送写命令的时候,那Write1为0,所以将不执行写命令,为了能跳转,在程序段7,把Write1以常闭形式,并联在M10.6下面,这样在没有写命令时,将自动跳转到第三步。
前辈讲得挺详细的,但我不知道要具体添加哪些指令上去。。。。求教!谢谢!