漢楓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

打開配置軟件,會自動顯示搜索到的局域網內的模塊,點擊設備編輯,進入設備配置界面

主要設置如下參數

  • WIFI模式 STA

​ STA無線名稱、密碼

  • 連接協議相關信息

​ 協議:MQTT、訂閱主題、發布主題、服務器端地址、端口號

  • 串口信息

​ 波特率、數據位、停止位、校驗位

基本參數設置設置完成后,點擊高級設置,再點擊編輯腳本,導入串口腳本,實現模塊主動讀取設備數據及數據上送功能。

將如下腳本存儲為txt文件,並導入腳本

key=""

cmd01=[0x05,0x03,0x01,0x34,0x00,0x37,0x45,0xAA]
cmd02=[0x05,0x03,0x02,0x34,0x00,0x37,0x45,0xEE]
cmd03=[0x05,0x03,0x03,0x34,0x00,0x37,0x44,0x12]
cmd04=[0x05,0x03,0x04,0x34,0x00,0x37,0x45,0x66]

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":"05036E0064000000000000000000000000000000000000000000000000000041A000004248000000000000000000000000000090DA001F000000000000000000000000000000000001000056F0001F00000000E8D5001C000042200000000000000000000000000000000000060001002190E4"}

{"key":"CH2","value":"05036E001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E65E0008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A700000000000000000000000000000000000600010082AE92"}

{"key":"CH3","value":"05036E0064000000000000000000000000000000000000000000000000FFFF419F00004248000000000000000000000000000088CA00170000000000000000000000000000000000020000899E001700000000F183003500004248000000000000000000000000000000000006000100242A29"}

{"key":"CH4","value":"05036E03E800000000000000000000000000000000000000000000000000004248000043480000000000000000000000000000B18100170000000000000000000000000000000000000000B08800170000000038DD0028FFFF43980000000000000000000000000000000000060001001E2210"}

附:氣體檢測儀地址表

{"key":"CH2","value":"05036E
001E00000000000000000000000000000000000000000000000000004190000041B80000000000000000000000000000E65E0008333341A7000000000000000000000000000200009C75000000000000E84B0008333341A700000000000000000000000000000000000600010082 AE92"}

MQTT報文中,value值中,頭部 3個字節 05036E 尾部2個字節CRC校驗 AE92去除,中間部分為對應通道的數據。

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時則進行恢復出廠設置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM