王浩杰,張嘉琪,王 麗,王鐘偉
(天津理工大學(xué)環(huán)境科學(xué)與安全工程學(xué)院,天津 300384)
近年來(lái),工礦、化工企業(yè)普遍采用環(huán)境監(jiān)測(cè)系統(tǒng)對(duì)生產(chǎn)過(guò)程中的環(huán)境數(shù)據(jù)進(jìn)行采集并發(fā)出警報(bào)信息,以便工作人員及時(shí)采取防護(hù)止損措施。但這些環(huán)境監(jiān)測(cè)系統(tǒng)普遍針對(duì)某一類特定場(chǎng)景環(huán)境設(shè)計(jì),應(yīng)用面窄、適用性差,環(huán)境場(chǎng)所變化勢(shì)必會(huì)導(dǎo)致系統(tǒng)硬件資源與被監(jiān)測(cè)環(huán)境因子不匹配;再者僅對(duì)采集數(shù)據(jù)進(jìn)行單一閾值比較得到的警報(bào)信息不精確,無(wú)法對(duì)其作出針對(duì)性響應(yīng);其次傳統(tǒng)有線數(shù)據(jù)傳輸方式復(fù)雜環(huán)境布線困難、不易維護(hù),且線路易被腐蝕破壞,埋下安全隱患[1-2];最后傳統(tǒng)監(jiān)測(cè)系統(tǒng)普遍采用本地化數(shù)據(jù)存儲(chǔ)方式,存儲(chǔ)分散,未考慮各管理層次信息需求,缺乏數(shù)據(jù)共享能力,數(shù)據(jù)價(jià)值未能充分發(fā)揮出來(lái)[2]。針對(duì)以上傳統(tǒng)設(shè)計(jì)方案不足,提出一種基于無(wú)線傳輸方式、以MySQL數(shù)據(jù)庫(kù)為存儲(chǔ)平臺(tái)、具有可擴(kuò)展性和分級(jí)報(bào)警機(jī)制的多場(chǎng)景環(huán)境信息采集和應(yīng)用的監(jiān)測(cè)系統(tǒng)。
如圖1所示,多場(chǎng)景環(huán)境監(jiān)測(cè)系統(tǒng)硬件分為上位機(jī)和下位機(jī),上位機(jī)硬件使用一般計(jì)算機(jī)即可[4];下位機(jī)硬件設(shè)計(jì)主要包括氣體傳感器陣列采集模塊,粉塵、煙霧傳感器模塊,溫濕度模塊、繼電器穩(wěn)壓模塊,無(wú)線通訊模塊等。
圖1 硬件系統(tǒng)結(jié)構(gòu)示意圖
監(jiān)測(cè)系統(tǒng)傳感器選擇是硬件設(shè)計(jì)的關(guān)鍵。根據(jù)GBZ2—2002《工業(yè)場(chǎng)所有害因素職業(yè)接觸限值》中粉塵容許濃度值,設(shè)計(jì)選用顆粒物分辨率在0.3 μm的PMS7003激光式傳感器監(jiān)測(cè)空氣中PM1.0、PM2.5、PM10等濃度值;針對(duì)火災(zāi)預(yù)警監(jiān)測(cè),設(shè)計(jì)選用對(duì)粒徑在1 μm以下粒子更敏感的藍(lán)光式RESDA煙霧探測(cè)器;針對(duì)環(huán)境溫濕度監(jiān)測(cè)的范圍和精度,選用HSTL-108WS溫濕度變送器;針對(duì)系統(tǒng)多場(chǎng)景適用性和擴(kuò)展性,氣體傳感器陣列設(shè)計(jì)選用硫化氫、一氧化碳、氨氣、氮氧化物、氰化氫、二氧化硫、甲烷等10種電化學(xué)傳感器,以滿足復(fù)雜氣體環(huán)境中低濃度目標(biāo)氣體監(jiān)測(cè)。
監(jiān)測(cè)系統(tǒng)程控界面主要由監(jiān)控系統(tǒng)配置界面、環(huán)境數(shù)據(jù)采集界面、歷史數(shù)據(jù)查詢界面 3 部分構(gòu)成,另外為保證系統(tǒng)運(yùn)行安全,增加了系統(tǒng)登錄和權(quán)限配置界面,針對(duì)不同用戶分配不同的權(quán)限級(jí)別,只有擁有相應(yīng)權(quán)限的用戶才能訪問(wèn)相應(yīng)的功能。監(jiān)控系統(tǒng)設(shè)計(jì)結(jié)構(gòu)功能圖如圖 2所示。
圖2 軟件系統(tǒng)設(shè)計(jì)結(jié)構(gòu)功能圖
使用環(huán)境監(jiān)測(cè)系統(tǒng)時(shí),用戶首先需要進(jìn)行系統(tǒng)登錄,在系統(tǒng)登錄界面輸入密碼正確后方可進(jìn)入。系統(tǒng)會(huì)根據(jù)當(dāng)前用戶身份的不同,開(kāi)放與其身份權(quán)限相應(yīng)的菜單欄系統(tǒng)功能。針對(duì)初次使用或?qū)嶋H環(huán)境場(chǎng)所變更導(dǎo)致采集項(xiàng)需要改變的情況,用戶須在場(chǎng)景監(jiān)測(cè)配置界面完成監(jiān)測(cè)項(xiàng)即傳感器模擬通道的選擇,設(shè)置合理閾值、報(bào)警級(jí)別和描述信息,亦可對(duì)系統(tǒng)當(dāng)前配置進(jìn)行更改、刪除、保存、設(shè)置為下次系統(tǒng)啟動(dòng)缺省文件等操作,還可以加載系統(tǒng)以前或者用戶先前編譯的參數(shù)配置文件;環(huán)境信息采集界面完成監(jiān)控系統(tǒng)的主要任務(wù):智能識(shí)別通訊串口,采集選通通道傳感器數(shù)據(jù),并以圖形化和表格方式顯示,根據(jù)警報(bào)閾值判定監(jiān)測(cè)項(xiàng)警報(bào)狀態(tài)和級(jí)別,并以不同顏色顯示在報(bào)警窗口,同時(shí)系統(tǒng)運(yùn)行的錯(cuò)誤信息會(huì)顯示在錯(cuò)誤窗口;環(huán)境歷史數(shù)據(jù)查詢界面針對(duì)不同權(quán)限用戶提供了2種查詢方式,用戶可以根據(jù)本地TDMS文件名或遠(yuǎn)程數(shù)據(jù)表名查詢一項(xiàng)或者多項(xiàng)通道采集數(shù)據(jù),還可以設(shè)置數(shù)據(jù)加載量和起始位置,選擇數(shù)據(jù)加載起止時(shí)間段,也可以按需進(jìn)行組合條件查詢,并可對(duì)歷史數(shù)據(jù)進(jìn)行保存到表格、打印等操作處理。
為了保證環(huán)境監(jiān)測(cè)系統(tǒng)的安全性,避免非授權(quán)用戶進(jìn)行操作,為用戶增添了系統(tǒng)登錄界面,其采用權(quán)限分級(jí)管理方式設(shè)計(jì),用戶身份級(jí)別有管理員、專家和值班人員3種,當(dāng)用戶為后兩者時(shí),一些按鈕和菜單欄功能處于鎖定禁用狀態(tài)。3種身份權(quán)限的具體區(qū)別見(jiàn)表1。
表1 不同身份級(jí)別與權(quán)限對(duì)應(yīng)表
在完成用戶身份權(quán)限匹配和登錄密碼校對(duì)工作時(shí),系統(tǒng)讀取名為Data的MySQL數(shù)據(jù)庫(kù)Infor表中的數(shù)據(jù)。通過(guò)DB Tool Open Connection.VI打開(kāi)數(shù)據(jù)源,數(shù)據(jù)源由connection information指定,鏈接DSN=MySQL[5]。打開(kāi)系統(tǒng)數(shù)據(jù)源后,通過(guò)DB Tool Select Data.VI在其table輸入端子中表名Infor,查找顯示Infor表中數(shù)據(jù),由Data輸出端子返回查找數(shù)據(jù)。用戶信息數(shù)據(jù)可由數(shù)組索引函數(shù)提取指定數(shù)據(jù)進(jìn)行當(dāng)前用戶名的密碼匹配和身份校驗(yàn)工作。若密碼錯(cuò)誤,則彈出提示“密碼錯(cuò)誤,請(qǐng)重新輸入”;若用戶連續(xù)輸入3次錯(cuò)誤密碼時(shí),會(huì)提示“錯(cuò)誤次數(shù)超出限制,請(qǐng)聯(lián)管理員確認(rèn)密碼!”;若密碼正確,程序執(zhí)行SQL語(yǔ)句“update Infor set Last Login Time=′當(dāng)前時(shí)間′,Counter=′原次數(shù)+1′where user=′當(dāng)前用戶′”對(duì)登錄信息更新,最后通過(guò)DB ToolOpen Connection.VI關(guān)閉釋放Connection,結(jié)束數(shù)據(jù)庫(kù)操作,完成監(jiān)測(cè)系統(tǒng)的登錄。而通過(guò)DB Tool Execute Query Data.VI執(zhí)行SQL語(yǔ)句“update Infor set password=′新密碼′,privilege=′新權(quán)限′where user=′當(dāng)前用戶′”可對(duì)當(dāng)前用戶的密碼和權(quán)限進(jìn)行更改。
場(chǎng)景監(jiān)測(cè)配置功能僅對(duì)身份權(quán)限為管理員或?qū)<业挠脩糸_(kāi)放,其設(shè)計(jì)主要是針對(duì)首次使用系統(tǒng)或依據(jù)具體場(chǎng)景需要增加或刪除采集項(xiàng)、更改報(bào)警閾值、配置警報(bào)級(jí)別等情況操作使用,完成監(jiān)測(cè)項(xiàng)配置后,用戶需對(duì)數(shù)據(jù)表進(jìn)行管理。場(chǎng)景監(jiān)測(cè)配置界面如圖3所示。
圖3 場(chǎng)景監(jiān)測(cè)項(xiàng)配置界面及程序框圖
用戶可在配置界面自主選擇22項(xiàng)監(jiān)測(cè)通道,不僅可以在典型場(chǎng)景環(huán)境監(jiān)測(cè)配置模板文件基礎(chǔ)上進(jìn)行修改生成配置文件,也可以根據(jù)具體環(huán)境自定義監(jiān)測(cè)項(xiàng),其實(shí)現(xiàn)過(guò)程是:用戶點(diǎn)擊“監(jiān)測(cè)項(xiàng)Config”表格觸發(fā)鼠標(biāo)按下事件結(jié)構(gòu)(Event Structure),調(diào)用表格控件“Point to Row Column”方法節(jié)得到被點(diǎn)擊的單元格,檢查被點(diǎn)擊單元格是否屬于“監(jiān)測(cè)項(xiàng)”列,若屬于則設(shè)置“通道選擇”下拉菜單列表KeyFocus和Visible屬性值為true、Position和NmdNumSize值為被點(diǎn)擊單元格相應(yīng)的行列位置和尺寸值,實(shí)現(xiàn)下拉列表“嵌入”表格控件,最后用戶點(diǎn)選“通道選擇”下拉菜單項(xiàng)觸發(fā)值改變事件,調(diào)用表格“Set Cell Value”方法節(jié)點(diǎn)完成監(jiān)測(cè)項(xiàng)的設(shè)置。警報(bào)級(jí)別配置也是同理。高高、高、低低、低4種報(bào)警閾值大小則需要用戶根據(jù)相關(guān)標(biāo)準(zhǔn)或?qū)嶋H情況自行輸入,而閾值的啟用或禁止則需要用戶通過(guò)右擊表格控件調(diào)出的自定義菜單項(xiàng)進(jìn)行可用或禁止配置。參數(shù)設(shè)置完成后,配置文件保存、先前已編譯好的參數(shù)文件加載功能將通過(guò)文件I/O-XML各函數(shù)實(shí)現(xiàn)。文件名及存儲(chǔ)位置、系統(tǒng)啟動(dòng)默認(rèn)配置文件的設(shè)置,則需要用戶通過(guò)點(diǎn)擊“Save”按鈕,在彈出的對(duì)話框中進(jìn)行配置。
初次使用系統(tǒng)或監(jiān)測(cè)項(xiàng)變更的用戶在完成參數(shù)配置以后,還需要?jiǎng)?chuàng)建數(shù)據(jù)保存表。每個(gè)數(shù)據(jù)保存表可以包含一項(xiàng)或者幾項(xiàng)環(huán)境數(shù)據(jù)。系統(tǒng)通過(guò)索引數(shù)組操作將參數(shù)設(shè)置表格控件的監(jiān)控項(xiàng)列找出并賦值給字段名列表框ItemNames屬性值,對(duì)應(yīng)LabVIEW數(shù)據(jù)類型轉(zhuǎn)化成MySQL字段類型,同時(shí)將字段名SelMod屬性值設(shè)為3,即1項(xiàng)或多項(xiàng)模式。用戶通過(guò)點(diǎn)擊“Create”按鈕,調(diào)用SQL語(yǔ)句“create table表名(id INT UNSIGNED not null AUTO_INCREMENT,date_time datetime not null,′字段名′字段類型,……,primary key(id),index(date_time))”,完成數(shù)據(jù)表的創(chuàng)建。改變Save Cycles數(shù)值調(diào)整采集數(shù)據(jù)寫(xiě)入數(shù)據(jù)表的間隔時(shí)間,Save Enable復(fù)選框表示是否使對(duì)應(yīng)表名中監(jiān)控?cái)?shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。
環(huán)境信息采集顯示主要完成智能識(shí)別通訊串口、環(huán)境數(shù)據(jù)采集、監(jiān)測(cè)結(jié)果顯示,警報(bào)判斷與分級(jí)顯示等工作任務(wù)。環(huán)境信息采集顯示界面如圖4所示。
環(huán)境信息數(shù)據(jù)采集程序設(shè)計(jì)的關(guān)鍵在于程控界面與集成采集模塊之間的通信,即通過(guò)藍(lán)牙、ZigBee模塊串口,利用VISA函數(shù)編程接口連接底層硬件設(shè)備[7]。傳統(tǒng)監(jiān)測(cè)系統(tǒng)普遍需要用戶手動(dòng)配置串口資源,本設(shè)計(jì)在此基礎(chǔ)上提出優(yōu)化程序-智能識(shí)別通訊串口。以粉塵傳感器為例,其實(shí)現(xiàn)過(guò)程為:調(diào)用VISA查找資源函數(shù)搜索上位機(jī)所有串口信息,初始化關(guān)閉所有串口,然后將設(shè)備列表輸入For循環(huán),并通過(guò)串口配置函數(shù)配置串口,建立通訊連接,VISA 寫(xiě)入函數(shù)寫(xiě)入粉塵傳感器采集指令,并等待傳感器返回信息。系統(tǒng)通過(guò) CRC校驗(yàn)返回?cái)?shù)據(jù)的正確性,當(dāng)發(fā)送與接收 CRC 校驗(yàn)碼匹配時(shí),循環(huán)停止,當(dāng)前隧道最終值對(duì)應(yīng)的串口資源名稱即為粉塵通訊串口。
圖4 環(huán)境信息顯示界面
通信串口識(shí)別完成以后,數(shù)據(jù)采集循環(huán)會(huì)根據(jù)用戶監(jiān)測(cè)項(xiàng)的配置讀取對(duì)應(yīng)傳感器通道采集值,并以隊(duì)列方式送入數(shù)據(jù)記錄循環(huán),數(shù)據(jù)存儲(chǔ)模塊會(huì)依據(jù)數(shù)據(jù)庫(kù)配置,利用SQL語(yǔ)句Insert into 表名(date_time,字段名,……,)Values (當(dāng)前時(shí)間,采集值,……)將環(huán)境數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。
采集數(shù)據(jù)需要與閾值對(duì)比,判定警報(bào)狀態(tài)和級(jí)別并以不同顏色顯示在報(bào)警窗口,以待用戶確認(rèn)。其過(guò)程首先利用索引數(shù)組函數(shù)將“監(jiān)測(cè)項(xiàng)Config”控件中每個(gè)監(jiān)控項(xiàng)的4種閾值及其對(duì)應(yīng)的是否可用信息提取出來(lái),然后采集到的數(shù)據(jù)與4種閾值進(jìn)行大小比較得到對(duì)應(yīng)的警報(bào)狀態(tài)(Disconnected、LowLow!!!、Low!、HighHigh!!!、High!)和級(jí)別(Fatal!!!、Severe!!、Warning!、Error!、Infor),最后通過(guò)給警報(bào)窗口CellFontColor屬性節(jié)點(diǎn)賦不同顏色值的方法將信息分級(jí)別顯示在警報(bào)窗口中。Fatal!!!為紅色,Severe!!為橙色,Warning!為黃色,Error!為藍(lán)色,Info為正常黑色。若警報(bào)處理機(jī)制為Manual模式,則“警報(bào)處理…”按鈕Disable屬性參數(shù)為0,用戶可對(duì)鼠標(biāo)選中的警報(bào)項(xiàng)或All警報(bào)項(xiàng)進(jìn)行確認(rèn)。若確認(rèn)后報(bào)警仍然存在,則以灰色顯示;若為Auto模式,則“警報(bào)處理…”按鈕Disable屬性參數(shù)為2,窗口中只要存在未被確認(rèn)的警報(bào),Alarm燈就會(huì)不停閃爍。所有的警報(bào)信息都會(huì)通過(guò)SQL語(yǔ)句Insert into Alarm(時(shí)間,報(bào)警項(xiàng),值,狀態(tài),級(jí)別)Values (′當(dāng)前時(shí)間,′項(xiàng)名′,′監(jiān)控值′,……)寫(xiě)入數(shù)據(jù)庫(kù)。
環(huán)境監(jiān)測(cè)系統(tǒng)數(shù)據(jù)查詢界面為數(shù)據(jù)后期管理設(shè)計(jì)。為解決傳統(tǒng)監(jiān)測(cè)系統(tǒng)側(cè)重現(xiàn)場(chǎng)實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù),歷史實(shí)時(shí)數(shù)據(jù)不保留或保留時(shí)間短,存儲(chǔ)分散,需要人工定期發(fā)送數(shù)據(jù)等弊端[7],本系統(tǒng)在本地TDMS文件存儲(chǔ)的基礎(chǔ)上搭建了遠(yuǎn)程MySQL數(shù)據(jù)存儲(chǔ)平臺(tái),環(huán)境信息將通過(guò)數(shù)據(jù)記錄循環(huán)依次寫(xiě)入數(shù)據(jù)庫(kù),從而滿足企業(yè)各管理層次需求。與之相應(yīng),系統(tǒng)針對(duì)用戶身份級(jí)別設(shè)計(jì)了本地和遠(yuǎn)程2種方式用于查詢歷史環(huán)境數(shù)據(jù),并寫(xiě)入表格、繪制歷史曲線圖,通過(guò)打印按鈕實(shí)現(xiàn)歷史數(shù)據(jù)報(bào)表輸出。遠(yuǎn)程MySQL數(shù)據(jù)庫(kù)查詢界面如圖5所示,為企業(yè)管理人員提供了較以往系統(tǒng)更細(xì)致全面的功能,提供警報(bào)信息查詢、日期查詢、具體監(jiān)測(cè)項(xiàng)查詢、組合查詢、樣本間隔設(shè)置等多種查詢方式,便于用戶查詢管理數(shù)據(jù)。
圖5 云數(shù)據(jù)查詢界面
用戶首先選擇存儲(chǔ)監(jiān)測(cè)數(shù)據(jù)的MySQL數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)源名稱和表名,然后點(diǎn)擊Items form table按鈕,執(zhí)行“desc′表名′”語(yǔ)句得到數(shù)據(jù)表字段信息,再經(jīng)過(guò)索引數(shù)組,刪除數(shù)組元素操作得到監(jiān)控項(xiàng)并將其賦值給Items列表框的ItemNames屬性參數(shù),這樣用戶就可以按住Ctrl或Shift鍵自主選擇想要查看的監(jiān)控項(xiàng),通過(guò)執(zhí)行SQL語(yǔ)句“select id,date_time,′項(xiàng)名1′,′項(xiàng)名2′,…… from總表 where date_time>=′開(kāi)始時(shí)間′and date_time<=′結(jié)束時(shí)間′ and mod(id,樣本間隔)=′商數(shù)′order by date_time”,得到指定起止時(shí)間段和樣本間隔的歷史數(shù)據(jù),最后經(jīng)過(guò)數(shù)組操作將數(shù)據(jù)表以波形圖表顯示出來(lái)。Select * from Alarm where 報(bào)警項(xiàng) like ′項(xiàng)名′;實(shí)現(xiàn)某一監(jiān)控項(xiàng)的歷史警報(bào)信息的查詢。Select * from Alarm where 級(jí)別 like ′Fatal!!!′;實(shí)現(xiàn)某一警報(bào)級(jí)別所有報(bào)警項(xiàng)信息的查詢。組合查詢是按警報(bào)級(jí)別和按日期查詢的綜合,用戶可任意匹配組合查詢方式,功能實(shí)現(xiàn)是通過(guò)select * from Alarm where 級(jí)別 like ′*** ′ and 時(shí)間 like ′*** ′語(yǔ)句對(duì) Alarm表操作完成。數(shù)據(jù)打印功能將依托編程-報(bào)表生成中各函數(shù)實(shí)現(xiàn)。
多場(chǎng)景環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)完成實(shí)際應(yīng)用之前需要對(duì)其進(jìn)行功能測(cè)試,搭建了一個(gè)如圖6所示的測(cè)試平臺(tái)。開(kāi)始測(cè)試之前先用零空氣吹掃氣室,然后用真空泵向有機(jī)玻璃制成的容積為125 L的正方體密閉箱按比例注入待測(cè)氣體,待混合均勻后,在上位機(jī)對(duì)測(cè)試環(huán)境進(jìn)行參數(shù)配置,開(kāi)啟空氣泵將待測(cè)氣體抽入傳感器組氣腔中進(jìn)行監(jiān)測(cè),并同時(shí)由程控界面顯示,觀察MySQL數(shù)據(jù)庫(kù)中各表數(shù)據(jù)是否更新,依次排查密碼修改、權(quán)限配置、實(shí)時(shí)曲線/柱狀圖、數(shù)據(jù)查詢、報(bào)表打印、幫助等各項(xiàng)功能是否正常運(yùn)行。通過(guò)測(cè)試,本系統(tǒng)在場(chǎng)景適應(yīng)性、可靠性及本地TDMS、云MySQL存儲(chǔ)查詢方面均達(dá)到設(shè)計(jì)要求,具有較強(qiáng)的實(shí)際應(yīng)用價(jià)值。
圖6 系統(tǒng)功能驗(yàn)證測(cè)試平臺(tái)
文中所述基于LabVIEW的多場(chǎng)景環(huán)境信息監(jiān)測(cè)系統(tǒng)具有以下特點(diǎn):
(1)基于“模塊化”思想設(shè)計(jì)、可擴(kuò)展性的采集設(shè)備配合上位機(jī)傳感器選通通道自主配置功能,使系統(tǒng)實(shí)現(xiàn)環(huán)境因子與硬件資源的匹配,能夠適用于大多數(shù)環(huán)境場(chǎng)所;
(2)無(wú)線數(shù)據(jù)傳輸方式避免了冗繁布線工作帶來(lái)的安全隱患,組網(wǎng)簡(jiǎn)便且通信穩(wěn)定;
(3)權(quán)限分級(jí)設(shè)計(jì)避免了非授權(quán)用戶的非法操作,保證系統(tǒng)運(yùn)行的安全性;
(4)分級(jí)報(bào)警機(jī)制提供的精確警報(bào)信息對(duì)管理層提出針對(duì)性響應(yīng)措施有一定指導(dǎo)意義;
(5)遠(yuǎn)程數(shù)據(jù)庫(kù)存儲(chǔ)和查詢平臺(tái)實(shí)現(xiàn)現(xiàn)場(chǎng)應(yīng)用與管理執(zhí)行層應(yīng)用系統(tǒng)之間的數(shù)據(jù)共享,更大程度地發(fā)揮環(huán)境數(shù)據(jù)價(jià)值,提高企業(yè)信息化能力。