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