SR20主站,往IND331里面写入数据,刚开始一直写不进去,后来我们重新做了个小程序,直接在程序里面赋值然后发送给IND331,在ind331里面能检测到数据,但是如果将程序里面的赋值修改成其他数据,下载给PLC后,ind331就不能刷新成修改后的数据,需要将IND331断电后才能刷新出来,这个怎么回事?
问题补充:
ind331是先把数据写入40005,然后再写一个数据到40006,40005是设置的参数,40006是设置的参数地址,这两个写入是按轮询做的,第一次写入完成后复位DONE,复位使能信号,置位下一次写入,最后40006写完后同样复位使能,复位DONE,按理说修改数据前和修改数据后都是同一段程序,可结果却不一样,调试很长时间一直这个问题。
最佳答案
ind331里面能检测到数据,但是如果将程序里面的赋值修改成其他数据,下载给PLC后,ind331就不能刷新成修改后的数据,需要将IND331断电后才能刷新出来,这个怎么回事?
最近我也刚搞个和变频器的modbus通讯。
感觉是你的程序写入问题。就是你第一次写的数据,发送到ind331.这个过程完成了,没有问题,说明通讯成功,数据也有。
但是你改变plc的写入数据,相当于第二次写入数据,这个时候你应该在plc调用第二个写入程序,第二个发送使能是你第一次写入modbus完成的标志位,同时,要复位第一次写入指令的使能!
因为你plc只调用一个写入指令,只是更改了写入数据! 所以,你把ind331断电重启,相当于这个效果。
不不知道你明白不?
提问者对于答案的评价:
还是程序的问题 ,轮询过程中有多次调用发送冲突了
专家置评
建议参考A0136里的轮询程序
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc133850.html