当前位置: 主页 > PLC控制

S7-1200(1500)modbus RTU调试的疑问

采用1500的MODBUS模块与电表通讯,开始时候采用modbus_mASter的done位、error位置为下一块仪表的REQ位,同时复位上一块表的REQ位的方式轮训方式,但是这种方式问题在于当电表未上电时候,modbus_maSTer的done位、error、busy位有可能都为0,导致这种方式轮训停止不前;不知道为什么?

后来不再采用上述的轮询方式,改用时间轮询,基本思路是通过定时器第1秒调用一次modbus_master,DATA_PTR数据传给DB1;第二秒再调用modbus_master,DATA_PTR数据传给DB2…..依次类推。但是发现DB1…DB2…会有清零的状态,可能的问题应该在于DATA_PTR数据传给DB过程中与扫描周期之间产生的,但是不清楚如何处理,求助!
附图1:正常接受的数据;
附图2:数据被清零;
附图3:modbus-Comm_LOAD调用;
附图4:过程中;
附图5:modbus_master调用
附图6:站地址及REQ处理;
附图7:DATA_PTR数据传送。

图片说明:

S7-1200(1500)modbus RTU调试的疑问S7-1200(1500)modbus RTU调试的疑问 S7-1200(1500)modbus RTU调试的疑问eedc59b7f28fa8134c8a9bdFCa840514 S7-1200(1500)modbus RTU调试的疑问S7-1200(1500)modbus RTU调试的疑问 S7-1200(1500)modbus RTU调试的疑问S7-1200(1500)modbus RTU调试的疑问 S7-1200(1500)modbus RTU调试的疑问S7-1200(1500)modbus RTU调试的疑问 S7-1200(1500)modbus RTU调试的疑问fcbc68359788b0201419ff02fb5b48a0 S7-1200(1500)modbus RTU调试的疑问S7-1200(1500)modbus RTU调试的疑问

最佳答案

这个主要原因是:当电表站丢电后,主站无法接受到电表站回授回来的型号。用done的优点是可以利用程序(modbus)通信,提高轮询效率;缺点是从站丢失会造成通信的失败。
采用定时器方式相当于广播式modbus通信,通信轮询时间长,效率低,但可以客服因从站丢失类似的问题,你适当增加一点轮询时间试试。

提问者对于答案的评价:
ok

专家置评

已阅,最佳答案正确。

  • 关注微信

猜你喜欢

微信公众号