串口及通訊協(xié)議
§1.1大連海峰超聲波流量計 概述
流量數(shù)據(jù)采集可以使用本公司研制開發(fā)的通用/專用流量/熱量數(shù)據(jù)監(jiān)控系統(tǒng),該系統(tǒng)基于TDS-100流量計的特點,充分利用了流量計特色的軟硬件設(shè)計,具有投資少、系統(tǒng)簡單明快、運行可靠等特點。
目前還已經(jīng)有了多家第三方廠商的專門支持TDS-100系列流量計的數(shù)據(jù)采集軟件供用戶選用,其中有些小的軟件是免費的,特別方便小用戶的組網(wǎng)使用。
為了通訊調(diào)試的方便,新版TDS-100設(shè)有一個模擬運行狀態(tài)。在此狀態(tài)下,流量計不需要接入管道,即可模擬工作,用于調(diào)試,參看下一節(jié)的問答。
§1.2 大連海峰超聲波流量計關(guān)于通訊方面問題的問答
(1) 問:為什么連接不上流量計?,接上后它不做任何反應(yīng)?
答: A. 檢查串口參數(shù)是否匹配。
B.檢查物理連線是否接好
C.網(wǎng)絡(luò)地址是否設(shè)置正確
(2) 問:為什么MODBUS讀出的量值亂七八糟的,和顯示值完全不一致?
答:一般來說如果MODBUS協(xié)議能夠讀出數(shù)據(jù)就表明協(xié)議本身沒有問題了。亂七八糟的數(shù)據(jù)是因為存在如下錯誤:
A.?dāng)?shù)據(jù)格式錯誤; B.寄存器地址有誤,導(dǎo)致數(shù)據(jù)發(fā)生了位移而產(chǎn)生錯誤。
比如REAL4這種實型變量(IEEE754格式的單精度浮點數(shù)),按照字和字節(jié)共有4種不同的排列方式,TDS100使用的是最常規(guī)的一種,即低word和高byte在前格式。您可以修改您的軟件的數(shù)據(jù)存放格式解決這個問題。如果使用通用的組態(tài)軟件,則組態(tài)軟件一般具有一個選擇格式的方法。
(3) 問:我的系統(tǒng)要求每次1小時只發(fā)出一次命令然后要求同時收到多個變量,應(yīng)該使用 那個協(xié)議?
答:一條MODBUS命令可以一次讀出很多變量。問:為什么通過協(xié)議讀出的量值和流量計顯示的不一致?
答:A. 確認(rèn)變量地址是否就是您要求的那個變量?因為流量計內(nèi)部的變量太多,是否混淆了? 注意在讀取數(shù)據(jù)時,REG 0001在命令字符串中表示為0000,而不是0001。0001在命令字符串中表示讀出REG 0002的內(nèi)容。
B.對于累積量只能顯示7位10進(jìn)制數(shù)字,而通過MODBUS協(xié)議可以讀出8位10進(jìn)制數(shù)字。這種情況下,讀出來的數(shù)值的后7位是一樣的。
(4) 問:我的系統(tǒng)不能支持長整數(shù)以及實型變量格式,應(yīng)該怎么辦?
答:需要采用數(shù)值轉(zhuǎn)換方式,或查找新驅(qū)動程序解決。
(5) 問:MODBUS有測試程序嗎?
答:有!推薦使用MODSCAN這個軟件,可以在網(wǎng)上搜到。這個程序很是方便,有助于方便檢查讀出的數(shù)據(jù),理解各種類型數(shù)據(jù)的含義。
(6) 問:流量計是否具有模擬運行狀態(tài)以方便測試,怎樣設(shè)置?
答:有!M1111進(jìn)入液晶顯示分組,ENT鍵切換至輸入輸出分組,M307選擇模擬運行,M308設(shè)置瞬時流量,即啟動模擬運行狀態(tài)。
(7) 問:使用C時,浮點數(shù)存放順序是怎樣的?
答:例如3F 9E 06 51四個字節(jié)為1.2345678的IEEE754格式單精度浮點形式。在MODBUS數(shù)
據(jù)流中的順序是06 51 3F 9E,1號地址數(shù)據(jù)流應(yīng)該是01 03 04 06 51 3F 9E 3B 32(十六進(jìn)制數(shù)字)。在X86計算機(jī)中使用C語言時,按照內(nèi)存從低到高存放順序51 06 9E 3F。
再例如讀取凈累積寄存器REG25,REG26兩個寄存器命令如下:
01 03 00 18 00 02 44 0C(十六進(jìn)制數(shù)字)
返回數(shù)據(jù)應(yīng)該為(設(shè)凈累積器=802609,其4字節(jié)16進(jìn)制表示為 00 0C 3F 31)
01 03 04 3F 31 00 0C A7 ED(十六進(jìn)制數(shù)字,A7 ED為效驗和)
§1.3大連海峰超聲波流量計 MODBUS協(xié)議
MODBUS協(xié)議的兩種格式都能支持,默認(rèn)狀態(tài)下支持MODBUS-RTU格式。
TDS-100型系列超聲波流量計/熱能表只能支持MODBUS功能代碼03和06以及16三種功能代碼,分別是讀寄存器和寫單一寄存器以及數(shù)據(jù)塊寫入功能。
例如在RTU方式下讀取1號設(shè)備的流速,即讀寄存器5,6共2個寄存器,命令如下:
01 03 00 04 00 02 85 CA (十六進(jìn)制數(shù)字)
設(shè)備號 功能 起始寄存器 寄存器數(shù)目 效驗和
其中85 CA 是16進(jìn)制數(shù)值,是按照CRC-16 (BISYNCH,多項式是x
16 + x
15 + x
2 + 1屏蔽字為0A001H)循環(huán)冗余算法得到的。請參考MODBUS有關(guān)資料了解進(jìn)一步的算法。
返回的數(shù)據(jù)應(yīng)該為(設(shè)定狀態(tài)為模擬運行狀態(tài),流速=1.2345678m/s):
01 03 04 06 51 3F 9E 3B 32(十六進(jìn)制數(shù)字)
設(shè)備號 功能 數(shù)據(jù)字節(jié)數(shù) 數(shù)據(jù)=1.234567 效驗和
其中 3F 9E 06 51四個字節(jié)即為1.2345678的IEEE754格式單精度浮點形式。
再舉例,讀凈累積流量,REG25,REG26兩個寄存器命令如下:
01 03 00 18 00 02 44 0C(十六進(jìn)制數(shù)字)
返回數(shù)據(jù)應(yīng)該為(設(shè)凈累積器=802609,其4字節(jié)16進(jìn)制表示為 00 0C 3F 31)
01 03 04 3F 31 00 0C A7 ED(十六進(jìn)制數(shù)字,A7 ED為效驗和)
當(dāng)凈累計=0時,返回數(shù)據(jù)為01 03 04 00 00 00 00 FA 33
其中FA 33為效驗和。
請注意上面例子中數(shù)據(jù)存放的順序。對于使用C語言解釋數(shù)值時,可以使用指針直接把所需的數(shù)據(jù)放入相應(yīng)的變量地址中即可,一般常用的存放順序為低字節(jié)在前,例如上面的1.23456m/s例子中,3F 9E 06 51數(shù)據(jù)的存放順序為 51 06 9E 3F。
有關(guān)MODBUS協(xié)議細(xì)節(jié)請參考有關(guān)資料。
在調(diào)試MODBUS協(xié)議時,推薦使用一種免費調(diào)試軟件MODSCAN,這個軟件可以在互聯(lián)網(wǎng)上搜索到。當(dāng)出現(xiàn)問題時,如果能夠接受到效驗和正確的數(shù)據(jù)包則說明通訊本身是不存在問題的。
在默認(rèn)狀態(tài)下通信的設(shè)置速率一般是9600、無效驗、8數(shù)據(jù)位、1個停止位。
§1.3.1 MODBUS寄存器地址表
(注意與水表協(xié)議的不同之處)
|
寄存器 |
寄存器個數(shù) |
變量名稱 |
數(shù)據(jù)類型 |
說明 |
|
0001-0002 |
2 |
瞬時流量 |
REAL4 |
單位:立方米/小時 |
|
0003-0004 |
2 |
瞬時熱流量 |
REAL4 |
單位:GJ/小時 |
|
0005-0006 |
2 |
流體速度 |
REAL4 |
單位:米/秒 |
|
0007-0008 |
2 |
測量流體聲速 |
REAL4 |
單位:米/秒 |
|
0009-0010 |
2 |
正累積流量 |
LONG |
所有使用長整數(shù)的流量累積器,其計量單位受M32(即REG1438)控制 |
|
0011-0012 |
2 |
正累積流量小數(shù)部分 |
REAL4 |
REAL4是標(biāo)準(zhǔn)IEEE-754格式單精度浮點數(shù)。該格式數(shù)據(jù)一般也稱為FLOAT格式 |
|
0013-0014 |
2 |
負(fù)累積流量 |
LONG |
LONG是低字在前帶符號長整數(shù) |
|
0015-0016 |
2 |
負(fù)累積流量小數(shù)部分 |
REAL4 |
|
|
0017-0018 |
2 |
正累積熱量 |
LONG |
所有使用長整數(shù)的熱量累積器,其計量單位受M84(即REG1441)控制 |
|
0019-0020 |
2 |
正累積熱量小數(shù)部分 |
REAL4 |
|
|
0021-0022 |
2 |
負(fù)累積熱量 |
LONG |
|
|
0023-0024 |
2 |
負(fù)累積熱量小數(shù)部分 |
REAL4 |
|
|
0025-0026 |
2 |
凈累積流量 |
LONG |
|
|
0027-0028 |
2 |
凈累積流量小數(shù)部分 |
REAL4 |
|
|
0029-0030 |
2 |
凈累積熱量 |
LONG |
|
|
0031-0032 |
2 |
凈累積熱量小數(shù)部分 |
REAL4 |
|
|
0033-0034 |
2 |
溫度1/供水溫度 |
REAL4 |
單位:℃ |
|
0035-0036 |
2 |
溫度2/回水溫度 |
REAL4 |
單位:℃ |
|
0037-0038 |
2 |
模擬輸入AI3量 |
REAL4 |
轉(zhuǎn)換后無量鋼數(shù)據(jù) |
|
0039-0040 |
2 |
模擬輸入AI4量 |
REAL4 |
轉(zhuǎn)換后無量鋼數(shù)據(jù) |
|
0043-0044 |
2 |
模擬輸入AI3電流值 |
REAL4 |
單位:毫安 |
|
0045-0046 |
2 |
模擬輸入AI4電流值 |
REAL4 |
單位:毫安 |
|
0077-0078 |
2 |
供水電阻數(shù) |
REAL4 |
單位歐姆 |
|
0079-0080 |
2 |
回水電阻數(shù) |
REAL4 |
單位歐姆 |
|
0089-0090 |
2 |
當(dāng)前電流環(huán)輸出電流值 |
REAL4 |
單位毫安 |
|
0092 |
1 |
聲道1 信號質(zhì)量 |
INTEGER |
單位:0.01% |
|
0093 |
1 |
聲道1 上游信號強(qiáng)度 |
INTEGER |
單位:0.01 |
|
0094 |
1 |
聲道1下游信號強(qiáng)度 |
INTEGER |
單位:0.01% |
|
96 |
1 |
操作界面語言類型 |
INTEGER |
0表示中文,1表示英文 |
|
0097-0098 |
2 |
聲道1超聲波信號傳輸比 |
REAL4 |
正常范圍100+-3% |
|
0099-0100 |
2 |
聲道1當(dāng)前雷諾數(shù) |
REAL4 |
|
|
0101-0102 |
2 |
聲道1當(dāng)前雷諾修正系數(shù) |
REAL4 |
|
|
0105-0106 |
2 |
總工作時間 |
LONG |
無符號,單位秒 |
|
0105-0106 |
2 |
總上電次數(shù) |
LONG |
無符號 |
|
0113-0114 |
2 |
凈累積流量(浮點形式) |
REAL4 |
單位為立方米,7位有效數(shù)字 |
|
0115-0116 |
2 |
正累積流量(浮點形式) |
REAL4 |
單位為立方米,7位有效數(shù)字 |
|
0117-0118 |
2 |
負(fù)累積流量(浮點形式) |
REAL4 |
單位為立方米,7位有效數(shù)字 |
|
0119-0120 |
2 |
凈累積熱量(浮點形式) |
REAL4 |
單位為GJ,7位有效數(shù)字 |
|
0121-0122 |
2 |
正累積熱量(浮點形式) |
REAL4 |
單位為GJ,7位有效數(shù)字 |
|
0123-0124 |
2 |
負(fù)累積熱量(浮點形式) |
REAL4 |
單位為GJ,7位有效數(shù)字 |
|
0125-0126 |
2 |
今天累積流量(浮點形式) |
REAL4 |
單位為立方米,7位有效數(shù)字 |
|
0127-0128 |
2 |
本月累積流量(浮點形式) |
REAL4 |
單位為立方米,7位有效數(shù)字 |
|
0138 |
1 |
聲道2 信號質(zhì)量 |
INTEGER |
單位:0.01% |
|
0139 |
1 |
聲道2 上游信號強(qiáng)度 |
INTEGER |
單位:0.01 |
|
0140 |
1 |
聲道2下游信號強(qiáng)度 |
INTEGER |
單位:0.01% |
|
0141-0142 |
2 |
聲道2超聲波信號傳輸比 |
REAL4 |
正常范圍100+-3% |
|
|
|
|
|
|
|
1529 |
2 |
設(shè)備電子序列號碼 |
BCD |
本設(shè)備電子序列號碼
請注意高位在前 |