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