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