汉枫Wi-Fi串口服务器HF2211S应用配置
时间:2023-07-25 15:37:00
实现的功能
上电后主动使用该模块mobusRTU该协议通过该模块的串口读取气体探测器的4路传感器数据
上电后连接指定模块WiFi,通过MQTT协议将读取的数据JSON将格式推送到指定服务器。
细分为以下几个小过程:
模块上电后,主动连接到指定的指定WiFi
模块连接到指MQTT服务器
模块通过modbusRTU协议主动读取设备数据
模块主动将读取的数据推送到mqtt服务器
配置环境
PC系统(Windows 10 专业版 21H1)
WIFI AP(使用手机共享2.4G热点)
USB转485通讯模块
配置软件
Advanced_IP_Scanner
IOTServiceSetupX64_3.0.03
modbusPLC Simulator
mosquitto-2.0.11
Advanced_IP_Scanner
局域网设备扫描软件用于获取局域网HF2211S从AP中获取到的IP地址。
IOTServiceSetupX64_3.0.03
用于发现和配置HF2211S
modbusPLC Simulator
用于模拟气体探测器,可查看模块发送的报纸,便于调试modbusRTU主站。
mosquitto-2.0.11
MQTT服务软件,HF2211S不分析485口读取的数据,转发到MQTT服务器。
配置截图
安装前文提到的配置软件
自带计算机连接模块WiFi
打开配置软件,自动显示搜索到的局域网模块,点击设备编辑,进入设备配置界面
主要设置以下参数
WIFI模式 STA
STA无线名称,密码
连接协议的相关信息
协议:MQTT、订阅主题,发布主题,服务器端地址,端口号
串口信息
波特率、数据位、停止位、校准位
设置基本参数后,点击高级设置,然后点击编辑脚本,导入串口脚本,实现模块主动读取设备数据和数据发送功能。
将以下脚本存储为txt并导入脚本
key=""
cmd01=[0x05,0x03,0x01,0x33,0x00,0x37,0xF4,0x6B]
cmd02=[0x05,0x03,0x02,0x33,0x00,0x37,0xF4,0x2F]
cmd03=[0x05,0x03,0x03,0x33,0x00,0x37,0xF5,0xD3]
cmd04=[0x05,0x03,0x04,0x33,0x00,0x37,0xF4,0xA7]
num=0
TIMER HeartBeat 500
num=num 1
IF(num==1)
SEND(UART,uart0,cmd01)
key="CH1"
END
IF(num==2)
SEND(UART,uart0,cmd02)
key="CH2"
END
IF(num==3)
SEND(UART,uart0,cmd03)
key="CH3"
END
IF(num==4)
SEND(UART,uart0,cmd04)
key="CH4"
num=0
END
END
RECV UART uart0
DATA=INPUT
DATA_S=DATA.hexString()
DATA_B="{\"key\":\"" key "\",\"value\":\"" DATA_S "\"}"
SEND(SOCK,netp,DATA_B)
END
上述代码部分说明
cmd01=[0x05,0x03,0x01,0x33,0x00,0x37,0xF4,0x6B] ///需要发送的命令1
ER HeartBeat 500 每500毫秒执行一次命令
检查设备状态
串口报文捕获
05 03 01 33 00 37 F46B
05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC5C00170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000120B7
05 03 02 33 00 37 F42F
05036E0000001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E5A20008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A7000000000000000000000000000000000006000184D1
05 03 03 33 00 37 F5D3
05036E00000064000000000000000000000000000000000000000000000000FFFF419F0000424800000000000000000000000000008D8300170000000000000000000000000000000000020000899E001700000000F18300350000424800000000000000000000000000000000000600016049
05 03 04 33 00 37 F4A7
05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC3600170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000100C1
MQTT报文捕获
{"key":"CH1","value":"05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC5C00170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000120B7"}
{"key":"CH2","value":"05036E0000001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E5A20008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A7000000000000000000000000000000000006000184D1"}
{"key":"CH3","value":"05036E00000064000000000000000000000000000000000000000000000000FFFF419F0000424800000000000000000000000000008D8300170000000000000000000000000000000000020000899E001700000000F18300350000424800000000000000000000000000000000000600016049"}
{"key":"CH4","value":"05036E000003E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000AC3600170000000000000000000000000000000000000000B08800170000000038DD0028FFFF4398000000000000000000000000000000000006000100C1"}
附:气体检测仪地址表
{"key":"CH2","value":"05036E 0000001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E5A20008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A70000000000000000000000000000000000060001 84D1"}
MQTT报文中,value值中,头部 3个字节 05036E 尾部2个字节CRC校验 84D1去除中间部分为对应通道的数据。
MQTT报文中,第二通道氧气实时浓度对应的报文为 3333 41A7,对应浮点数: 20.899999618530273
通讯
Modbus RTU 9600 n 8 1
5
Point
VirRegAddr
ASDU
可燃气体(通道1)
1
量程
40308
2个字节,Byte0:量程高位Byte1:量程低位
低报警点(float)
40319 float
A1报警点(float)
40321 float
A2报警点(float)
40323 float
实时浓度(float)
40334 float
报警状态
40336
2个字节 Byte0:0x00
Byte0: 0x00 正常
0x01 断线
0x02 超量程
0x03 A2
0x04 A1
存储模式
40361
2个字节, Byte0:保留0x00;
Byte1=0x00;关闭
Byte1=0x01 自动
Byte1=0x02 手动
Byte1=0x03 单点
存储周期
40362
2个字节,Byte0:高位 Byte1:低位
氧气(通道2)
2
量程
40564
50302
低报警点(float)
40575 float
A1报警点(float)
40577 float
A2报警点(float)
40579 float
实时浓度(float)
40590 float
报警状态
40592
存储模式
40617
存储周期
40618
硫化氢(通道3)
3
量程
40820
50303
低报警点(float)
40831 float
A1报警点(float)
40833 float
A2报警点(float)
40835 float
实时浓度(float)
40846 float
报警状态
40848
存储模式
40873
存储周期
40874
一氧化碳(通道4)
4
量程
41076
50304
低报警点(float)
41087 float
A1报警点(float)
41089 float
A2报警点(float)
41091 float
实时浓度(float)
41102 float
报警状态
41104
存储模式
41129
存储周期
41130
实时时间(年分)
40023
2个字节, Byte0:年份高位 Byte1:年份低位
实时时间(月,日)
40024
2个字节, Byte0:月 Byte1:日
实时时间(时,分)
40025
2个字节, Byte0:时 Byte1:分
实时时间(秒)
40026
2个字节, Byte0: 0x00 Byte1: 秒
仪器地址
40027
2个字节 Byte0:保留0x00 Byte1:仪器地址
仪器报警开关
40029
2个字节 Byte0:声音报警开关(0x0关,0x01开)Byte1: 光电报警开关(0x00关,0x01开)
恢复出厂设置
40039
2个字节Byte0:保留0x00当往Byte1中写入0x01时则进行恢复出厂设置