李能菲 常輝 黃瓊 陳欣歡



【摘? ?要】? ?針對存放重要物品場所防漏水需求,基于LabVIEW設計并實現了漏水檢測監控系統。分析泄露檢測的基本原理,簡要介紹串口通訊中常用的循環冗余校驗并通過LabVIEW實現。按照漏水檢測儀Modbus通信控制協議,實現了對漏水事件出現后的報警與泄露點的獲取。所設計的監控程序具有較好的擴展性,對監控軟件的設計具有一定的指導作用。
【關鍵詞】? ?LabVIEW;漏水檢測;循環冗余校驗;Modbus
Design of Water Leakage Monitoring System Based on LabVIEW
Li Nengfei, Chang Hui,* Huang Qiong, Chen Xinhuan
(Anhui Vocational and Technical College, Hefei 230011, China)
【Abstract】? ? Aiming at the demand of water leakage prevention for the places stored important items, a water leakage detection monitoring system is designed and realized based on LabVIEW software. The basic principle of water leakage detection is analyzed. The commonly used cyclic redundancy check (CRC) in serial communication fields is briefly introduced, and then implemented with the LabVIEW software. In accordance with the Modbus communication protocol of the water leakage sensor, the monitoring program enables access to alarm and locate the leak position if the leaking of events occur. The designed monitoring program has well scalability, which has a certain guiding role for other design of monitoring software.
【Key words】? ? ?LabVIEW; water leakage monitoring; cyclic redundancy check; Modbus
〔中圖分類號〕? TP242.6? ? ? ? ? ? ?〔文獻標識碼〕? A ? ? ? ? ? ? ?〔文章編號〕 1674 - 3229(2023)01- 0034 - 05
0? ? ?引言
從計算機機房、大型數據中心、檔案室、歷史博物館到光學高精密無塵生產制造場所都存放著重要或珍貴物品,對物理存放空間要求很嚴格,必須杜絕漏水、漏油等潛在風險。另一方面,機房、大型數據中心以及歷史博物館等場所內一般裝有中央空調、除濕機等,這些設備的排水管道不可避免地給存放空間帶來隱患。此外這些場所還可能面臨外部自來水管道以及雨水侵入的風險。因此漏水檢測與監控是保障上述場所長期穩定運行的必要設施[1]。
目前,LabVIEW(Laboratory Virtual Instrument Engineering Workbench)作為一種圖形化的開發環境,已經被廣泛地應用在工業控制與監控、數據采集等各種領域[2]。LabVIEW開發環境集成了包括GPIB、VXI、RS-232和RS-485協議的硬件及數據采集通訊的全部功能[3],被視為一個標準的數據采集和測量儀器控制軟件,尤其是LabVIEW中包含了豐富的曲線、圖形顯示控件,使得LabVIEW程序的開發效率非常高,進而大大提高應用程序的開發效率。
應某光學面板生產廠房漏水檢測項目的需求,以定位型漏水檢測儀LS-6301為硬件基礎,設計并開發了基于LabVIEW的漏水檢測監控系統。介紹了漏水檢測的基本原理,采用Modbus協議編寫了RS485通信程序,簡要介紹了通信協議中循環冗余校驗(Cyclic Redundancy Check 16)以及LabVIEW CRC16計算程序。所設計的程序結構簡單、可擴展性強,能夠滿足實際應用需求。
1? ? ?漏水檢測原理
本文使用的漏水檢測儀是由一條檢測液體泄漏的感應線纜和一個帶定位報警的控制器構成[4]。感應線纜由4根(或2根)不同類型的導線組成,其中兩根由導電聚合物加工而成,其單位長度阻值為定值。在無液體泄漏時,其中兩根導線之間電流值為一恒定值;當發生液體泄漏時,泄漏物會沾在感應線纜上,從而使得兩根導電線纜的聚合物之間短路,進而使兩根導線之間的電流值發生變化[5]。漏水檢測儀的控制器通過檢測電流值的變化來判斷是否發生漏水等事件,當發生泄漏時控制器將漏水信息發送給終端用戶,實現對漏水的檢測。漏水檢測由穿過內部基準電阻器監視電壓來實現,如圖1所示。其中,直流電源[U](通常5-9V)給感應線纜供電,感應線纜內部總電阻為[R],泄漏檢測的基準電阻阻值為[r],當未發生泄露時,根據歐姆定律,此時基準電阻兩端的電壓[V1]。
[V1=U*r/(r+R)]? ? ?(1)
當發生泄漏時,比如當泄漏發生在位置[a]時,漏液將兩根感應線短路,此時造成感應線纜內部總電阻[R]發生變化,降為[Ra],根據歐姆定律,發生泄露時基準電阻兩端的電壓變為[Va1]:
[Va1=U*r/(r+Ra)]? ? ?(2)
漏水檢測儀控制器通過檢測基準電壓[V1]變為[Va1]時,會發出報警,實現泄漏報警功能;同理,當泄漏發生在位置[b]或者[c]時,基準電阻兩端的電壓[V1]會變為[Vb1]和[Vc1],同樣實現泄漏報警。
很多的應用場景,比如服務器機房、大型的精密光學生產車間等,不僅需要泄漏報警的功能,還需要知道泄漏點的具體位置,供快速消除隱患。泄漏點位置是通過感應電纜壓降[V2](如圖1所示)來確定的。當發生泄漏時,如泄漏點在位置[a],此時感應電纜[Va2]為:
[Va2=U*ra/(r+Ra)],? ? ?(3)
這里[ra]為感應電纜起始位置與泄漏點之間的阻值。可見,泄漏點不同,導致[V2]檢測電壓不同,通過標定后,使得檢測電壓[V2]與泄漏點離感應電纜端點長度一一對應,進而獲取泄漏點的具體位置。
2? ? ?基于LabVIEW的漏水檢測監控系統的實現
2.1? ?漏水檢測儀簡介
本文漏水檢測是基于某公司定位型檢測儀LS-6301進行設計開發的,其主要參數如表1所示,其檢測漏水的長度最大為200米,檢測精度不低于1米,漏水檢測的響應時間不高于10秒。
基于LabVIEW的上位機監控軟件與檢測儀LS-6301通過RS485進行串口通訊,通信協議為Modbus RTU。通常,一個典型Modbus RTU消息幀依次包含設備地址(一般為一個字節)、功能代碼(一般為一個字節)、具體參數(N個字節)和CRC16校驗碼(兩個字節)[6-7]。在漏水檢測監控系統中,上位機監控軟件向控制器發送請求命令,控制器返回相應信息。LS-6301漏水控制器的主要功能碼定義如表2所示。
2.2? ?CRC16簡介及其LabVIEW實現
在編寫LabVIEW漏水監控軟件時,通信協議要求發送數據中包括兩個字節的CRC16校驗碼,因此,需要對發送數據(由地址設備信息、功能代碼與相應參數組成)的CRC16校驗碼進行實時計算,如何通過LabVIEW來實現CRC16是本監控軟件系統設計的關鍵。CRC16也稱為多項式編碼,是一種檢錯效率高、原理簡單的通信編碼,是目前在數字通信領域應用最為廣泛的一種檢驗方式[8]。在進行監控系統設計時,上位機(如監控計算機)按照校驗協議計算出被傳送數據的校驗值,將其加上傳送數據的末尾,下位機(如漏水控制器)同樣對傳送的數據進行校驗計算,對得出的校驗值與上位機傳送過來的校驗值進行比較,如果這兩個CRC校驗值不一致,則說明在發送或者接收過程中出現了差錯,下位機要求上位機重新發送該數據。在計算CRC16校驗碼時涉及到CRC16的幾個標準,本系統采用的漏水監控控制器使用的是CRC16_MODBUS標準,其對應的多項式為x16+x15+x2+1,其中x16、x15和x2表示該位為1,因此對于CRC16_MODBUS標準的多項式二進制數為:1 1000 0000 0000 0101,對應的十六進制數為0x8005。CRC16_MODBUS校驗碼可以通過以下方法/流程進行計算得出[9]。
(1)預置1個0xFFFF的CRC寄存器R;
(2)將協議中的設備地址(一個字節)、功能代碼(一個字節)以及N字節的數據組成N+2個字節的校驗數據D。首先取校驗數據D中高8位二進制數據與16位的CRC寄存器R的低8位相異或后,結算結果賦給CRC寄存器R;
(3)然后將CRC寄存器R右移一位,同時將最高位補零,對右移后的最低位進行判斷;
(4)如果最低位為0,則跳轉到流程(3),即將CRC寄存器R再次右移一位;如果最低位為1,則CRC寄存器與多項式十六進制數0xA001(對應二進制數1010 0000 0000 0001)進行異或,注意這里使用的是CRC的反向校驗,即從高位向低位進行校驗,0x8005高低位互換即為0xA001;
(5)重復流程(3)和(4),對8位數據全部進行處理;
(6)重復流程(2)到流程(5),對校驗數據D的下一個字節進行處理;
(7)將待校驗的數據D中所有字節按上述步驟全部計算完畢,最后對CRC寄存器R的高、低字節互換,即為該傳送數據D的CRC16校驗碼。
按照上述方法,在LabVIEW中編寫了一子VI程序用于實時計算CRC16校驗碼,相應的子VI程序框圖如圖2所示。輸入參數為待校驗數據以及長度,初始化CRC16校驗碼為0xFFFF,對應的十進制數為65536,首先取校驗數據的高8位數據與0xFFFF進行異或操作,判斷異或操作結果的最低位是否為1,如果為1,則對其右移一位,并將移位結果與40961(對應16進制0xA001)進行異或操作;如果不為1,則對其右移一位,對每位數據進行相同的處理,最后將外層For循環移位寄存器數據的結果高低位互換,分別得出CRC16的高八位與低八位數據。
對LabVIEW程序設計的CRC16校驗碼進行測試,如圖3(a),輸入數據分別為01 04 00 02 00 01,共6個字節,計算得出的校驗碼的高八位為10(對應十六進制為0x0A),低八位為144(對應十六進制為0x90),其結果與CRC(循環冗余校驗)在線計算[10]的結果一致,如圖3(b),表明所編寫的CRC16校驗碼計算程序是正確的。
2.3? ?基于LabVIEW的漏水檢測監控軟件的設計實現
基于LabVIEW的漏水檢測監控軟件主要實現三個方面的功能。首先,讀取是否有告警,并對告警信息進行處理,判斷告警的種類。按照LS-6301硬件通訊協議,發送十六進制字節數組為01 04 00 02 00 01 90 0A,其中第一個字節為設備地址碼0x01,04為讀取當前告警的命令,最后兩個字節90 0A為計算出來的CRC16校驗碼。圖4給出了LabVIEW實現的獲取報警功能的程序框圖,發送完數據后等待10 ms,漏水檢測儀收到上位機的信號后會回傳當前漏水檢測儀的狀態。檢測儀回傳數據的第四個字節為狀態信息,該字節的第四位代表的含義如下:bit0為1表示斷線,bit1為1表示漏水,bit2為1表示維護,bit3為1表示硬件故障。將該字節與十六進制數0xF進行操作,實現對報警種類的解析,分別進行相應的處理。
如果判斷為漏水狀態時,可以通過發送十六進制數組命令01 04 00 04 00 01 70 0B來實現對漏水位置進行獲取,其中0x70與0x0B為計算出來的校驗碼,等待10 ms后,讀取當前漏水位置并顯示,相應的程序框圖如圖5所示。漏水檢測監控LabVIEW軟件的前面板界面如圖6所示,界面上主要包括對設備串口號、波特率與數據位等參數的設置,實現對漏水檢測儀器當前狀態的提示以及漏水時具體位置的顯示等。
3? ? ?結論
針對某面板公司的精密光學生產廠房的應用需求,基于LabVIEW設計并實現了漏水檢測監控系統,分析了泄露檢測儀的基本原理。簡要介紹了串口通訊中常用的CRC16校驗碼以及LabVIEW實現,所實現的CRC16計算結果與在線網站計算的結果一致,表明所設計的校驗碼計算程序的正確性。按照某公司漏水檢測儀通訊控制協議,編寫了基于LabVIEW的泄露報警與泄露點獲取的程序。本文設計的監控程序具有較好的擴展性,滿足應用需要,對工業監控軟件設計具有一定的指導作用。
[參考文獻]
[1] 郭松梅,稅愛社,郭虎,等. 基于合泰單片機的機房漏水檢測裝置設計[J]. 儀器儀表用戶,2017,24(3):33-35.
[2] 陶苗苗.淺談用LabVIEW軟件輔助聲速測量實驗教學[J]. 廊坊師范學院學報(自然科學版),2015,15(4):59-60.
[3] 葉超,吉方,張日升,等. 基于LabVIEW分子泵運行狀況實時監測系統設計[J]. 機床與液壓,2017,45(10):131-134.
[4] 汪輝,宗福興,陳帆,等. 機房漏水檢測與精確定位裝置研究[J]. 后勤工程學院學報,2013,29(5):81-87.
[5] 曹麗蓉. 離子加速器中水泄漏遠程監測定位系統的應用研究[D]. 蘭州:蘭州大學,2010.
[6] 楊艷華,周永錄,蘇紅軍,等. 通用串口到Modbus RTU的協議轉換器設計與實現[J]. 計算機測量與控制,2014,22(2):604-606.
[7] 王鵬宇,陳東陽,楊建飛. 基于單片機通信技術的多參數分布式顯示系統的設計[J]. 廊坊師范學院學報(自然科學版),2017,17(3):53-56.
[8] 唐鵬程,鄒久朋. CRC校驗碼在單片機中的程序實現及其冗余碼表的求?。跩]. 工業儀表與自動化裝置,2004(3):55-57.
[9] 陳公興,谷剛. 基于LabVIEW的CRC-16程序分析與實現[J]. 廣東工業大學學報,2008,25(3):73-75.
[10] CRC(循環冗余校驗)在線計算[EB/OL].http://www.ip33.com/crc.html.