基于LabVIEW DSC的監(jiān)控軟件的應(yīng)用研究
1 引言
本文引用地址:http://www.ex-cimer.com/article/201612/334128.htm目前用于監(jiān)測功能的裝置大部分是通過商業(yè)組態(tài)軟件(如Fix、組態(tài)王等)來實現(xiàn),其在功能上存在一定的缺陷:商業(yè)組態(tài)軟件盡管能設(shè)計出友好的人機(jī)界面,但它是按照安裝的節(jié)點及I/O的點數(shù)來計費,所以對于中小型系統(tǒng)而言,性價比就會比較低。相對的,LabVIEW具有人機(jī)界面友好,功能強大,維護(hù)簡便等優(yōu)點。鑒于上述原因,本文提出了在上位機(jī)中采用LabVIEW作為控制系統(tǒng)的測控軟件,實現(xiàn)過程控制的監(jiān)控功能,以取代上位監(jiān)控組態(tài)軟件。下面做一下簡單的介紹。
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是實驗室虛擬儀器集成開發(fā)平臺的簡稱,它是目前國際上應(yīng)用最廣泛的虛擬儀器開發(fā)環(huán)境之一。LabVIEW的最大特色是采用編譯型圖形化編程語言-G語言(Graph Programming),它與C、Pascal、Basic等傳統(tǒng)語言有著相似之處,如:相似的數(shù)據(jù)類型、數(shù)據(jù)流控制結(jié)構(gòu)、程序調(diào)試工具,以及模塊化的編程特點。但二者最大的區(qū)別在于:傳統(tǒng)編程語言用文本語言編程,程序的執(zhí)行依賴于文本所描述的指令;而LabVIEW使用圖形語言(即各種圖標(biāo)、圖形、符號、連線等)以框圖的形式編寫程序。用LabVIEW編程無需具備太多編程經(jīng)驗,因為LabVIEW使用的都是測試工程師們熟悉的術(shù)語和圖標(biāo),如各種按鈕、開關(guān)、波形圖等,界面非常直觀形象 [1]。然而,用LabVIEW
2
監(jiān)控軟件一般應(yīng)實現(xiàn)的基本監(jiān)控功能包括:數(shù)據(jù)采集與數(shù)據(jù)處理功能、系統(tǒng)故障診斷和事故報警功能、圖形組態(tài)功能、實時與歷史數(shù)據(jù)曲線顯示功能、報表打印功能和友好的人機(jī)界面[4]。
2.1數(shù)據(jù)采集及存儲
在現(xiàn)場總線控制系統(tǒng)中,對于過程控制來說,很重要的內(nèi)容就是對實時采集的數(shù)據(jù)進(jìn)行顯示和查詢以及報表分析,這就涉及到數(shù)據(jù)采集及存儲的問題。“數(shù)據(jù)采集”是指將溫度、壓力、流量等模擬量采集、轉(zhuǎn)換成數(shù)字量以后,再由計算機(jī)進(jìn)行存儲、處理、顯示或者打印的過程。所以用LabVIEW實現(xiàn)實時的數(shù)據(jù)采集功能是設(shè)計研究的關(guān)鍵部分。運用“LabVIEW+DSC”相結(jié)合的設(shè)計方法,軟件體系結(jié)構(gòu)圖如圖1所示:
圖1 “LabVIEW+DSC”的軟件體系結(jié)構(gòu)圖
2.1.1
為提高系統(tǒng)的開放性,選用了“LabVIEW+OPC”的設(shè)計方法。就是用LabVIEW作為上位機(jī)監(jiān)控軟件,采用先進(jìn)的網(wǎng)絡(luò)通信技術(shù)——DataSocket技術(shù),通過OPC服務(wù)器接口來實現(xiàn)現(xiàn)場數(shù)據(jù)共享。這里采用的OPC服務(wù)器是Matrikon公司研發(fā)的,它作為一中間橋梁,實現(xiàn)了監(jiān)控軟件LabVIEW和現(xiàn)場智能組件之間的數(shù)據(jù)通信,通過OPC配置項建立與底層設(shè)備的數(shù)據(jù)采集點的一一對應(yīng)關(guān)系。如下圖所示:
圖2
其中項名Name是用戶自己定義的對應(yīng)于現(xiàn)場的數(shù)據(jù)采集點,Item Path必須符合OPC服務(wù)器與MODBUS協(xié)議的語法要求,即“[port].Device.0~4:”,同時設(shè)置該項是讀數(shù)據(jù)還是寫數(shù)據(jù)以及數(shù)據(jù)的類型、更新時間等等[5]。
2.1.2 實時數(shù)據(jù)庫
LabVIEW訪問OPC的方法有很多種,本文采用的是通過DSC模塊中Tag Configuration Editor引擎,建立LabVIEW和OPC服務(wù)器的連接。DSC模塊使用Tag連接OPC數(shù)據(jù)項,通過Tag Configuration Editor ,可以將DSC的Tag與OPC數(shù)據(jù)項對應(yīng)起來,生成.scf文件,相當(dāng)于LabVIEW的實時數(shù)據(jù)庫,如圖3所示。
圖3 .scf文件
在Analog Tag Configuration 的Connect目錄下的Item與OPC服務(wù)器的項名進(jìn)行匹配,并對Tag進(jìn)行了詳細(xì)的描述,如OPC服務(wù)器,工程量的范圍,報警的上下限,更新的死區(qū)等等[3]。在運行時,標(biāo)簽引擎Tag Engine 會根據(jù).scf文件的配置建立與OPC服務(wù)器的連接。當(dāng)OPC服務(wù)器與.scf文件配置好以后,可以在LabVIEW的前面板上通過Numeric Control,Numeric Indicator控件讀寫現(xiàn)場采集的數(shù)據(jù),Numeric Control,Numeric Indicator控件通過人機(jī)向?qū)MI Wizard for Analog Control與.scf文件Tag進(jìn)行匹配,并自動默認(rèn)控件的Lable為與之對應(yīng)的OPC配置所對應(yīng)的項名。
DSC模塊的成功運用,使得界面之間的切換更加友好化;并成功解決了數(shù)據(jù)更新速度慢、界面之間切換慢的問題,保證了控制的實時性和可靠性等要求。
2.1.3 報表生成
現(xiàn)場采集來的數(shù)據(jù)可以以報表的形式輸出到Execl表格中,以供存儲與瀏覽。然而,LabVIEW本身沒有強大的實時數(shù)據(jù)庫,只有通過DSC模塊生成的.scf文件來記錄數(shù)據(jù)并存入歷史數(shù)據(jù)庫,但是它是根據(jù)記錄死區(qū)log Deadband所定義的偏差來記錄數(shù)據(jù)的,而不是根據(jù)時間記錄的,只有當(dāng)數(shù)據(jù)的變化超出偏差時才記錄,因此,會導(dǎo)致在生成報表時數(shù)據(jù)和時間不對應(yīng)。鑒于上述原因,一般通過編程來實現(xiàn)會比較好。
編程如下:先將要求記錄的標(biāo)簽Tag的值按照時間間隔(如1小時)寫入一個表(如控件Table),然后再根據(jù)要求記錄的數(shù)據(jù)個數(shù)(如24個)將Table的記錄數(shù)據(jù)寫入Excel中,并將Table清空。這種方法只要求用戶定義報表輸出周期和數(shù)據(jù)輸出的周期即可。例如:要求每小時記錄一個數(shù)據(jù),每天生成一個報表,就可以只設(shè)定數(shù)據(jù)輸出的周期1小時,數(shù)據(jù)的個數(shù)24個即可。到目前為止,此種方法在現(xiàn)場控制中應(yīng)用效果非常好。尤其在編程過程中,調(diào)用了LabVIEW中的兩個子VI:Generate Unique Filename.vi(用來指示報表的路徑及時間)和Array to HTML Table.vi(用于生成報表的格式),使得流程圖的編譯更簡單、簡潔,并增加了軟件的可復(fù)用性。
圖4 數(shù)據(jù)存儲及報表生成
2.2實時與歷史曲線顯示
趨勢曲線能夠形象清楚地描繪出現(xiàn)場數(shù)據(jù)在一段時間內(nèi)的分布趨勢,通過趨勢圖,操作員可以根據(jù)各個現(xiàn)場數(shù)據(jù)采集點的數(shù)據(jù)的變化趨勢看出各個量的變化情況,而且能查看任何歷史時刻的數(shù)據(jù),供現(xiàn)場操作人員作出適當(dāng)?shù)奶幚怼?/p>
在實現(xiàn)實時曲線時,調(diào)用了DSC模塊提供的Trend Tags.vi,該子VI的輸入為標(biāo)簽(Tag)和時間長度,可以通過編程來實現(xiàn)X軸、Y軸顯示的數(shù)據(jù)范圍的大小;實現(xiàn)歷史曲線時,調(diào)用DSC模塊提供的Read Treace.vi,通過Historical Trend控件可以查看任意歷史時刻的現(xiàn)場采集的數(shù)據(jù),通過選擇不同的現(xiàn)場采集點,X軸、Y軸的量程范圍也隨之變化。值得注意的是,歷史曲線只有在數(shù)據(jù)變化超過所設(shè)定的偏差時,才顯示曲線的趨勢圖。
2.3報警顯示與故障處理
監(jiān)控軟件一般都提供了報警系統(tǒng),報警系統(tǒng)可用于生成、顯示、存儲報警信息,并將報警信息發(fā)送到網(wǎng)絡(luò)上的任意節(jié)點,或監(jiān)控主機(jī)相連的打印機(jī)、磁盤文件、報警概要顯示、報警歷史窗口以及多媒體報警系統(tǒng),按故障發(fā)生時間任意排序、登記在數(shù)據(jù)庫中,并在計算機(jī)上顯示出來。
本文是采用DSC模塊提供了報警事件顯示Alarm Event Display控件,實現(xiàn)有關(guān)的現(xiàn)場報警及各種應(yīng)用報警的顯示。它可以用來對現(xiàn)場的事件報警信息進(jìn)行顯示,包括產(chǎn)生報警現(xiàn)場測量點,報警的時間,報警的優(yōu)先級及報警的原因等等,產(chǎn)生報警以后需要對此信息進(jìn)行確認(rèn),確認(rèn)后在報警信息欄會顯示報警確認(rèn)的時間和確認(rèn)者;未響應(yīng)的故障持續(xù)發(fā)出聲光報警,并用紅色進(jìn)行閃爍指示。
2.4人機(jī)交互與用戶安全權(quán)限
LabVIEW提供了豐富的前面板控件,如數(shù)據(jù)連接,按鈕、表格、曲線等,甚至還有專門的裝飾控件,并且DSC模塊的Image Navigator也包含了各種各樣的圖標(biāo)(Symbols),可以滿足用戶的各種要求,同時也可以在前面板上粘貼.Bmp和.JPEG格式的圖片,完全能夠?qū)崿F(xiàn)監(jiān)控軟件的流程畫面設(shè)計,使人機(jī)界面更友好[6]。
再者,為了保證正常生產(chǎn)監(jiān)控的需要,防止誤操作造成生產(chǎn)停頓和大的經(jīng)濟(jì)損失,要明確操作人員的職責(zé)范圍,防止操作人員的越權(quán)操作。因此,可以通過設(shè)置以安全級別為基礎(chǔ)的各種用戶,在應(yīng)用程序?qū)用鎸Σ僮鲉T的操作權(quán)限進(jìn)行控制,禁止越權(quán)操作。
DSC模塊提供了NI User Account Manager,可編輯各個安全級別不同的用戶。在運行DSC Run-Time System時,調(diào)用Invoke Login Dialog.vi讓用戶注冊,前面板可控制的控件提供安全屬性設(shè)置,定義某些用戶可以控制及其具有的操作權(quán)限。這樣,每個控件僅允許預(yù)先定義的用戶進(jìn)行操作,用戶要實現(xiàn)對控件的控制,則需要先用相應(yīng)的權(quán)限進(jìn)行注冊。本監(jiān)控軟件設(shè)定了三個用戶級別:
(1)工程師級:能修改系統(tǒng)組態(tài)的各種參數(shù),能清除記錄文件的內(nèi)容。
(2)操作員級:能修改部分參數(shù)和進(jìn)行遠(yuǎn)程標(biāo)定。
(3)一般級:僅能查看畫面和數(shù)據(jù),不能做任何修改和遠(yuǎn)程操作。
3 結(jié)束語
該監(jiān)控軟件經(jīng)實際運行證明,LabVIEW的圖形化編程環(huán)境,可以使用戶設(shè)計出使用靈活、畫面質(zhì)量和表現(xiàn)形式豐富多樣的監(jiān)控系統(tǒng)。再者,采用DSC(數(shù)據(jù)記錄監(jiān)控)模塊所提供的諸如圖庫、VIs以及實時數(shù)據(jù)庫等功能可以使用戶組態(tài)系統(tǒng)所需的時間縮短,同時使系統(tǒng)功能得到加強。此監(jiān)控軟件已成功運用于某藥業(yè)的FQA工程,它不僅能滿足現(xiàn)場監(jiān)控的各種需要,且畫面生動逼真,貼近現(xiàn)場、操作簡便安全、報表打印靈活方便、安全性可靠等諸多優(yōu)點得到了用戶的高度好評,再次驗證了基于LabVIEW的監(jiān)控軟件在過程控制中可行性。
評論