一、通信參數(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號機內(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ù)組成,用四位十六進制數(shù)表示。如124.75用十六進制表示為42 F9 80 00。
計算方法是:
124.75換算成二進制:1111100.11
用科學(xué)計數(shù)法表示為:1.11110011*2^6
階碼6+127=133,并用0表示正,1表示負(fù)。因此124.75的二進制數(shù)為:
0 10000101 11110011000000000000000B=42F98000H
四、CRC循環(huán)冗余校驗
循環(huán)冗余校驗CRC區(qū)為2字節(jié),含一個16位二進制數(shù)據(jù)。由發(fā)送設(shè)備計算CRC值,并把計算值附在信息中,接收設(shè)備在接收信息時,重新計算CRC值,并把計算值與接收的在CRC區(qū)中實際值進行比較,若兩者不相同,則產(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ù)與寄存器中值進行異或運算,其結(jié)果向右移一位(向LSB方向),并用“0”填入MSB,檢測LSB,若LSB為“1”則與預(yù)置的固定值異或,若LSB為“0”則不作異或運算。
重復(fù)上述處過程,直至移位8次,完成第8次移位后,下一個8位數(shù)據(jù),與該寄存器的當(dāng)前值異或,在所有信息處理完后,寄存器中的zui終值為CRC值。
產(chǎn)生CRC的過程:
1、把16位CRC寄存器置成FFFFH.
2、*個8位數(shù)據(jù)與CRC寄存器低8位進行異或運算,把結(jié)果放入CRC寄存器。
3、CRC寄存器向右移一位,MSB填零,檢查LSB.
4、(若LSB為0):重復(fù)3,再右移一位。
(若LSB為1):CRC寄存器與Aool H 進行異或運算
5、重復(fù)3和4直至完成8次移位,完成8位字節(jié)的處理。
6、重復(fù)2至5步,處理下一個8位數(shù)據(jù),直至全部字節(jié)處理完畢。
7、CRC寄存器的zui終值為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
重慶兆洲串口通信協(xié)議MH-PM重慶兆洲串口通信協(xié)議MH-PM