因MBUS_MSG指令读写一次要多个扫描循环才能完成,把它放在子程序或中断程序可以吗,要怎样做程序(试了放在中断程序里不行)。如果不行,用什么方法解决很多MBUS_MSG指令读写使程序扫描时间过长的问题?
最佳答案
modbus RTU Master 协议库的 MBUS_CTRL 指令不需要很长的执行时间。MBUS_需要 1.11 ms用于初始化,在后续的每个扫描周期中只占用 0.41 ms。
调用 MBUS_MSG 子程序会加长处理时间。大部分时间都用于 CRC 校验的计算。每读、写一个字的数据就需要 1.85 ms扫描时间。数据最多的情况下(读、写 120 字的数据),扫描时间大概会扩增加 222ms。读操作的时间主要消耗在接收数据上;写操作的时间主要消耗在发送数据上。
建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的Done 完成位来激活,以保证所有读写指令循环进行。
见《S7 200 modbus 协议使用详解》:
http://www.gongkong001.com/News/5025.html
提问者对于答案的评价:
谢谢,回答的较详细!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345559.html