需求简述
硬件设备使用485Modbus通讯,需使用 Go 编写采集程序,将数据采集至平台。
方案简述
使用串口服务器将485Modbus通讯转为TCPModbus,并将串口服务器设置为TCPserver。
使用 Go 编写采集器,定期向串口服务器建立TCP链接,采集数据。
技术点与实现
点表
通过struct
实现点位表
这里使用Raw表示原始点表数据,和通讯协议一一对应
后续可将Raw结构封装至更高层的业务结构,用来实现业务数据的表示、嵌套能其他功能
读取二进制数据
通过binary
包,可以实现从buffer中读取数据向struct
赋值
封装为query
在本项目中,query指对单个设备的采集方法
将数据读取封装成query方法,包括TCP采集过程、日志记录、包格式处理等
封装为采集过程
最后需要将所有的采集query放置在统一的采集过程中
在一次采集过程中,创建一条TCP链接,完成所有采集动作,最后断开链接
总结
使用 Go + 串口服务器 进行串口通讯,非常的简单、直观,易于开发维护。
在本次项目实践中,由于 Go 提供了方便的并发编程与控制机制,高负载环境下的性能也得到了充分保障。