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