摘要:針對水庫底部涵管泄水的流量計量問題,討論了一種電磁流量計及其數(shù)據(jù)遠(yuǎn)傳的Modbus協(xié)議和方法,詳細(xì)解析了流量計存儲器數(shù)據(jù)格式、浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換以及CRC校驗等問題。系統(tǒng)設(shè)計的抗干擾浪涌吸收電路改善了戶外現(xiàn)場儀表數(shù)據(jù)傳輸?shù)目煽啃。?jīng)運(yùn)行實踐證明,給出的系統(tǒng)結(jié)構(gòu)和方法能夠適應(yīng)電磁流量計數(shù)據(jù)的遠(yuǎn)程傳輸。
在水庫工程管理中,特別是那些擔(dān)負(fù)供水任務(wù)的水庫,統(tǒng)計每天經(jīng)底部涵管所泄放的水量是一件十分重要的工作,它不僅是供水方與用水方結(jié)算的依據(jù),而且也能夠?qū)λ畮斓姆篮檎{(diào)度提供重要參考。
欲實現(xiàn)水庫涵管流量的測量與采集,首先需要根據(jù)現(xiàn)場環(huán)境和條件選擇合適的現(xiàn)場測量儀表,其次是要實現(xiàn)現(xiàn)場到中心監(jiān)控室數(shù)據(jù)的穩(wěn)定傳輸。底部涵管現(xiàn)場離水庫監(jiān)控室往往有好幾百米的距離,因此如何克服信號長距離傳輸過程中的衰減及受到的干擾,特別是在極端天氣情況下的雷電干擾,就構(gòu)成水庫涵管流量測量系統(tǒng)設(shè)計的主要內(nèi)容。
1電磁流量計
本系統(tǒng)選用了插入式、分體型電磁流量計,型號為XKD99ZC"。由于水庫放水涵管的直徑很大,可達(dá)500~1000mm,選用插人型式可以避免開挖溝槽安裝法蘭、配接下游導(dǎo)流直管等工作,而分體式傳感器安裝于工藝管道上,其二次變送單元可以安裝在環(huán)境較好的室內(nèi),這種安裝形式使得二次變送單元遠(yuǎn)離現(xiàn)場惡劣環(huán)境條件,使電子部件檢查、儀表設(shè)定、調(diào)整都比較方便,無須采取專門措施來防雨、防潮,溫度敏感性也大為降低。
該電磁流量計采用的通信協(xié)議是Modbus協(xié)議,它是一種串行通信協(xié)議,使用雙絞線作為傳輸?shù)奈锢斫橘|(zhì)。流量計內(nèi)部有多個參數(shù)可以進(jìn)行設(shè)置,如波特率、設(shè)備地址、流量單位等。水庫涵管的瞬時流量和累積流量值通過雙絞線-→防雷裝置+RS485/RS232協(xié)議轉(zhuǎn)換-+.上位計算機(jī)完成數(shù)據(jù)傳送,在上位計算機(jī)應(yīng)用軟件的管理下,完成水庫涵管流量數(shù)據(jù)的顯示與統(tǒng)計。
2系統(tǒng)結(jié)構(gòu)方案
在水庫工程管理中,現(xiàn)場參數(shù)除了底部涵管流量之外,還有水庫壩體的滲漏流量、水庫水位等參數(shù)需要監(jiān)測,因此這些儀表設(shè)備可以通過RS485工業(yè)現(xiàn)場總線構(gòu)成一個分布式網(wǎng)絡(luò)。
在這個總線網(wǎng)絡(luò)中,上位計算機(jī)PC作為中心主站,而其他儀表設(shè)備皆處于從屬地位,主站為每臺從設(shè)備分配-一個唯一地址。為了獲取從站各儀器設(shè)備的數(shù)據(jù),主站采取輪流向各個設(shè)備發(fā)送地址命令的方法來讀取數(shù)據(jù)。每個從站不斷監(jiān)測總線上傳來的地址,只有當(dāng)收到的消息中的地址與自己設(shè)備地址--致時,才會執(zhí)行主站發(fā)出的命令,將自己的狀態(tài)與數(shù)據(jù)發(fā)給上位主機(jī),主機(jī)則負(fù)責(zé)接收從設(shè)備發(fā)出的數(shù)據(jù),按Modb-us協(xié)議規(guī)程執(zhí)行數(shù)據(jù)解碼、校驗、存儲等操作。系統(tǒng)的拓?fù)浣Y(jié)構(gòu)如圖1所示。
3Modbus協(xié)議及主機(jī)信息結(jié)構(gòu)
Modbus協(xié)議是一種主從式點(diǎn)對點(diǎn)的通信協(xié)議,允許一臺主機(jī)和多臺從機(jī)之間進(jìn)行數(shù)據(jù)通信,由于Mod-bus協(xié)議易于實現(xiàn),因此它已經(jīng)成為被廣泛應(yīng)用的工業(yè)標(biāo)準(zhǔn)[2]。
Modbus協(xié)議支持ASCII和RTU兩種模式的串行鏈路協(xié)議,由于RTU模式比ASCII模式有更高的數(shù)據(jù)傳輸效率,因此大多數(shù)總線式網(wǎng)絡(luò)結(jié)構(gòu)中均采用RTU鏈路協(xié)議[3]。
一個RTU消息幀由地址域、功能域、數(shù)據(jù)域、CRC校驗域外加起始位和結(jié)束字符共同構(gòu)成,其典型格式如表1所示。
①起始位和結(jié)束字符:用來分隔兩幀消息,RTU規(guī)定起始位和結(jié)束字符持續(xù)時間不得小于3.5個字符時間,一幀消息必須以連續(xù)的字符流進(jìn)行發(fā)送,并且同一幀內(nèi)的2個字符間隔時間應(yīng)小于1.5個字符時間,編程時需注意RTU模式的這些定時要求。
②設(shè)備地址:總線網(wǎng)絡(luò)中某個從站設(shè)備的地址,作為主機(jī)的尋址標(biāo)志。
③功能代碼:當(dāng)消息從主機(jī)發(fā)往從站設(shè)備時,告訴從設(shè)備需要執(zhí)行哪些行為,如,“03”,讀取當(dāng)前從站設(shè)備寄存器組內(nèi)-個或多個二進(jìn)制數(shù)據(jù);“06",主機(jī)把設(shè)置的二進(jìn)制數(shù)據(jù)寫人儀表設(shè)備的單-寄存器內(nèi)。
④數(shù)據(jù)域:它包含主-從設(shè)備通信中所涉及的各種參數(shù),如起始寄存器、要讀寫的寄存器數(shù)量、據(jù)長度、數(shù)據(jù)信息等。
⑤CRC校驗:RTU幀中包含了一個基于CRC算法的錯誤檢測城,即無論主機(jī)或從站設(shè)備發(fā)送RTU幀時,都要計算從設(shè)備地址開始到數(shù)據(jù)區(qū)之間所有字節(jié)的16位CRC校驗碼,并以低字節(jié)在前、高字節(jié)在后的形式附加到RTU消息的CRC域,一并發(fā)給接收方。當(dāng)接收方收完一幀消息后立即按同樣方法計算該幀消息的CRC校驗碼,并與發(fā)送方傳來的CRC校驗碼進(jìn)行比較,若不同就說明在消息傳輸過程中發(fā)生了錯誤,應(yīng)該棄掉剛才收到的消息,并向發(fā)送方回傳一幀帶有錯誤標(biāo)識的消息作為響應(yīng)。
4電磁流量計的存儲器數(shù)據(jù)結(jié)構(gòu)
XKD99ZC電磁流量計是-種智能化的流量儀表,內(nèi)嵌32位高速M(fèi)CU處理器,可以測量瞬時流量、累計流量等參數(shù),數(shù)據(jù)通信傳輸接口為半雙工方式,支持2400、4800.9600bit/s等波特率,接口電氣標(biāo)準(zhǔn)遵從EIA/TIA-485國際標(biāo)準(zhǔn)。用戶無須對流量計進(jìn)行底層編程,只需設(shè)置好相關(guān)參數(shù)即可。流量計內(nèi)部寄存器存儲的數(shù)據(jù)類型與地址如表2所示。
5系統(tǒng)軟件設(shè)計
5.1通信過程
通信開始后,主機(jī)向總線上發(fā)送一幀消息,電磁流量計偵測總線狀態(tài)并接收主機(jī)送來的消息。如果消息中的地址與本站設(shè)備(即電磁流量計)地址相符,而且計算所得的16位CRC校驗碼也正確,就將收到的消息存儲在緩沖區(qū)內(nèi),接著執(zhí)行主機(jī)的命令,并根據(jù)處理結(jié)果返回一幀正確的消息作為對主機(jī)的響應(yīng),其通信流程如圖2所示。
在本系統(tǒng)中,主要使用Modbus協(xié)議中的“03”功能碼,它的含義是連續(xù)讀取設(shè)備數(shù)據(jù)寄存器中的內(nèi)容(每個寄存器占2B)。
通過設(shè)置給電磁流量計分配的地址是0FH,為了讀取流量計的瞬時流量,主機(jī)應(yīng)該發(fā)出一-幀(0F0300000002C525)消息(十六進(jìn)制),此幀消息中含有如下信息:
①0F:從站設(shè)備地址(流量計地址);
②03:功能碼(讀寄存器內(nèi)容);
③0000:待讀寄存器首地址(瞬時流量);
④0002:讀2個連續(xù)的數(shù)據(jù)寄存器(因為數(shù)據(jù)類型是浮點(diǎn));
⑤C525:CRC校驗碼(低字節(jié)在前高字節(jié)在后)。如果流量計正確收到.上面信息,就立即返回與涵管當(dāng)前瞬時流量對應(yīng)的消息作為對主機(jī)的響應(yīng):
0F030441B142A720F2
在這幀消息中,0F03的意義同前,04指4個字節(jié)的瞬時流量,數(shù)據(jù)內(nèi)容是41B142A7,流量計發(fā)出的CRC校驗碼是20F2。
同理,為了讀取流量計的累積流量,主機(jī)應(yīng)發(fā):
0F0300130004B4E2
如果流量計接收正確,就返回下列數(shù)據(jù)串:
0F0308ADDD003B4D6F3F61757F
其中當(dāng)前累積流量數(shù)據(jù)為8個字節(jié),ADDD003B4D6F3F61,CRC校驗碼是757F。
5.2數(shù)據(jù)解析
由于XKD99ZC電磁流量計中的數(shù)據(jù)是以字的形式存儲在寄存器組中的,而且數(shù)據(jù)的低位字在前,高位字在后,所以在解析流量數(shù)據(jù)之前,必須先要交換它們的順序才能得到正確結(jié)果。對于瞬時流量的4個字節(jié)(41B1)(42A7),交換順序后成為(42A7)(41B1),它是一個符合IEEE754規(guī)范的32位浮點(diǎn)數(shù)值,將其還原成十進(jìn)制數(shù)值,結(jié)果得到涵管當(dāng)前瞬時流量值83.6263m³/h。
對于累積流量,它的數(shù)據(jù)格式為:整數(shù)部分是長整型,而小數(shù)部分是32位浮點(diǎn)型,所以應(yīng)分段交換順序。整數(shù)部分交換順序后是(003B)(ADDD),它對應(yīng)十進(jìn)制3911133,而小數(shù)部分交換順序后是(3F61)(4D6F),按IEEE754浮點(diǎn)數(shù)規(guī)范,經(jīng)過轉(zhuǎn)換,其對應(yīng)的十進(jìn)制小數(shù)為0.8801,所以涵管當(dāng)前累積流量是3911133.88m³。
5.3關(guān)于CRC檢驗算法
在Modbus標(biāo)準(zhǔn)通信中,對于即將被傳輸消息中的字符串必須進(jìn)行CRC校驗,目的是發(fā)現(xiàn)數(shù)據(jù)傳輸過程中可能出現(xiàn)的錯誤。常用的校驗多項式有CCITT和CRC-16,本系統(tǒng)采用CRC-16,其多項式為G(x)=xl6+xI5+x2+1,實際應(yīng)用時取其反序。
具體來說,對于涵管瞬時流量,是從地址字節(jié)一直校驗到數(shù)據(jù)的最后-一個字節(jié)。以流量計返回的瞬時流量數(shù)據(jù)串為例,共須校驗0F030441B142A7七個字節(jié),所以得到的16位CRC校驗碼為F220。下面給出用VB6.0語言實現(xiàn)的CRC校驗程序,代碼如下:
6系統(tǒng)防雷
對于戶外運(yùn)行的系統(tǒng)或設(shè)備,-一個很重要的問題就是防雷。特別是南方水庫所在地域,由于雨水充沛,空氣濕度很大,較之干燥地區(qū)更容易產(chǎn)生雷電災(zāi)害,輕則導(dǎo)致數(shù)據(jù)傳輸出錯,嚴(yán)重時會導(dǎo)致儀器設(shè)備損毀。因此對水庫涵管流量測量系統(tǒng)中的防雷設(shè)計必須高度重視。本系統(tǒng)中的防雷電路包含市電交流進(jìn)線保護(hù)電路和低壓數(shù)據(jù)傳輸線路保護(hù)電路。交流電源進(jìn)線過壓保護(hù)器采用的型號為DEHNguard275,數(shù)據(jù)傳輸線路保護(hù)電路如圖3所示。
這個保護(hù)電路共分三級。第--級是氣體放電管,當(dāng)雷電浪涌高壓大于放電管的擊穿電壓時,將使線路與地短路,為浪涌能量提供泄放通路;第二級是由浪涌瞬變抑制二極管TV1、TV2組成,它們能迅速對線路上的浪涌過電壓進(jìn)行箝位,第三級由電阻R1、R2、TV3、TV4、TV5構(gòu)成,目的也是用來消除線路上的高電壓,并使線路端口電壓維持在安全水平。
7結(jié)束語
Modbus串行通信協(xié)議與RS485工業(yè)現(xiàn)場總線網(wǎng)絡(luò)配合使用實現(xiàn)了水庫涵管流量測量數(shù)據(jù)的遠(yuǎn)傳,同時也為今后擴(kuò)展系統(tǒng),將其他儀器設(shè)備掛接在總線上提供了便利。Modbus通信只需要一根屏蔽雙絞線作為傳輸介質(zhì),這使得穿管敷線施工既經(jīng)濟(jì)又方便;另外防雷裝置的引人,大大提高了系統(tǒng)在雷電天氣情況下的運(yùn)行可靠性。運(yùn)行實踐表明,涵管流量數(shù)據(jù)傳輸穩(wěn)定,能夠滿足水庫工程管理需要。
以上內(nèi)容源于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系即刪除!