一、通信參數:RS485兼容串行接口,半雙工異步方式
波特率:1200---38400bps
數據位:8
校 驗:N
停止位:1
二、數據幀格式(內存地址為雙字節,如0000H為第一個菜單,0002H為第二個菜單)
設備地址
功能代碼
內存地址
數據長度
數據
CRC
01H
03H讀菜單
0000H~0068H菜單
0074H~008CH
運行數據
02D0~055C
歷史數據
0002H
-
XXXX
04H讀當前測量值
00H~18H
10H寫菜單
00H~74H
04XXXX
12H寫入EEPOM
00A0H
0002H
00A1H
13H操作成功
-
-
-
14H操作失敗
20H輸出4mA
21H輸出20mA
30H開1#輸出
31H關1#輸出
32H開2#輸出
33H關2#輸出
34H開3#輸出
35H關3#輸出
36H開4#輸出
37H關4#輸出
55H還原輸出狀態
60H重起設備
65H恢復出廠設置
例如:向1號機內存地址00 00 發送數據5
代碼是:01 10 00 00 00 02 04 40 A0 00 00 E6 4D
設備地址 :1位HEX 01
功能代碼 :1位HEX 10
內存地址 :兩位HEX 00 00
數據長度 :兩位HEX 00 02
數 據 :(04)數據標志,四位HEX 40 A0 00 00
CRC:兩位HEX E6 4D低位在前高位在后
返回代碼:01 13 00 00 00 00 00 09 63
設備地址 :1位HEX 01
功能代碼 :1位HEX 13
內存地址 :--
數據長度 :1位00
數 據 :四位HEX 00 00 00 00
CRC:兩位HEX 09 63
再讀取的代碼是:01 03 00 00 00 02 C4 0B
設備地址 :1位HEX 01
功能代碼 :1位HEX 03
內存地址 :兩位00 00
數據長度 :兩位00 02
數 據 :――
CRC:兩位HEX C4 0B
返回代碼:01 03 02 40 A0 00 00 67 D1
設備地址 :1位HEX 01
功能代碼 :1位HEX 13
內存地址 :--
數據長度 :1位02
數 據 :四位HEX 40 A0 00 00
CRC:兩位HEX 67 D1
三、數據格式:
IEEE754標準單精度浮點數由1位符號位+8位階碼+23位尾數組成,用四位十六進制數表示。如124.75用十六進制表示為42 F9 80 00。
計算方法是:
124.75換算成二進制:1111100.11
用科學計數法表示為:1.11110011*2^6
階碼6+127=133,并用0表示正,1表示負。因此124.75的二進制數為:
0 10000101 11110011000000000000000B=42F98000H
四、CRC循環冗余校驗
循環冗余校驗CRC區為2字節,含一個16位二進制數據。由發送設備計算CRC值,并把計算值附在信息中,接收設備在接收信息時,重新計算CRC值,并把計算值與接收的在CRC區中實際值進行比較,若兩者不相同,則產生一個錯誤。
CRC開始時先把寄存器的16位全部置成“1”,然后把相鄰2個8位字節的數據放入當前寄存器中,只有每個字符的8位數據用作產生CRC,起始位,停止位和奇偶校驗位不加到CRC中。
產生CRC期間,每8位數據與寄存器中值進行異或運算,其結果向右移一位(向LSB方向),并用“0”填入MSB,檢測LSB,若LSB為“1”則與預置的固定值異或,若LSB為“0”則不作異或運算。
重復上述處過程,直至移位8次,完成第8次移位后,下一個8位數據,與該寄存器的當前值異或,在所有信息處理完后,寄存器中的最終值為CRC值。
產生CRC的過程:
1、把16位CRC寄存器置成FFFFH.
2、第一個8位數據與CRC寄存器低8位進行異或運算,把結果放入CRC寄存器。
3、CRC寄存器向右移一位,MSB填零,檢查LSB.
4、(若LSB為0):重復3,再右移一位。
(若LSB為1):CRC寄存器與Aool H 進行異或運算
5、重復3和4直至完成8次移位,完成8位字節的處理。
6、重復2至5步,處理下一個8位數據,直至全部字節處理完畢。
7、CRC寄存器的最終值為CRC值。
8、把CRC值放入信息時,高8位和低8位應分開放置。
發送信息中的16 位CRC值時,先送低8位,后送高8位。
五、組態軟件設置(易控INSPEC 2007)
串口→COM1,波特率:9600,數據位:8,停止位:1,奇偶校驗:無,協議RS485→通用協議→標準Modbus設備→配置:通信協議幀格式:RTU模式,Slave地址:1,通信超時:1000毫秒,SWAP寄存器方式:SWAP3 2143→完成
選擇Input_register寄存器讀取測量值,單元長度:2;數據類型:實型。
選擇Holding_register寄存器讀取或寫入參數,單元長度:2;數據類型:實型。
六、MODBUS 用03號命令讀運行數據舉例
讀第1路模擬輸入 01 03 00 7f 00 02 f5 d3
讀第2路模擬輸入 01 03 00 81 00 02 94 23
讀第1路數字輸入 01 03 00 83 00 02 35 e3
讀第2路數字輸入 01 03 00 85 00 02 d5 e2
讀數學運算結果 01 03 00 87 00 02 74 22
讀流速運算值 01 03 00 89 00 02 15 e1
讀每小時流量 01 03 00 8b 00 02 b4 21
讀流量累積值 01 03 00 8d 00 02 54 20
讀備用電池電壓 01 03 00 95 00 02 d4 27