|
基(ji)于Modbus協議電(dian)磁流量計(ji)在水庫涵(han)管流量中(zhong)應用
發布(bu)時間:2022-1-12 08:19:24
|
摘要(yao):針對水庫(ku)底部涵管(guan)洩水的流(liu)量計
量問(wen)題,讨論了(le)一種電磁(ci)流量計及(ji)其數據遠(yuan)傳的⭐Modbus協議(yi)🈲和方❌法,詳(xiang)細解析了(le)流量計存(cun)儲器數據(ju)格式、浮點(dian)數據❌轉換(huan)以及CRC校驗(yan)⭕等問題。系(xi)統設計的(de)抗幹擾浪(lang)湧吸收電(dian)路改善🈚了(le)戶外現場(chang)儀表數據(ju)傳輸📞的可(ke)靠性。經運(yun)行實踐證(zheng)明,給出的(de)系統結構(gou)和方⛹🏻♀️法能(neng)夠适應電(dian)磁流量計(ji)
數據的遠(yuan)程傳輸。
在(zai)水庫工程(cheng)管理中,特(te)别是那些(xie)擔負供水(shui)任務的🔴水(shui)庫,統計每(mei)🔞天經底部(bu)涵管所洩(xie)放的水量(liang)是一件㊙️十(shi)分重要的(de)工作,它不(bu)僅是供水(shui)方與用水(shui)方結算的(de)依據,而且(qie)也能夠對(dui)水庫的防(fang)洪調度提(ti)供重要參(can)考。
欲實現(xian)水庫涵管(guan)流量的測(ce)量與采集(ji),首先需要(yao)根據現場(chang)環境㊙️和條(tiao)件選擇合(he)适的現場(chang)測量儀表(biao),其次是要(yao)實現現場(chang)到🌈中心監(jian)控室數據(ju)的穩定傳(chuan)輸。底部涵(han)管現場離(li)水庫監控(kong)室往往有(you)好幾百米(mi)的距離,因(yin)此如何克(ke)服信号長(zhang)距離傳輸(shu)過👄程中的(de)衰🌈減及受(shou)到的幹擾(rao),特别是在(zai)極端天氣(qi)情況下的(de)雷電幹擾(rao),就構成水(shui)庫涵管流(liu)量測量系(xi)統設計的(de)主🙇♀️要内容(rong)。
1電磁流量(liang)計
本系統(tong)選用了插(cha)入式、
分體(ti)型電磁流(liu)量計
,型号(hao)爲XKD99ZC"。由于水(shui)庫放水涵(han)管的直徑(jing)很大,可達(da)500~1000mm,選用插人(ren)型式可以(yi)避免開挖(wa)溝槽安裝(zhuang)法蘭、配接(jie)下遊導流(liu)直管等工(gong)作,而㊙️分體(ti)式傳感器(qi)安裝于工(gong)藝管道上(shang),其二次變(bian)♍送單元可(ke)以安裝在(zai)環境較好(hao)的室内,這(zhe)種安裝形(xing)式使得二(er)次變送單(dan)元遠離現(xian)場惡🌂劣環(huan)境條件,使(shi)電子部件(jian)檢查、儀表(biao)設定、調整(zheng)都比較方(fang)便,無須🐇采(cai)取專門措(cuo)施來防雨(yu)、防潮,溫度(du)敏感性也(ye)大爲降低(di)。
該電磁流(liu)量計采用(yong)的通信協(xie)議是Modbus協議(yi),它是一種(zhong)串☀️行通信(xin)協議,使用(yong)雙絞線作(zuo)爲傳輸的(de)物理介質(zhi)。流量計内(nei)部有☔多個(ge)參數可以(yi)進行設置(zhi),如波特率(lü)、設備地址(zhi)、流量單位(wei)等。水庫涵(han)管的瞬時(shi)流量和累(lei)積流量值(zhi)通過雙絞(jiao)線-→防雷裝(zhuang)🏃置+RS485/RS232協議轉(zhuan)換-+.上位計(ji)算機完成(cheng)數據傳送(song),在上位計(ji)算機應用(yong)軟件的管(guan)理下,完成(cheng)水庫❗涵管(guan)流量數據(ju)🐅的顯示與(yu)統計。
2系統(tong)結構方案(an)
在水庫工(gong)程管理中(zhong),現場參數(shu)除了底部(bu)涵管流量(liang)之外,還有(you)水庫壩體(ti)的滲漏流(liu)量、水庫水(shui)位等參數(shu)需要❄️監測(ce),因此這些(xie)儀表設備(bei)可以通過(guo)RS485工業現場(chang)總線構✉️成(cheng)一個分布(bu)式網絡。
在(zai)這個總線(xian)網絡中,上(shang)位計算機(ji)PC作爲中心(xin)主站,而其(qi)他儀🔞表設(she)備皆處于(yu)從屬地位(wei),主站爲每(mei)台從設備(bei)分💔配-一個(ge)唯一地址(zhi)。爲🏃🏻♂️了獲取(qu)從站各儀(yi)器設備的(de)數據,主站(zhan)采取輪流(liu)向各個設(she)備發送地(di)址命令的(de)方法來讀(du)取數據。每(mei)個從站✏️不(bu)斷監測🔞總(zong)線上傳來(lai)的地址,隻(zhi)有當收到(dao)的消息中(zhong)的地址與(yu)自己設備(bei)地址--緻時(shi),才會執行(hang)主站發出(chu)的命令,将(jiang)自己的狀(zhuang)态與數據(ju)發給上位(wei)主機,主機(ji)則☀️負責接(jie)收從設備(bei)發出的數(shu)據,按Modb-us協議(yi)規程執行(hang)數據解碼(ma)、校驗、存儲(chu)等操作🏃🏻。系(xi)統的拓撲(pu)結構如圖(tu)1所示。
3Modbus協議(yi)及主機信(xin)息結構
Modbus協(xie)議是一種(zhong)主從式點(dian)對點的通(tong)信協議,允(yun)許一台主(zhu)機和多台(tai)💃🏻從機之間(jian)進行數據(ju)通信,由于(yu)Mod-bus協議易于(yu)實現,因此(ci)它👉已經成(cheng)爲被廣泛(fan)應用的工(gong)業标準[2]。
Modbus協(xie)議支持ASCII和(he)RTU兩種模式(shi)的串行鏈(lian)路協議,由(you)于RTU模式比(bi)ASCII模式有更(geng)高的數據(ju)傳輸效率(lü),因此大多(duo)數總線式(shi)網🌈絡結構(gou)中均采用(yong)RTU鏈😄路協議(yi)[3]。
一個RTU消息(xi)幀由地址(zhi)域、功能域(yu)、數據域、CRC校(xiao)驗域外加(jia)起🏃始位和(he)結束字符(fu)共同構成(cheng),其典型格(ge)式如表1所(suo)㊙️示。
①起始位(wei)和結束字(zi)符:用來分(fen)隔兩幀消(xiao)息,RTU規定起(qi)始位和㊙️結(jie)🎯束字符持(chi)續時間不(bu)得小于3.5個(ge)字符時間(jian),一🙇♀️幀消息(xi)必須以連(lian)續的字符(fu)流進行發(fa)送,并且同(tong)一幀内的(de)2個字符間(jian)隔時㊙️間應(ying)小于1.5個字(zi)符時間,編(bian)程時需注(zhu)意RTU模式的(de)這些定時(shi)要求。
②設備(bei)地址:總線(xian)網絡中某(mou)個從站設(she)備的地址(zhi),作爲主機(ji)的尋址标(biao)志。
③功能代(dai)碼:當消息(xi)從主機發(fa)往從站設(she)備時,告訴(su)從設備需(xu)要執行哪(na)些行爲,如(ru),“03”,讀取當前(qian)從站設備(bei)寄存器組(zu)内-個或多(duo)個🌈二進制(zhi)數據;“06",主機(ji)把設置的(de)二🏃🏻♂️進制數(shu)據寫人儀(yi)表設備的(de)單-寄存器(qi)内。
④數據域(yu):它包含主(zhu)-從設備通(tong)信中所涉(she)及的各種(zhong)參數,如起(qi)始寄存器(qi)、要讀寫的(de)寄存器數(shu)量、據長度(du)、數據信息(xi)等。
⑤CRC校驗:RTU幀(zhen)中包含了(le)一個基于(yu)CRC算法的錯(cuo)誤檢測城(cheng),即無🏃🏻論主(zhu)機或從站(zhan)設備發送(song)RTU幀時,都要(yao)計算從設(she)備🔞地址開(kai)始到數據(ju)區之間所(suo)有字節的(de)16位CRC校驗碼(ma),并以低字(zi)🈲節在前、高(gao)字節在後(hou)的形式附(fu)加到RTU消息(xi)的CRC域,一并(bing)發給接收(shou)方。當接收(shou)方收完一(yi)幀消息後(hou)立即按同(tong)樣方🏃法計(ji)算該幀消(xiao)息的CRC校驗(yan)碼,并與發(fa)送✍️方傳來(lai)的CRC校🈚驗碼(ma)進行比較(jiao),若🐅不同就(jiu)說明在消(xiao)息傳輸過(guo)程中發生(sheng)了錯誤,應(ying)該棄掉剛(gang)才收到的(de)消息,并向(xiang)發送方回(hui)傳一幀帶(dai)有錯誤标(biao)識的消息(xi)作爲響應(ying)。
4電磁流量(liang)計的存儲(chu)器數據結(jie)構
XKD99ZC電磁流(liu)量計是-種(zhong)智能化的(de)流量儀表(biao),内嵌32位高(gao)速MCU處理器(qi)😄,可🚶♀️以測量(liang)瞬時流量(liang)、累計流量(liang)等參數,數(shu)據通信傳(chuan)輸接口爲(wei)半♻️雙工方(fang)式,支持2400、4800.9600bit/s等(deng)波特率,接(jie)口電氣标(biao)❓準遵從EIA/TIA-485國(guo)際标準。用(yong)戶無須對(dui)㊙️流量計進(jin)行底層編(bian)程,隻需設(she)置好相關(guan)參數即可(ke)。流量計内(nei)部寄存器(qi)存儲的數(shu)據類型🔞與(yu)地址如表(biao)2所示。
5系統(tong)軟件設計(ji)
5.1通信過程(cheng)
通信開始(shi)後,主機向(xiang)總線上發(fa)送一幀消(xiao)息,電磁流(liu)量計偵測(ce)總線狀态(tai)并接收主(zhu)機送來的(de)消息。如果(guo)消息中的(de)❌地址與本(ben)站設備(即(ji)電磁流量(liang)計)地址相(xiang)🤞符,而且計(ji)算所得的(de)16位CRC校驗碼(ma)也正确,就(jiu)将收到的(de)消息存儲(chu)在緩沖區(qu)内,接着執(zhi)行主機的(de)🔆命令,并根(gen)據處理結(jie)果返回一(yi)幀正确的(de)消息作爲(wei)對主機的(de)響應,其通(tong)信😘流程如(ru)圖2所示。
在(zai)本系統中(zhong),主要使用(yong)Modbus協議中的(de)“03”功能碼,它(ta)的含義是(shi)連續讀取(qu)🔴設備數據(ju)寄存器中(zhong)的内容(每(mei)個寄存器(qi)占2B)。
通過設(she)置給電磁(ci)流量計分(fen)配的地址(zhi)是0FH,爲了讀(du)取流量計(ji)的瞬時流(liu)量,主機應(ying)該發出一(yi)-幀(0F0300000002C525)消息(十(shi)六進制),此(ci)幀消息💃中(zhong)含🍓有如下(xia)信息:
①0F:從站(zhan)設備地址(zhi)(流量計地(di)址);
②03:功能碼(ma)(讀寄存器(qi)内容);
③0000:待讀(du)寄存器首(shou)地址(瞬時(shi)流量);
④0002:讀2個(ge)連續的數(shu)據寄存器(qi)(因爲數據(ju)類型是浮(fu)點);
⑤C525:CRC校驗碼(ma)(低字節在(zai)前高字節(jie)在後)。如果(guo)流量計正(zheng)确收到.上(shang)面信息,就(jiu)立即返回(hui)與涵管當(dang)前瞬時流(liu)量對應的(de)消息作🙇🏻爲(wei)對主機的(de)響應:
0F030441B142A720F2
在這(zhe)幀消息中(zhong),0F03的意義同(tong)前,04指4個字(zi)節的瞬時(shi)流量,數據(ju)内容是41B142A7,流(liu)量計發出(chu)的CRC校驗碼(ma)是20F2。
同理,爲(wei)了讀取流(liu)量計的累(lei)積流量,主(zhu)機應發:
0F0300130004B4E2
如(ru)果流量計(ji)接收正确(que),就返回下(xia)列數據串(chuan):
0F0308ADDD003B4D6F3F61757F
其中當前(qian)累積流量(liang)數據爲8個(ge)字節,ADDD003B4D6F3F61,CRC校驗(yan)碼是757F。
5.2數據(ju)解析
由于(yu)XKD99ZC電磁流量(liang)計中的數(shu)據是以字(zi)的形式存(cun)儲在寄存(cun)器組中的(de),而且數據(ju)的低位字(zi)在前,高位(wei)字在後,所(suo)以在解析(xi)✌️流量數據(ju)之前,必須(xu)先要交換(huan)它們的順(shun)序才能得(de)到正确結(jie)果。對于瞬(shun)時流量的(de)4個字節(41B1)(42A7),交(jiao)換順序後(hou)成爲(42A7)(41B1),它是(shi)一個符合(he)IEEE754規範的32位(wei)浮點數值(zhi),将其還原(yuan)成十進制(zhi)數值,結果(guo)得到涵管(guan)當前瞬時(shi)流量值83.6263m³/h。
對(dui)于累積流(liu)量,它的數(shu)據格式爲(wei):整數部分(fen)是長整型(xing),而🍓小數部(bu)分是32位浮(fu)點型,所以(yi)應分段交(jiao)換順序。整(zheng)數🏃♂️部分👣交(jiao)換💃順序後(hou)是💃🏻(003B)(ADDD),它對應(ying)十進制3911133,而(er)小數部分(fen)交換順序(xu)後是(3F61)(4D6F),按IEEE754浮(fu)點數規範(fan),經過轉換(huan),其對應的(de)十進制小(xiao)數爲0.8801,所以(yi)涵管當🔞前(qian)累積流😍量(liang)是3911133.88m³。
5.3關于CRC檢(jian)驗算法
在(zai)Modbus标準通信(xin)中,對于即(ji)将被傳輸(shu)消息中的(de)字符串必(bi)☎️須進行CRC校(xiao)驗,目的是(shi)發現數據(ju)傳輸過程(cheng)中可能💛出(chu)現的錯誤(wu)。常用的✔️校(xiao)驗多項式(shi)有CCITT和CRC-16,本系(xi)統采用CRC-16,其(qi)多項🈚式爲(wei)G(x)=xl6+xI5+x2+1,實際應用(yong)時取其🥰反(fan)序。
具體來(lai)說,對于涵(han)管瞬時流(liu)量,是從地(di)址字節一(yi)直校驗到(dao)數據的最(zui)後-一個字(zi)節。以流量(liang)計返回的(de)瞬時流👅量(liang)數據串爲(wei)例,共須校(xiao)驗0F030441B142A7七個字(zi)節,所以得(de)到的16位CRC校(xiao)驗碼爲F220。下(xia)面給出用(yong)VB6.0語言實現(xian)的CRC校驗程(cheng)序,代碼如(ru)下:
6系統防(fang)雷
對于戶(hu)外運行的(de)系統或設(she)備,-一個很(hen)重要的問(wen)題就是防(fang)雷。特✂️别是(shi)南方水庫(ku)所在地域(yu),由于雨水(shui)充沛,空氣(qi)濕度很📱大(da),較之幹燥(zao)地區更容(rong)易産生雷(lei)電災害,輕(qing)則導緻數(shu)據傳輸出(chu)錯,嚴重時(shi)會導緻儀(yi)器設備損(sun)毀。因此對(dui)水庫涵管(guan)流量測量(liang)系🔴統中的(de)防雷設計(ji)必須高度(du)重視。本😍系(xi)統中的防(fang)✨雷電路包(bao)含市電交(jiao)流進線保(bao)護電路和(he)低😘壓數據(ju)傳輸線路(lu)保護電路(lu)。交流電源(yuan)♻️進線過壓(ya)保護器采(cai)用的型号(hao)爲🆚DEHNguard275,數據傳(chuan)輸線路保(bao)護電路如(ru)圖3所示。
這(zhe)個保護電(dian)路共分三(san)級。第--級是(shi)氣體放電(dian)管,當雷電(dian)浪湧高壓(ya)🛀🏻大于放電(dian)管的擊穿(chuan)電壓時,将(jiang)使線路與(yu)地💔短路,爲(wei)浪湧能量(liang)提供洩放(fang)通路;第二(er)級是由浪(lang)湧瞬變抑(yi)制🧑🏾🤝🧑🏼二極管(guan)TV1、TV2組成,它們(men)能迅速對(dui)線路上的(de)浪湧過☔電(dian)壓進行🤟箝(qian)位,第三⛷️級(ji)由電阻R1、R2、TV3、TV4、TV5構(gou)成,目的也(ye)是用來消(xiao)除線路上(shang)的高電壓(ya),并使❄️線路(lu)端口電壓(ya)維持在安(an)🌂全🆚水平。
7結(jie)束語
Modbus串行(hang)通信協議(yi)與RS485工業現(xian)場總線網(wang)絡配合使(shi)用實現了(le)🔞水庫涵管(guan)流量測量(liang)數據的遠(yuan)傳,同時也(ye)爲今後擴(kuo)展系統,将(jiang)其他儀器(qi)設備挂接(jie)在總線上(shang)提供了便(bian)利。Modbus通信隻(zhi)需要一根(gen)屏蔽雙絞(jiao)線作爲傳(chuan)輸介質,這(zhe)使得🙇♀️穿管(guan)敷線施工(gong)既經濟又(you)方便;另外(wai)防雷裝置(zhi)的引人,大(da)大提高了(le)系統在雷(lei)電天氣情(qing)況下的運(yun)行可靠💯性(xing)。運行實踐(jian)表明,涵管(guan)流量數據(ju)傳輸穩定(ding),能夠滿足(zu)水庫工程(cheng)☂️管理需要(yao)。
以上内容(rong)源于網絡(luo),如有侵權(quan)聯系即删(shan)除!
|
|
|
|