恭喜,你发布的帖子
发布于 2023-02-21 15:31:54
9楼
我只能说你的想法和需求,我能实现,但是不是使用MODBUS库,而是自由口。
在编写MODBUS通讯时,个人倾向使用自由口方式通讯,协议还是MODBUS。程序容量小,也更灵活。一般采用定时中断,定时读写设备,速度快的话,20MS一个周期。不考虑重发、断线屏蔽功能,一般不做控制使用。
采用定时触发通讯读写,需要使用控制字节,进行周期控制。比如需要读写10个数据,就需要控制字节1-10周期循环变化【这个不需要FOR \NEXT循环控制,定时中断累加、比较、复位即可】。
争对你的需求,如果你的设备是相同的,只是地址不一样,完全可以使用控制字节,通过间接地址生成你设备的从站地址,实现多设备的通讯功能;包括接收地址,同样使用间接地址传送,使接收数据保存在不同的数据区。
对不同一设备的寄存器,如果是连续的、或者比较近,最好一次读取;如果分散的话,只能一个设备多次读取,再对多个设备通讯读取。想简化,就必须通过通讯控制字节,自动换算从站地址、从站寄存器地址、从站数据接收地址,理论上就简化程序,实现你的功能了!
请填写推广理由:
分享
只看
楼主