超聲波流量計MODBUS協議調試辦法(1)
MODBUS協議的兩種格式都能支持。通過在菜單窗口M63中,選擇使用MODBUS-RTU還是MODBUS-ASCII格式。默認狀態下支持MODBUS-ASCII格式。
超聲波流量計/熱能表只能支持MODBUS功能代碼03和06以及16三種功能代碼,分別是讀寄存器和寫單一寄存器以及數據塊寫入功能。
例如在RTU方式下讀取1號設備的流速,即讀寄存器5,6共2個寄存器,命令如下:
01 03 00 04 00 02 85 CA (十六進制數字)
設備號 功能 起始寄存器 寄存器數目 效驗和
其中85 CA 是16進制數值,是按照CRC-16 (BISYNCH,多項式是x16 + x15 + x2 + 1屏蔽字為0A001H)循環冗余算法得到的。請參考MODBUS有關資料了解進一步的算法。
返回的數據應該為(設定狀態為模擬運行狀態,流速=1.2345678m/s):
01 03 04 06 51 3F 9E 3B 32(十六進制數字)
設備號 功能 數據字節數 數據=1.234567 效驗和
其中 3F 9E 06 51四個字節即為1.2345678的IEEE754格式單精度浮點形式。
再舉例,讀凈累積流量,REG25,REG26兩個寄存器命令如下:
01 03 00 18 00 02 44 0C(十六進制數字)
返回數據應該為(設凈累積器=802609,其4字節16進制表示為 00 0C 3F 31)
01 03 04 3F 31 00 0C A7 ED(十六進制數字,A7 ED為效驗和)
當凈累計=0時,返回數據為01 03 04 00 00 00 00 FA 33
其中FA 33為效驗和。
請注意上面例子中數據存放的順序。對于使用C語言解釋數值時,可以使用指針直接把所需的數據放入相應的變量地址中即可,一般常用的存放順序為低字節在前,例如上面的1.23456m/s例子中,3F 9E 06 51數據的存放順序為 51 06 9E 3F。
在 ASCII方式下讀取1號設備的從寄存器1開始的10個寄存器的命令如下
:01030000000AF2(回車換行)
返回數據為 :0103280000000000000000000000000000000000000000D4
其中“:”是ASCII方式下的引導符,“F2”和“D4” 是雙字節效驗和。求法是把除“:”及行尾的回車換行以外的所有字符順序進行單字節加法,不計進位,然后求補碼得到的。例如上面的命令中 01h+03h+00h+00h+00h+0Ah=0Eh, 其補碼=0-0Eh=F2。而返回數據的效驗和等于 1+3+28h=2Ch,其補碼=0-2Ch=D4h。
在MODBUS-RTU狀態下,每次最多能夠讀出125個寄存器。而在MODBUS-ASCII狀態下每次只能讀出61個寄存器。如果多于這些數目,流量計就會返回出錯信息。
有關MODBUS協議細節請參考有關資料。
在調試MODBUS協議時,推薦使用一種免費調試軟件MODSCAN,這個軟件可以在互聯網上搜索到。當出現問題時,如果能夠接受到效驗和正確的數據包則說明通訊本身是不存在問題的。
在默認狀態下通信的設置速率一般是9600、無效驗、8數據位、1個停止位。
- 上一篇:便攜式丨手持式超聲波流量計應用在什么領域 2020/4/28
- 下一篇:超聲波流量計通訊故障問題解析 2020/4/13