1需求背景采集单相电表数据,按照要求的MQTT格式上报指定服务器目的:监控用电设备工作状态及能耗要求:支持4G/WiFi通讯,支持4G、WiFi自动切换,支持modbus数据解析2单相电表通讯协议。
RS485接口,波特率为9600,8位数据位,1位停止位,无校验应用层采用Modbus-RTU协议进行通信,目前只支持0x03(读保持寄存器)、0x04(读输入寄存器)、0x06(写单个寄存器)、0x41(校准)、0x42(电能清零)等功能码。
其中0x41功能码**于内部使用(地址只能是0xF8),用作出厂校准和返厂维修等场合,在功能码之后增加16位的密码,密码默认为0x3721从机的编址范围为0x01~0xF7,地址0x00作为广播地址,从机不需回复主机,地址0xF8作为通用地址,该地址只能用在单从机的**中,可以用作校准等操作。
2.1 读取测量结果主机读取测量结果的命令格式为(共8个字节):从机地址 + 0x04 + 寄存器地址高字节 + 寄存器地址低字节 + 寄存器数量高字节 + 寄存器数量低字节 + CRC校验高字节 + CRC校验低字节。
从机回复如下的命令格式分为两种:正确回复:从机地址 + 0x04 + 字节数 + 寄存器1数据高字节 + 寄存器1数据低字节 + … + CRC校验高字节 + CRC校验低字节错误回复:从机地址 + 0x84 + 异常码 + CRC校验高字节 + CRC校验低字节。
异常码解读如下(下同):0x01,非能;0x02,非法地址;0x03,非法数据;0x04,从机错误其中测量结果的寄存器排布如下表所示寄存器地址 说明 分辨率0x0000 电压测量值 1L*对应0.1V。
0x0001 电流测量值低16位 1L*对应0.001A0x0002 电流测量值高16位0x0003 功率测量值低16位 1L*对应0.1W0x0004 功率测量值高16位0x0005 电能测量值低16位 1L*对应1Wh
0x0006 电能测量值高16位0x0007 频率测量值 1L*对应0.1Hz0x0008 功率因数测量值 1L*对应0.010x0009 报警状态 0xFFFF为报警,0x0000为不报警例如主机发送如下命令(CRC校验码用0xHH和0xLL代替,下同):
0x01 + 0x04 + 0x00 + 0x00 + 0x00 + 0x0A + 0xHH + 0xLL表明主机需要读取从机地址为0x01的10个寄存器,寄存器起始地址为0x0000从机正确的回复如下:。
0x01 + 0x04 + 0x14 + 0x08 + 0x98 + 0x03 + 0xE8+0x00 + 0x00 +0x08 + 0x98+ 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x01 + 0xF4 + 0x00 + 0x64 + 0x00 + 0x00 + 0xHH + 0xLL
以上数据表明:电压为0x0898,换算为十进制为2200,表示220.0V;电流为0x000003E8,换算为十进制为1000,表示1.000A;功率为0x00000898,换算为十进制为2200,表示220.0W;
电能为0x00000000,换算为十进制为0,表示0Wh;频率为0x01F4,换算为十进制为500,表示50.0Hz;功率因数为0x0064,换算为十进制为100,表示1.00;报警状态为0x0000,表示当前功率低于报警功率门限。
3 MQTT上报要求3.1电表数据指标电表的标准数据指标序号 分类 字段 说明 单位1 基础信息 DeviceID 设备编号2 DeviceName 设备名称3 formatType 数据格式类型,默认”1”
4 loStatus 在线状态5 变量 U 电压 V6 I 电流 A7 P 功率 kW8 Cos 功率因数9 EPP 电量 kWh3.2数据格式届时提供MQTT相关的服务器IP 端口 用户名 密码等参数。
(1)心跳格式根据设定的心跳包间隔发送心跳包到平台上,心跳间隔可配置,默认心跳间隔5分钟主要上传信息为坐标、状态、信号强度{“cmdId”:“3”,“gatewayId”:" WG0001",“ip”: “10.19.8.1”,。
“loState”:" 1",“dBm”:" 信号强度"," location ": “经度,纬度”,“version”: “版本信息”,“time”:“2020-09-08 10:20:30”}ip:设置的ip地址
loState:状态, 1:正常 -1:异常dBm:信号强度,具有gps和4G功能的需要提供location:经度,纬度,以,号分割,如116.40,39.90,具有gps和4G功能的需要提供version:的版本信息
(2)***终上传josn格式的数据模板和心跳模板数据模板:{“cmdId” : “10”,“gatewayId” : “WG0001”,“slaveId” : “1”,“DeviceID” : “112233”,
“U” : “219.5000”,“I” : “59.9400”,“p” : “4.9960”,“Cos” : “0.9660”,“EPP” : “9502.1000”,“IoStatus” : “1”,
“time” : “2021-07-28 10:25:06 000”}(3)心跳模板:{“cmdId”:“3”,“gatewayId”:" WG0001",“ip”: “10.19.8.1”,“loState”:" 1",
“version”: “版本信息”,“time”:“2020-09-08 10:20:30 000”}