本文以485型风速传感器和光照传感器为例,介绍通过边缘计算网关采集数据并上传。两款传感器均是通过modbus协议进行通讯,首先需要了解modbus协议。
文章目录
一、Modbus协议介绍
Modbus 是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus 网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成,其系统结构既包括硬件、亦包括软件,它可应用于各种数据采集和过程监控。Modbus是一个主-从模式的通信协议,属于数据链路层上的协议,协议本身不涉及具体的硬件要求,常见的应用Modbus协议的物理接口有RS-485、RS232、USART等的通信链路。
Modbus协议分为三种,包括Modbus-RTU、Modbus-ASCII、Modbus-TCP。最常见的就是RTU,也是传感器类设备、普通智能电表常用的通讯规约。
1、通讯数据(信息帧)格式
数据格式 | 地址码 | 功能码 | 数据区 | 错误校验 |
---|---|---|---|---|
数据长度 | 1字节 | 1字节 | N字节 | 16位CRC码(冗余循环码) |
2、通讯协议示例以及解释
读取设备地址为0x01的风速值
问询帧
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
---|---|---|---|---|---|
0x01 | 0x03 | 0x00,0x16 | 0x00,0x01 | 0x65 | 0xCE |
应答帧(例如读到风速值为2.3m/s)
地址码 | 功能码 | 有效字节数 | 风速值 | 校验码低位 | 校验码高位 |
---|---|---|---|---|---|
0x01 | 0x03 | 0x02 | 0x00,0x17 | 0xF8 | 0x4A |
0017 H(十六进制)=23=>风速=2.3m/s
读取设备地址为0x01的光照度值
问询帧
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
---|---|---|---|---|---|
0x01 | 0x03 | 0x00,0x07 | 0x00,0x02 | 0x75 | 0xCA |
应答帧(例如读到光照度为132845Lux)
地址码 | 功能码 | 有效字节数 | 风速值 | 校验码低位 | 校验码高位 |
---|---|---|---|---|---|
0x01 | 0x03 | 0x04 | 0x00,0x02,0x06,0xF6 | 0xF8 | 0x4A |
000206F6H(十六进制)=132854=>光照度=132854Lux
二、传感器的本地调试
通过USB转485转换器与传感器连接,打开串口调试助手发送闻讯帧报文即可得到应答帧报文。
三、传感器的在线调试
- 通过本地调试无误后就可以将传感器与网关连接进行在线调试
- 边缘计算网关可以定时发送modbus报文采集电能数据,并通过MQT、HTTP、TCP等协议将数据发送到处理数据的后台服务器对数据进行处理。
- 智能网关采用的是佰马科技的BMG700边缘计算网关,产品采用高性能的工业级高端处理器,配备丰富的数据采集、控制与传输接口,集2G/3G/4G/NBIoT/GPS/WiFi/有线等多种通信方式,集成强大的本地存储和外扩存储功能,可实现数据采集、本地存储、多种协议转换、智能网关、安全网关、全网通/4G 无线通信、数据处理转发、VPN虚拟专网、WIFI 覆盖、本地与远程控制等功能。产品采用 Linux 操作系统,集成 Python 开发环境和 C 语言开发环境,支持 MQTT,HPPT,TCP,UDP等多种通讯协议,能进行本地采集和数据简单的计算功能。
- 将传感器的485接口A、B与网关的COM口相连接。将其他的电源线,4G天线和WIFI天线连接,最后将网关通过网线与电脑进行连接,进入网关的配置界面。分别配置采集的频率,串口的基本参数,MODBUS规则,上报的服务器和上报的协议。
四、数据的采集与上传
与网关接线完成后就可以登录路由器配置系统进行数据采集的一些配置
1、数据采集的频率
设置为10s采集一次数据,10s上报一次数据到服务器,上报周期需大于等于采集周期
2、接口设置
光照和风速传感器都是485的物理接口
3、Modbus规则设置
这里需要注意的是设备ID以及起始地址均是帧文格式的10进制形式。
4、服务端配置
5、采集结果
6、上报结果
原创文章,作者:happytang,如若转载,请注明出处:https://www.wudianban.com/485cgq.html