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