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