S71200485通讯口上挂20个多功能仪表,走modbus通讯协议。轮询一遍需要每台仪表读一次数据,写一次数据,按照官网例子来编一个轮询差不多要2分钟,能否在几秒钟之内完成上述功能,如何实现比较快?
问题补充:
能否使用循环中断來实现轮询功能?
最佳答案
轮询可以考虑两种方式:
1、定时轮询,比如第1秒读1#表,第2秒读2#表以此类推
2、通过通讯成功标志位轮询,即与读1#表成功后,读2#表;读2#表成功后,读3#表。以此类推。
对通信实时性要求比较高的话,推荐采用第2种方式。
具体实现方法:
1、用一个计数器对通信功能块的DONE和ERROR位进行计数,
2、通过该计数器的值来触发读写功能块,比如计数器=1,读1#表;计数器=2,读2#表。
3、可以多试几次,确定一个比较合适的通信超时时间(超时时间太长的话,影响通信速度)。
4、1200MODBUS指令的背景数据块里有个“RETRY重试次数”的变量,默认为2,可以把该变量改为0。
提问者对于答案的评价:
谢谢。
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc195237.html