展开查看
以下是引用Zaxife在2016-12-17 12:50:57的发言 >20楼:方法1:使用modbus库
每个设备读指令两条读取多寄存器:40003~9、40257~265,写只能单个寄存器写14条指令,读写共16条,3台设备就48条指令,全部都写轮询周期大概6左右秒,如果没有写的话1秒内。读写指令可以根据实际情况分开周期处理不要读完就马上写…
方法2:只有一个指令,通过指针改变指令参数
每一个指令处理完成后通过修改指针指向下一个指令的参数组然后触发指令。精通的程序员适用。
方法3:自定义自由通讯协议
这个方法需要精通自由通讯,精通Modbus通讯协议,否则还是不建议。配置通讯费参数,在通讯中断中处理,时间上是最快的(无需等待主程序周期处理),但也快不了多少。不过需要避免主程序进程与中断程序进程之间的数据逻辑。
方法1里轮询周期是怎么计算的?
读取好像只能读单个寄存器,对应功能码03;写可以同时写多个,对应功能码16