Bootstrap

串口服务器网页显示iis,生命在等待中延续:汉枫Wi-Fi串口服务器HF2211S应用案例... 转载

要实现的功能

使用HF2211S模块通过WiFi模块连接到厂区网络,以mobusRTU协议,主动读取气体检测仪的多路传感器数据,并通过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

打开配置软件,会自动显示搜索到的局域网内的模块,点击设备编辑,进入设备配置界面

cc9e46a979b99e51bcdffc77f97939d6.png

主要设置如下参数

WIFI模式 STA

? STA无线名称、密码

连接协议相关信息

? 协议:MQTT、订阅主题、发布主题、服务器端地址、端口号

串口信息

? 波特率、数据位、停止位、校验位

98470f930a79da09871e262ddcf3cd9a.png

基本参数设置设置完成后,点击高级设置,再点击编辑脚本,导入串口脚本,实现模块主动读取设备数据及数据上送功能。

b0dfd84090b66267f85155ee6164af53.png

0de85f5ca5174031f9eaf99e1ac9645e.png

将如下脚本存储为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毫秒执行一次命令

设备状态查看

36feb224c621b50e0f648a1ad86859b3.png

串口报文捕获

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时则进行恢复出厂设置bk

;