1. 修改地址和波特率
參數設置
①、選擇正確的COM口(“我的電腦—屬性—設備管理器—端口”里面查看COM端口),列舉出幾種不同的485轉換器的驅動名稱。
②、單獨只接一臺設備并上電,點擊軟件的測試波特率,軟件會測試出當前設備的波特率以及地址,默認波特率為9600bit/s,默認地址為0x01。
③、根據使用需要修改地址以及波特率,同時可查詢設備的當前功能狀態。
④、如果測試不成功,請重新檢查設備接線及485驅動安裝情況。
2. 通信協議
2.1 通訊基本參數
編 碼 |
8位二進制 |
數據位 |
8位 |
奇偶校驗位 |
無 |
停止位 |
1位 |
錯誤校驗 |
CRC(冗余循環碼) |
波特率 |
2400bit/s、4800bit/s、9600 bit/s可設,出廠默認為9600bit/s |
2.2 數據幀格式定義
采用Modbus-RTU 通訊規約,格式如下:
初始結構 ≥4 字節的時間
地址碼 = 1 字節
功能碼 = 1 字節
數據區 = N 字節
錯誤校驗 = 16 位CRC 碼
結束結構 ≥4 字節的時間
地址碼:為變送器的起始地址,在通訊網絡中是唯一的(出廠默認0x01)。
功能碼:主機所發指令功能指示。
數據區:數據區是具體通訊數據,注意16bits數據高字節在前!
CRC碼:二字節的校驗碼。
主機問詢幀結構:
地址碼 |
功能碼 |
寄存器起始地址 |
寄存器長度 |
校驗碼低位 |
校驗碼高位 |
1字節 |
1字節 |
2字節 |
2字節 |
1字節 |
1字節 |
從機應答幀結構:
地址碼 |
功能碼 |
有效字節數 |
數據一區 |
第二數據區 |
第N數據區 |
校驗碼 |
1字節 |
1字節 |
1字節 |
2字節 |
2字節 |
2字節 |
2字節 |
2.3 通訊寄存器地址說明
設備的地址為起始地址,當702寄存器數值為1時設備可虛擬多地址,若起始地址為1,則問詢1-8地址都應答,連續8個地址分別代表8種不同的設備。當702寄存器數值為0時,虛擬多地址功能則無效,若起始地址為1,既詢問2-8號設備不會再有應答,此時只可使用1號地址詢問500-512號寄存器;
虛擬多地址說明:
例如起始地址為1,則不同的地址代表的設備及0號和1號寄存器存放的內容如下表所示:
地址 |
代表設備 |
0號寄存器 |
1號寄存器 |
1 |
風速設置 |
風速值(實際值10倍) |
風力值(實際值) |
2 |
風向設備 |
風向值0-7檔(實際值) |
風向值0-360(實際值) |
3 |
溫濕度設備 |
濕度值(實際值10倍) |
溫度值(實際值10倍) |
4 |
噪聲設備 |
噪聲值(實際值10倍) |
|
5 |
PM2.5和PM10設備 |
PM10值(實際值) |
PM2.5值(實際值) |
6 |
大氣壓力設備 |
大氣壓值(實際值10倍) |
|
7 |
光照設備 |
20萬光照值高位(實際值) |
20萬光照值(實際值) |
8 |
TSP設備 |
TSP設備(實際值) |
|
另外500到512號寄存器中的內容如下表所示(支持03/04功能碼):
寄存器地址 |
PLC或組態地址 |
內容 |
操作 |
500 |
40501 |
風速值(實際值10倍) |
只讀 |
501 |
40502 |
風力值(實際值) |
只讀 |
502 |
40503 |
風向值0-7 |
只讀 |
503 |
40504 |
風向值0-360 |
只讀 |
504 |
40505 |
濕度值(實際值10倍) |
只讀 |
505 |
40506 |
溫度值(實際值10倍) |
只讀 |
506 |
40507 |
噪聲值(實際值10倍) |
只讀 |
507 |
40508 |
PM2.5值(實際值) |
只讀 |
508 |
40509 |
PM10值(實際值) |
只讀 |
509 |
40510 |
TSP值(實際值) |
只讀 |
510 |
40511 |
氣壓值(實際值10倍) |
只讀 |
511 |
40512 |
20W的Lux值高16位值(實際值) |
只讀 |
512 |
40513 |
20W的Lux值低16位值(實際值) |
只讀 |
此外700-702寄存器為控制寄存器,(支持03/04/06/16功能碼)
寄存器地址 |
PLC或組態地址 |
內容 |
操作 |
700 |
40701 |
控制繼電器1
寫1閉合 寫0斷開 |
讀寫 |
701 |
40702 |
控制繼電器2
寫1閉合 寫0斷開 |
讀寫 |
702 |
40703 |
設備虛擬多地址使能
寫1:設備可虛擬成多地址
寫0:多地址功能禁用 |
讀寫 |
2.4 通訊協議示例以及解釋
假設起始地址為1,通過0x00 00號和0x00 01號寄存器讀取數據
2.4.1通過不同地址問詢0號和1號寄存器
-
問詢風速值
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC4 |
0x0B |
應答幀(例如讀到風速為1.2m/s,風力為1級風)
地址碼 |
功能碼 |
有效字節數 |
風速值 |
風力值 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x03 |
0x04 |
0x00 0x0C |
0x00 0x01 |
0xFB |
0xF0 |
風速:
0x000C (十六進制)= 12 =>風速= 1.2m/s
風力:
0x0001(十六進制)=1=> 風力 = 1級風
-
問詢風向
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x02 |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC4 |
0x38 |
應答幀(例如讀到風向為西南風)
地址碼 |
功能碼 |
有效字節數 |
風向(0-7) |
風向(0-360) |
校驗碼低位 |
校驗碼高位 |
0x02 |
0x03 |
0x04 |
0x00 0x05 |
0x00 0xE1 |
0x19 |
0x7A |
風向計算:
風向值:0x0105(十六進制)= 5=> 風向值 = 5(西南風)
風向值:0x00E1(十六進制)=225=>風向值225度(西南風)
采集值對應換算關系:
采集值(0-7檔) |
采集值(0-360°) |
對應方向 |
0 |
0° |
北風 |
1 |
45° |
東北風 |
2 |
90° |
東風 |
3 |
135° |
東南風 |
4 |
180° |
南風 |
5 |
225° |
西南風 |
6 |
270° |
西風 |
7 |
315° |
西北風 |
-
問詢溫濕度值
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x03 |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC5 |
0xE9 |
應答幀(例如讀到溫度為-10.1℃,濕度為65.8%RH)
地址碼 |
功能碼 |
有效字節數 |
濕度值 |
溫度值 |
校驗碼低位 |
校驗碼高位 |
0x03 |
0x03 |
0x04 |
0x02 0x92 |
0xFF 0x9B |
0x79 |
0xFD |
溫度:當溫度低于0℃時以補碼形式上傳
0xFF9B(十六進制)= -101 => 溫度 = -10.1℃
濕度:
0x0292(十六進制)=658=> 濕度 = 65.8%RH
-
問詢噪聲
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x04 |
0x03 |
0x00 0x00 |
0x00 0x01 |
0x84 |
0x5F |
應答幀(例如讀到噪聲值為50.8dB)
地址碼 |
功能碼 |
有效字節數 |
噪聲值 |
校驗碼低位 |
校驗碼高位 |
0x04 |
0x03 |
0x02 |
0x01 0xFC |
0x75 |
0x95 |
噪聲計算:
噪聲值:0x01FC(十六進制)= 508=> 噪聲值 = 50.8dB
5. 問詢PM10和PM2.5
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x05 |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC5 |
0x8F |
應答幀(例如讀到PM2.5為85ug/m3,PM10為156ug/m3)
地址碼 |
功能碼 |
有效字節數 |
PM10值 |
PM2.5值 |
校驗碼低位 |
校驗碼高位 |
0x05 |
0x03 |
0x04 |
0x00 0x9C |
0x00 0x55 |
0xAF |
0x8A |
PM10計算:
PM10:0x009C (十六進制)= 156 => PM10 = 156ug/m3
PM2.5計算:
PM2.5:0x0055(十六進制)= 85=> PM2.5 = 85ug/m3
6. 問詢大氣壓力值
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x06 |
0x03 |
0x00 0x00 |
0x00 0x01 |
0x85 |
0xBD |
應答幀(例如讀到大氣壓力值為15.1Kpa)
地址碼 |
功能碼 |
有效字節數 |
大氣壓力值 |
校驗碼低位 |
校驗碼高位 |
0x06 |
0x03 |
0x02 |
0x00 0x97 |
0x4C |
0x2A |
氣壓計算:
氣壓值值:0x0097(十六進制)= 151=> 大氣壓力值 = 15.1Kpa
7. 問詢光照
問詢幀
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x07 |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC4 |
0x6D |
應答幀(例如讀到光照度為132808Lux)
地址碼 |
功能碼 |
有效字節數 |
20萬光照高 |
20萬光照低 |
校驗碼低位 |
校驗碼高位 |
0x07 |
0x03 |
0x04 |
0x00 0x02 |
0x06 0xC8 |
0x3F |
0xC5 |
產品為0~20萬量程變送器,單位為1Lux
0x00 02 06 C8(十六進制) = 132808=> 光照度=132808Lux
8. 問詢TSP
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x08 |
0x03 |
0x00 0x00 |
0x00 0x01 |
0x84 |
0x93 |
應答幀(例如讀到TSP值為50.8ug/m3)
地址碼 |
功能碼 |
有效字節數 |
TSP值 |
校驗碼低位 |
校驗碼高位 |
0x08 |
0x03 |
0x02 |
0x01 0xFC |
0x65 |
0x94 |
TSP計算:
TSP值:0x01FC(十六進制)= 508=> TSP值 = 50.8ug/m3
2.4.2問詢500號以上寄存器
例如問詢溫濕度值:設備地址為01
地址碼 |
功能碼 |
起始地址 |
數據長度 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x03 |
0x01 0xF8 |
0x00 0x02 |
0x44 |
0x06 |
應答幀(例如讀到溫度為-10.1℃,濕度為65.8%RH)
地址碼 |
功能碼 |
有效字節數 |
濕度值 |
溫度值 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x03 |
0x04 |
0x02 0x92 |
0xFF 0x9B |
0x5A |
0x3D |
溫度:當溫度低于0℃時以補碼形式上傳
0xFF9B(十六進制)= -101 => 溫度 = -10.1℃
濕度:
0x0292(十六進制)=658=> 濕度 = 65.8%RH
2.4.3控制繼電器及設置虛擬多設備使能
1. 關閉虛擬多設備
寫入數據幀
地址碼 |
功能碼 |
寄存器地址 |
寫入內容 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x06 |
0x02 0xBE |
0x00 0x00 |
0xE8 |
0x56 |
應答幀
地址碼 |
功能碼 |
寄存器地址 |
寫入內容 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x06 |
0x02 0xBE |
0x00 0x00 |
0xE8 |
0x56 |
2. 控制繼電器1閉合
寫入數據幀
地址碼 |
功能碼 |
寄存器地址 |
寫入內容 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x06 |
0x02 0xBC |
0x00 0x01 |
0x88 |
0x56 |
應答幀
地址碼 |
功能碼 |
寄存器地址 |
寫入內容 |
校驗碼低位 |
校驗碼高位 |
0x01 |
0x06 |
0x02 0xBC |
0x00 0x01 |
0x88 |
0x56 |
使用03功能碼,可查詢當前的設置值