MODBUS-rtu遠傳水表是一種支持MODBUS通訊協(xié)議的具備遠程傳輸、采集、管理、計量、監(jiān)控等功能的智能型水表,是有線遠傳水表之中的一種,為供水單位和用水單位帶來了穩(wěn)定、有效的通訊方式,同時讓雙方感受到了計量與管理方面的便捷。
一般我們使用的MODBUS-rtu遠傳水表采用的是MODBUS-rtu通訊協(xié)議,這種協(xié)議對于水表的校驗碼、數(shù)據(jù)序列號等內(nèi)容作了詳細的定義,這些都是數(shù)據(jù)交換工作中必須具備的內(nèi)容。一般我們使用的MODBUS-rtu通訊協(xié)議都是采用的主從答應(yīng)式的連接,也就是一根通訊線上的信號可以沿著相反的兩個方向進行傳輸,為工作人員提供了更準確、更快捷的通訊方式,讓人們快速享受到了科技所帶來的計量優(yōu)勢。
本水表使用了MODBUS-RTU通訊協(xié)議,MODBUS協(xié)議詳細定義了校驗碼、數(shù)據(jù)序列等,這些都是特定數(shù)據(jù)交換的必要內(nèi)容。MODBUS協(xié)議在一根通訊線上使用主從應(yīng)答式連接(半雙工),這意味著在一根單獨的通訊線上信號沿著相反的兩個方向傳輸。首先,主計算機的信號尋址到一臺的終端設(shè)備(從機),然后,終端設(shè)備發(fā)出的應(yīng)答信號以相反的方向傳輸給主機。
MODBUS協(xié)議只允許在主機(PC,PLC等)和終端設(shè)備之間通訊,而不允許獨立的終端設(shè)備之間的數(shù)據(jù)交換,這樣各終端設(shè)備不會在它們初始化時占據(jù)通訊線路,而于響應(yīng)到達本機的查詢信號。
MODBUS-RTU格式無起始字符和結(jié)尾字符,但需要加等待時間,等待時間不少于3.5個字符發(fā)送時間。
(1)傳輸方式
信息傳輸為異步方式,并以字節(jié)為單位,在主機和從機之間傳遞的通訊信息是10位字格式,包含1個起始位、8個數(shù)據(jù)位(最小的有效位先發(fā)送)、無奇偶校驗位、1個停止位。
(2)數(shù)據(jù)幀格式
地址碼 | 功能碼 | 數(shù)據(jù)區(qū) | CRC校驗碼 |
1字節(jié) | 1字節(jié) | n字節(jié) | 2字節(jié) |
地址碼:地址碼在幀的開始部分,由一個字節(jié)(8位二進制碼)組成,十進制為0~255,在水表中只使用1~247,其它地址保留。這些位標明了用戶的終端設(shè)備的地址,該設(shè)備將接收來自與之相連的主機數(shù)據(jù)。每個終端設(shè)備的地址必須是的,僅僅被尋址到的終端會響應(yīng)包含了該地址的查詢。當(dāng)終端發(fā)送回一個響應(yīng),響應(yīng)中的從機地址數(shù)據(jù)便告訴了主機哪臺終端正與之進行通信。
功能碼:功能碼告訴了被尋址到的終端執(zhí)行何種功能。下表列出了該系列儀表用到的功能碼,以及它們的意義和功能。
功能 | 定義 | 操作 |
03H/04H | 讀數(shù)據(jù)寄存器 | 獲得一個或多個寄存器的當(dāng)前二進制值 |
10H | 預(yù)置多寄存器 | 設(shè)定二進制值到一系列多寄存器中 |
數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)包含了終端執(zhí)行特定功能所需要的數(shù)據(jù)或者終端響應(yīng)查詢時采集到的數(shù)據(jù)。這些數(shù)據(jù)的內(nèi)容可能是數(shù)值、參考地址或者設(shè)置值。例如:功能碼告訴終端讀取一個寄存器,數(shù)據(jù)區(qū)則需要指明從哪個寄存器開始及讀取多少個數(shù)據(jù),內(nèi)嵌的地址和數(shù)據(jù)依照類型和從機之間的不同內(nèi)容而有所不同。
CRC校驗碼:錯誤校驗(CRC)域占用兩個字節(jié),包含了一個16位的二進制值。CRC值由傳輸設(shè)備計算出來,然后附加到數(shù)據(jù)幀上,接收設(shè)備在接收數(shù)據(jù)時重新計算CRC值,然后與接收到的CRC域中的值進行比較,如果這兩個值不相等,就發(fā)生了錯誤。
生成一個CRC的流程為:
1、預(yù)置一個16位寄存器為0FFFFH(全1),稱之為CRC寄存器。
2、把數(shù)據(jù)幀中的個字節(jié)的8位與CRC寄存器中的低字節(jié)進行異或運算,結(jié)果存回CRC寄存器。
3、將CRC寄存器向右移一位,位填以0,位移出并檢測。
4、如果位為0,重復(fù)第三步(下一次移位);如果位為1,將CRC寄存器與一個預(yù)設(shè)的固定值(0A001H)進行異或運算。
5、重復(fù)第三步和第四步直到8次移位。這樣處理完了一個完整的八位。
6、重復(fù)第2步到第5步來處理下一個八位,直到所有的字節(jié)處理結(jié)束。
7、最終CRC寄存器的值就是CRC的值。
此外還有一種利用預(yù)設(shè)的表格計算CRC的方法,它的主要特點是計算速度快,但是表格需要較大的存儲空間,該方法此處不再贅述,請參閱相關(guān)資料。
通信應(yīng)用格式詳解
(1)功能碼03H:讀寄存器
此功能允許用戶獲得設(shè)備采集與記錄的數(shù)據(jù)及系統(tǒng)參數(shù)。主機一次請求的數(shù)據(jù)個數(shù)沒有限制,但不能超出定義的地址范圍。
下面的例子是從01號從機讀1個采集到的基本數(shù)據(jù)(數(shù)據(jù)幀中每個地址占用2個字節(jié))。采集的數(shù)據(jù)為總用水量(占用4個字節(jié)),其地址為00H
主機發(fā)送 | 發(fā)送信息 |
| 從機返回 | 返回信息 | ||
地址碼 | 01H | 地址碼 | 01H | |||
功能碼 | 03H | 功能碼 | 03H | |||
起始地址 | 高字節(jié) | 00H | 字節(jié)數(shù) | 04H | ||
低字節(jié) | 00H | 寄存器數(shù)據(jù) | 高字節(jié) | 00H | ||
寄存器數(shù)量 | 高字節(jié) | 00H | 低字節(jié) | 12H | ||
低字節(jié) | 02H | 寄存器數(shù)據(jù) | 高字節(jié) | D6H | ||
CRC校驗碼 | 高字節(jié) | C4H | 低字節(jié) | 87H | ||
低字節(jié) | 0BH | CRC校驗碼 | 高字節(jié) | 44H | ||
| 低字節(jié) | 34H |
附:1、讀寫屬性:“R”只讀,讀參量用03H號命令;“R/W”可讀可寫,寫參量用10H號命令。禁止向未列出的或不具可寫屬性的地址寫入。
2、表的通訊地址和通訊速率出廠時給出,亦可通過本公司提供的軟件讀出。也可以通過協(xié)議設(shè)置。
3、表中所測讀數(shù)占4個字節(jié),單位為m3。高位在前,低位在后,若讀出值為0012D687H(1234567),則計量值為1234567×0.01=12345.67m3。