4G工业网关协议转换的详细案例展示

2024-08-12 14:50:44 admin 8

4G工业网关

某化工厂需要通过SG500网关采集各种设备的能耗数据,主要包括:


1. 10台电磁流量计,用于测量各生产环节的水流量,型号为LDCK-25,支持Modbus RTU协议,RS485接口,波特率9600bps,数据位8位,无校验位,停止位1位。


Modbus RTU寄存器信息如下:


   流量计地址 寄存器地址 数据类型 读写属性 备注

   1        0x0000   float    只读    瞬时流量

   1        0x0002   float    只读    正累积流量

   1        0x0004   float    只读    负累积流量

   ...

   10       0x0000   float    只读    瞬时流量  

   10       0x0002   float    只读    正累积流量

   10       0x0004   float    只读    负累积流量


2. 5台电能质量仪表,用于测量各车间的电能质量数据,型号为CSPEM-96,支持Modbus RTU协议,RS485接口,波特率19200bps,数据位8位,偶校验,停止位1位。


Modbus RTU寄存器信息如下:


   仪表地址 寄存器地址 数据类型 读写属性 备注

   1       0x0000   float    只读    A相电压

   1       0x0002   float    只读    B相电压   

   1       0x0004   float    只读    C相电压

   1       0x0006   float    只读    A相电流

   ...  

   5       0x0000   float    只读    A相电压

   5       0x0002   float    只读    B相电压

   5       0x0004   float    只读    C相电压  

   5       0x0006   float    只读    A相电流


3. 1台天然气流量计,用于测量总进气量,型号为FLOWSIC600-XT,支持Modbus TCP协议,以太网接口,Modbus TCP端口502。


Modbus TCP寄存器信息如下:


   寄存器地址 数据类型 读写属性 备注

   0x0000   float    只读    瞬时流量

   0x0002   float    只读    累积流量

   0x0004   int      只读    工作状态字


数据中心使用的是MQTT协议,接入OneNET平台。要求每5分钟上传一次数据。


基于以上需求,使用SG500网关的开发步骤如下:


1. 将10台LDCK-25电磁流量计和5台CSPEM-96电能质量仪表的RS485接口,通过RS485总线全部连接到SG500的RS485接口。注意要接120欧姆终端电阻。将FLOWSIC600-XT天然气流量计的以太网口接到SG500的LAN口。


2. 在SG500上安装Modbus RTU主站程序mbrtu,用于轮询流量计和电表的数据。配置轮询周期为5分钟,从站等待响应超时时间1秒,重发3次。配置Modbus TCP主站程序mbtcp,用于轮询天然气流量计数据。


3. 编写数据解析程序parse_data,对轮询回来的Modbus数据进行解析,提取出各个测点的实际数值和单位。比如流量计的数据解析如下:


   ```python

   def parse_flow_data(data):

       flow = struct.unpack('>f', data[0:4])[0]

       pos_total = struct.unpack('>f', data[4:8])[0]

       neg_total = struct.unpack('>f', data[8:12])[0]

       return {

           'flow': round(flow, 2),

           'flow_unit': 'm3/h',

           'pos_total': round(pos_total, 2), 

           'neg_total': round(neg_total, 2),

           'total_unit': 'm3'

       }

   ```


4. 编写数据封装程序pack_data,将解析后的数据封装成统一的JSON格式。设备编号、时间戳、测点等信息都要包含在内。例如:


   ```json

   {

       "gateway_id": "SG500_1",  

       "timestamp": 1634227200,

       "devices": [

           {

               "device_id": "LDCK-25-1",

               "data": [

                   {"flow": 23.61, "flow_unit": "m3/h"},

                   {"pos_total": 1638.22, "total_unit": "m3"}, 

                   {"neg_total": 0.11, "total_unit": "m3"}

               ]

           },

           {

               "device_id": "CSPEM-96-1", 

               "data": [

                   {"ua": 380.5, "ua_unit": "V"},

                   {"ub": 378.1, "ub_unit": "V"},

                   {"uc": 379.6, "uc_unit": "V"},

                   {"ia": 62.5, "ia_unit": "A"}  

               ]

           },

           {

               "device_id": "FLOWSIC600",

               "data": [

                   {"flow": 899.32, "flow_unit": "m3/h"},

                   {"total": 123838.63, "total_unit": "m3"}, 

                   {"status": 1}

               ] 

           }

       ]

   }

   ```


5. 在SG500上安装MQTT客户端程序mosquitto,使用4G网络连接到OneNET的MQTT服务器。按照OneNET的设备接入要求,配置MQTT参数:


   - 服务器地址: iot-mqtts.heclouds.com 

   - 端口: 8883

   - 证书文件: iot-mqtts-certificate.pem

   - 用户名: 设备ID

   - 密码: 鉴权信息


6. 编写MQTT发布程序pub_data,将封装好的JSON数据,以5分钟为周期,通过MQTT发布到OneNET平台的设备数据流主题。


7. 使用SG500的RS485 DTU功能,将Modbus RTU数据透明传输到数据中心,作为数据校验。配置RS485的TCP服务器模式,本地端口号为502。这样数据中心也可以直接通过Modbus TCP读取设备的原始数据。


8. 考虑到工业环境的复杂性,在SG500本地使用SQLite数据库,对采集到的数据进行本地存储,并记录上传状态。每次存储数据前,先检查磁盘使用率,超过90%时,删除最早的数据。MQTT发布失败时,存储发布失败的数据,等待网络恢复后补发。


9. 配置SG500的看门狗功能,监控Modbus采集程序mbrtu、mbtcp和MQTT发布程序pub_data。如果进程异常退出,看门狗会自动重启进程。同时通过MQTT发布一条异常告警信息到数据中心。


10. 对SG500的系统日志进行配置,将系统日志发送到数据中心的日志服务器。日志等级为INFO,采用rsyslog格式,通过TCP协议发送。


11. 将以上开发的程序打包成SG500的固件,通过网管平台进行批量升级。升级时先将新固件上传到SG500的TF卡中,再通过网管平台下发升级指令,SG500本地完成固件更新和程序替换,实现零宕机升级。


以上就是一个4G工业网关协议转换的详细案例,涉及了Modbus RTU/TCP协议解析、MQTT数据上云、SQLite本地存储、看门狗监控、日志管理、固件升级等方方面面的内容。充分利用了SG500网关强大的边缘计算和通信能力,可以高效地实现工业设备数据采集和上云。


该方案具有如下优点:


1. 支持多种工业协议接入,可以采集各种设备的数据。

2. 具备边缘计算能力,可以在网关端进行数据解析、转换和存储,减轻网络传输压力。

3. 支持标准MQTT协议,可以无缝对接各种物联网平台。

4. 提供透明传输通道,便于数据校验和设备调试。

5. 内置SQLite数据库,具备断网数据缓存能力,保证数据的完整性。

6. 支持看门狗监控,保证程序的高可靠运行。

7. 支持远程日志,便于问题定位和系统维护。

8. 支持固件升级,可以实现远程批量升级,提高运维效率。




相关文章推荐:
网站首页
解决方案
产品中心
在线咨询