MODBUS-RTU RS485數(shù)據(jù)通信協(xié)議(通用型壓力、液位、溫度傳感器/變送器,供電24(12-30VDC))
一.概述:
本協(xié)議遵守MODBUS通信協(xié)議,采用了MODBUS協(xié)議中的子集中RTU方式.RS485半雙工工作方式。
二.串行數(shù)據(jù)格式:
串口設(shè)置:無(wú)校驗(yàn),8位數(shù)據(jù),1位停止位。
舉例:9600,N,8,1 含義:9600bps,無(wú)校驗(yàn),8位數(shù)據(jù)位,1位停位。
本變送器支持的串口波特率為:
1200,2400,4800,9600,19200,38400,57600,115200
CRC校驗(yàn)的多項(xiàng)式:0xA001.
數(shù)據(jù)通信過(guò)程中的數(shù)據(jù)全部是按照雙字節(jié)整形數(shù)據(jù)來(lái)處理,如果數(shù)據(jù)標(biāo)識(shí)的是浮點(diǎn)數(shù),寫(xiě)需要讀取小數(shù)點(diǎn)來(lái)確定數(shù)據(jù)的大小.
三.通信格式:
1.讀命令格式(03功能碼)舉例
A.發(fā)送讀命令格式:
地址 |
功能碼 |
數(shù)據(jù)起始(H) |
數(shù)據(jù)起始(L) |
數(shù)據(jù)個(gè)數(shù)(H) |
數(shù)據(jù)個(gè)數(shù)(L) |
CRC16 (L) |
CRC16 (H) |
0X01 |
0X03 |
0X00 |
0X00 |
0X00 |
0X01 |
0X84 |
0X0A |
B.返回讀數(shù)據(jù)格式:舉例
地址 |
功能碼 |
數(shù)據(jù)長(zhǎng)度 |
數(shù)據(jù) (H) |
數(shù)據(jù) (L) |
CRC16 (L) |
CRC16 (H) |
0X01 |
0X03 |
0X02 |
0X00 |
0X01 |
0X79 |
0X84 |
2.寫(xiě)命令格式(06功能碼)舉例
地址 |
功能碼 |
數(shù)據(jù)起始(H) |
數(shù)據(jù)起始(L) |
數(shù)據(jù) (H) |
數(shù)據(jù) (L) |
CRC16 (L) |
CRC16 (H) |
0X01 |
0X06 |
0X00 |
0X00 |
0X00 |
0X02 |
0X08 |
0X0B |
B.返回讀數(shù)據(jù)格式:舉例
地址 |
功能碼 |
數(shù)據(jù)起始(H) |
數(shù)據(jù)起始(L) |
數(shù)據(jù) (H) |
數(shù)據(jù) (L) |
CRC16 (L) |
CRC16 (H) |
0X01 |
0X06 |
0X00 |
0X00 |
0X00 |
0X02 |
0X08 |
0X0B |
3.異常應(yīng)答返回
地址 |
功能碼 |
異常碼 |
CRC16 (L) |
CRC16 (H) |
0X01 |
0X80+功能碼 |
0x01(非法功能) 0x02( 非法數(shù)據(jù)地址) 0x03(非法數(shù)據(jù) |
|
|
四.支持的命令及命令和數(shù)據(jù)意義:
MODBUS-RTU協(xié)議命令列表如下:
功能碼 |
數(shù)據(jù)起始地址 |
數(shù)據(jù)個(gè)數(shù) |
數(shù)據(jù)字節(jié) |
數(shù)據(jù)范圍 |
指令意義 |
0x03功能碼讀取數(shù)據(jù) |
|||||
0x03 |
0x0000 |
1 |
2 |
1-255 |
讀取從機(jī)地址 |
0x03 |
0x0001 |
1 |
2 |
0-1200 1-2400 2-4800 3-9600 4-19200 5-38400 6-57600 7-115200 |
波特率讀取 |
0x03 |
0x0003 |
1 |
2 |
0-#### 1-###.# 2-##.## 3-#.### |
小數(shù)點(diǎn)分別代表0-3位小數(shù)點(diǎn) |
0x03 |
0x0002 |
1 |
2 |
0- Mpa 1- Kpa 2- Pa 3- Bar 4- Mbar 5- kg/cm2 6- psi 7- mh2o 8- mmh2o |
壓力單位 |
0x03 |
0x0004 |
1 |
2 |
-32768-32767 |
測(cè)量輸出值 |
0x03 |
0x0005 |
1 |
2 |
-32768-32767 |
變送器量程零點(diǎn) |
0x03 |
0x0006 |
1 |
2 |
-32768-32767 |
變送器量程滿(mǎn)點(diǎn) |
0x03 |
0x000c |
1 |
2 |
-32768-32767 |
零位偏移值,出廠一般為0 |
0x06功能碼寫(xiě)數(shù)據(jù) |
|||||
0x06 |
0x0000 |
|
2 |
1-255 |
改寫(xiě)從機(jī)地址 |
0x06 |
0x0001 |
|
2 |
0-1200 1-2400 2-4800 3-9600 4-19200 5-38400 6-57600 7-115200 |
修改波特率 |
0x06 |
0x000c |
|
2 |
-32768-32767 |
零位偏移值.壓力輸出值=校準(zhǔn)測(cè)量值+零位偏移值 |
保存和恢復(fù)工廠 |
|||||
0x06 |
0x000F |
|
2 |
0- 保存到用戶(hù)區(qū) |
|
0X06 |
0x0010 |
|
2 |
1-返回工廠參數(shù) |
|
說(shuō)明:
1. 修改波特率時(shí)變送器會(huì)以主機(jī)發(fā)送的波特率回復(fù)修改數(shù)據(jù),回復(fù)完以后變送器波特率會(huì)變?yōu)樾薷暮蟮哪繕?biāo)值.
2. 修改地址時(shí)也是以修改前的地址回復(fù)數(shù)據(jù),回復(fù)完以后會(huì)自動(dòng)修改變送器地址.
3. 保存和回復(fù)工廠命令會(huì)原值返回,表示變送器已經(jīng)接受了主機(jī)的命令.
4. 恢復(fù)工廠數(shù)據(jù)時(shí)要注意,可能工廠保存的參數(shù)和用戶(hù)保存的不一致,所以其中地址,波特率和校準(zhǔn)數(shù)據(jù)可能都不一致,所以恢復(fù)完工廠參數(shù)以后必須重新搜索變送器.
5. 用戶(hù)允許修改的數(shù)據(jù)只有3個(gè),分別是地址,地址,波特率,零位偏移值.
6. 一般用戶(hù)不允許修改變送器的校準(zhǔn)數(shù)據(jù),如需校準(zhǔn)和更改,請(qǐng)聯(lián)系本公司索取變送器校準(zhǔn)軟件.用戶(hù)自己發(fā)送修改校準(zhǔn)數(shù)據(jù)命令會(huì)導(dǎo)致變送器輸出命令異常代碼。如需修改校準(zhǔn)數(shù)據(jù),請(qǐng)使用本公司的校準(zhǔn)軟件。
7. 如果需要讀取的數(shù)據(jù)時(shí)浮點(diǎn)數(shù)標(biāo)識(shí)的,比如6.000.但是本協(xié)議規(guī)定了數(shù)據(jù)都是以整形數(shù)據(jù)來(lái)通信的,所以讀取到的數(shù)據(jù)是6000,然后要根據(jù)小數(shù)點(diǎn)的位置來(lái)做運(yùn)算,才能得到6.000,比如小數(shù)點(diǎn)是3,則就是說(shuō)6000/10(3),就是6000除以10的三次方,得到6.000這個(gè)數(shù)據(jù).