1 引言
目前,在監(jiān)控系統(tǒng)軟件的開(kāi)發(fā)中,比較常見(jiàn)的方法主要有兩種。一種是利用面向?qū)ο蟮目梢暬幊陶Z(yǔ)言如vb、vc來(lái)開(kāi)發(fā),其中包括數(shù)據(jù)通訊、界面實(shí)現(xiàn)、數(shù)據(jù)處理和數(shù)據(jù)庫(kù)功能等部分內(nèi)容;另一種是利用組態(tài)軟件來(lái)完成,利用組態(tài)軟件提供的硬件驅(qū)動(dòng)功能直接訪問(wèn)硬件進(jìn)行通信,同時(shí)利用其圖形化工具實(shí)現(xiàn)監(jiān)控界面。前一種方法的程序設(shè)計(jì)任務(wù)比較重,特別是要實(shí)現(xiàn)工業(yè)生產(chǎn)中復(fù)雜的流程和工藝的逼真顯示要花費(fèi)大量的時(shí)間;后一種方法對(duì)硬件的依賴比較大,當(dāng)組態(tài)軟件不支持相關(guān)的硬件時(shí)就會(huì)受到限制。將兩種方法結(jié)合起來(lái)則是一種很好的選擇。利用vb、vc提供的強(qiáng)大的數(shù)據(jù)通訊和處理功能實(shí)現(xiàn)數(shù)據(jù)采集、控制及處理,利用組態(tài)軟件的圖形化工具來(lái)實(shí)現(xiàn)界面設(shè)計(jì),二者的結(jié)合將使監(jiān)控系統(tǒng)軟件的設(shè)計(jì)更加簡(jiǎn)單和靈活。
2 系統(tǒng)概述
在某油田生產(chǎn)監(jiān)控系統(tǒng)設(shè)計(jì)中,筆者采用vb和組態(tài)王的結(jié)合設(shè)計(jì)了整個(gè)系統(tǒng)的監(jiān)控軟件。在該系統(tǒng)中有多種測(cè)控點(diǎn),其中一部分需要控制(如壓力),利用plc的模擬量輸入輸出模塊來(lái)完成;另一部分只需測(cè)量,如現(xiàn)場(chǎng)的液位、流量等,采用光纖液位計(jì)、智能流量計(jì)等儀表測(cè)量,這些儀表具有模擬和數(shù)字通信能力,但不能和組態(tài)王直接通信。因此,采用vb編寫(xiě)通訊程序與plc和儀表通信,對(duì)數(shù)據(jù)進(jìn)行分析處理,利用vb和組態(tài)王之間的動(dòng)態(tài)數(shù)據(jù)交換(dde)實(shí)現(xiàn)數(shù)據(jù)共享,并在組態(tài)王中設(shè)計(jì)相應(yīng)的監(jiān)控界面。
整個(gè)系統(tǒng)采用多級(jí)分布式結(jié)構(gòu),分為2個(gè)分控站和1個(gè)主控站并要求實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能,系統(tǒng)結(jié)構(gòu)如圖1所示。由底層plc控制系統(tǒng)、分控室過(guò)程監(jiān)控系統(tǒng)和主控室管理系統(tǒng)以及網(wǎng)絡(luò)化遠(yuǎn)程監(jiān)控系統(tǒng)構(gòu)成。
其中,plc控制系統(tǒng)主要完成現(xiàn)場(chǎng)需要控制設(shè)備的控制,plc主要包括模擬量輸入模塊和模擬量輸出模塊及pid控制模塊。
分控室過(guò)程監(jiān)控系統(tǒng)作用是與底層的plc和儀表通訊,獲取生產(chǎn)過(guò)程的數(shù)據(jù),顯示工藝流程,歷史曲線圖,實(shí)時(shí)曲線圖,報(bào)警畫(huà)面,生成數(shù)據(jù)庫(kù)等。
[align=center]
圖1 系統(tǒng)結(jié)構(gòu)圖[/align]
主控室與分控室工業(yè)控制機(jī)通訊,獲取生產(chǎn)工藝參數(shù)報(bào)表,報(bào)警記錄等資料信息,為管理人員了解總體生產(chǎn)狀況,調(diào)整生產(chǎn)計(jì)劃提供幫助。
分控室和主控室系統(tǒng)以ethernet相連,共享數(shù)據(jù)和信息。分控室計(jì)算機(jī)的信息通過(guò)網(wǎng)絡(luò)送到主機(jī),由主控室完成數(shù)據(jù)處理的任務(wù),自動(dòng)生成各種報(bào)表,并在指定的時(shí)間打印輸出。主控室可以根據(jù)操作人員的選擇切換同步監(jiān)視各個(gè)分控室系統(tǒng)的運(yùn)行情況。主控室計(jì)算機(jī)還完成網(wǎng)絡(luò)服務(wù)器的功能,將這些生產(chǎn)參數(shù)上網(wǎng)傳輸,與局域網(wǎng)和internet相連,實(shí)現(xiàn)網(wǎng)絡(luò)化遠(yuǎn)程監(jiān)控。
主監(jiān)控室和遠(yuǎn)程監(jiān)控局域網(wǎng)之間選擇快速以太網(wǎng);分控室和主控室之間由于通信距離較遠(yuǎn)和有干擾源存在,選擇rs485串行通信標(biāo)準(zhǔn)。分控室和plc儀表及之間則選擇簡(jiǎn)單可靠的rs232串行通信標(biāo)準(zhǔn)。
3 數(shù)據(jù)采集與通訊程序
數(shù)據(jù)采集與通訊程序作為與儀表和plc以及與上位機(jī)監(jiān)控軟件的接口,在系統(tǒng)軟件中占據(jù)了重要的地位,其功能結(jié)構(gòu)如圖2所示。數(shù)據(jù)采集與通訊程序在分控室監(jiān)控計(jì)算機(jī)上主要包括與智能儀表、plc的通訊和與主控室的通訊三部分,均用vb編寫(xiě),采用vb6.0提供的mscomm通信控件。mscomm控件通過(guò)定時(shí)查詢來(lái)控制串行端口,每隔一段時(shí)間讀取或發(fā)送一次數(shù)據(jù),包括定時(shí)讀取智能儀表、plc數(shù)據(jù)和定時(shí)向主控室計(jì)算機(jī)傳送數(shù)據(jù)。對(duì)plc控制參數(shù)的寫(xiě)入,則采用事件驅(qū)動(dòng)方式來(lái)處理,在程序中設(shè)置相關(guān)的標(biāo)志位,需要寫(xiě)入時(shí)由相應(yīng)事件引起標(biāo)志位改變,再調(diào)用相應(yīng)的處理和寫(xiě)入子程序。需要進(jìn)行圖形化顯示的數(shù)據(jù)則在vb中定義為dde變量,并作為組態(tài)王中相應(yīng)數(shù)據(jù)變量的dde數(shù)據(jù)服務(wù)器。采集和通訊程序生成可執(zhí)行程序,監(jiān)控系統(tǒng)軟件啟動(dòng)時(shí)自動(dòng)后臺(tái)運(yùn)行。主控室計(jì)算機(jī)接收分控室定時(shí)傳來(lái)的數(shù)據(jù),存儲(chǔ)到數(shù)據(jù)庫(kù)中,作為遠(yuǎn)程監(jiān)控頁(yè)面訪問(wèn)的數(shù)據(jù)源,利用flash、asp等生成動(dòng)態(tài)網(wǎng)頁(yè)并向局域網(wǎng)和internet發(fā)布實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。
[align=center]
圖2 通訊程序功能結(jié)構(gòu)[/align]
4 組態(tài)王與vb的dde實(shí)現(xiàn)
基于windows消息機(jī)制的dde(dynamic data exchange)是windows實(shí)現(xiàn)其應(yīng)用程序彼此之間通信的一種手段,通過(guò)在運(yùn)行的應(yīng)用程序之間建立客戶/服務(wù)器(client/ server)關(guān)系實(shí)現(xiàn)在彼此之間交換數(shù)據(jù)或指令。dde可以作為連接監(jiān)控系統(tǒng)現(xiàn)場(chǎng)信號(hào)與監(jiān)控軟件的橋梁,允許在兩個(gè)windows應(yīng)用程序間通過(guò)相互傳遞dde消息進(jìn)行會(huì)話,從而完成數(shù)據(jù)的請(qǐng)求、應(yīng)答和傳輸。這樣,若需實(shí)現(xiàn)監(jiān)控?cái)?shù)據(jù)與監(jiān)控界面相集成,可事先編寫(xiě)好具有通用功能的dde服務(wù)軟件,為用戶規(guī)定好應(yīng)用程序名(server)、標(biāo)題名(topic)和項(xiàng)目名(item),讓用戶自己按提供的規(guī)范去完成監(jiān)視畫(huà)面的組態(tài)功能。
dde提供對(duì)不同程序在運(yùn)行期間實(shí)現(xiàn)對(duì)數(shù)據(jù)的動(dòng)態(tài)交換,它是建立在windows內(nèi)部消息系統(tǒng)和共享全局內(nèi)存基礎(chǔ)上的一種協(xié)議,用來(lái)協(xié)調(diào)windows應(yīng)用程序之間的數(shù)據(jù)交換和命令調(diào)用。dde協(xié)議使用三級(jí)命名:服務(wù)(service)、主題(topic)和數(shù)據(jù)項(xiàng)(item)來(lái)標(biāo)識(shí)dde所傳遞的數(shù)據(jù)單元。服務(wù)使應(yīng)用程序具有了提供給其他程序的數(shù)據(jù)交換能力,一般服務(wù)就是應(yīng)用程序的文件名;主題是對(duì)服務(wù)器有意義的信息單元,許多服務(wù)器都有默認(rèn)的主題。每次dde客戶與服務(wù)程序之間的對(duì)話都是先由客戶啟動(dòng)的,所以在每次客戶啟動(dòng)之前,dde服務(wù)器必須先投入運(yùn)行。dde支持 3種數(shù)據(jù)交換模式:冷鏈結(jié),客戶(client)應(yīng)用程序請(qǐng)求來(lái)自服務(wù)器(server)的數(shù)據(jù);溫鏈結(jié),客戶應(yīng)用程序請(qǐng)求來(lái)自服務(wù)器的一個(gè)通知,以便知道某些特定的數(shù)據(jù)項(xiàng)在何時(shí)發(fā)生了變化;熱鏈結(jié),當(dāng)特定數(shù)據(jù)項(xiàng)發(fā)生變化時(shí),服務(wù)器向用戶同時(shí)發(fā)送通知和數(shù)據(jù)本身。dde協(xié)議在vb和組態(tài)王中都進(jìn)行了很好的封裝,可以很容易的實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)交換。
為了建立dde連接,需要在組態(tài)王的數(shù)據(jù)詞典里建立dde變量,并登記3個(gè)標(biāo)識(shí)名。組態(tài)王運(yùn)行系統(tǒng)的程序名是“view”,主題規(guī)定為“tagname”,項(xiàng)目是在定義dde變量時(shí)的項(xiàng)目名稱。變量名是組態(tài)王使用的,“連接對(duì)象名”用來(lái)定義服務(wù)器程序的信息。組態(tài)王作為客戶向vb請(qǐng)求數(shù)據(jù)時(shí)需要在定義變量時(shí)說(shuō)明服務(wù)器程序的3個(gè)標(biāo)識(shí)名。應(yīng)用程序名為vb中可執(zhí)行程序的名字,話題為vb中可執(zhí)行程序窗體的linktopic屬性值,項(xiàng)目名設(shè)為窗體中控件的名字。
在vb中dde連接是通過(guò)控件的屬性和方法來(lái)實(shí)現(xiàn)的。需要設(shè)置linktopic、linkitem和linkmode3個(gè)屬性。當(dāng)vb軟件擔(dān)任客戶時(shí): linktopic屬性指的是服務(wù)器軟件的名稱以及在它下面所建立的文件名稱; linkitem屬性指的是服務(wù)器軟件的linkmode屬性下指定要傳給vb控制的那些項(xiàng)目。
linkmode屬性有三種設(shè)定:“0”為none,無(wú)dde功能;“1”為hot,當(dāng)服務(wù)器數(shù)據(jù)變動(dòng)時(shí)客戶數(shù)據(jù)會(huì)隨時(shí)更新;“2”為cold,客戶數(shù)據(jù)只有在請(qǐng)求dde時(shí)才更新。當(dāng)vb擔(dān)任服務(wù)器時(shí),只需設(shè)置linktopic和linkitem屬性。linktopic屬性指的是要對(duì)客戶請(qǐng)求做出反應(yīng)的窗體,而窗體中的控件就是客戶所請(qǐng)求對(duì)象的項(xiàng)目。
linkmode屬性有兩種:“0”為none;“1”為server。當(dāng)設(shè)為“1”時(shí),窗體上的控件就可以供應(yīng)數(shù)據(jù)給已建立dde管道的客戶軟件;設(shè)為“0”時(shí),則無(wú)dde連接。
分控站監(jiān)控程序與數(shù)據(jù)采集程序之間存在大量的數(shù)據(jù)交換,由在后臺(tái)運(yùn)行的數(shù)據(jù)采集程序和組態(tài)王之間的dde連接來(lái)實(shí)現(xiàn)。其中數(shù)據(jù)采集程序作為dde服務(wù)器,組態(tài)王作為客戶向其請(qǐng)求數(shù)據(jù)。組態(tài)王與數(shù)據(jù)采集程序的dde連接在組態(tài)王啟動(dòng)時(shí)自動(dòng)完成。
5 結(jié)束語(yǔ)
通過(guò)dde連接實(shí)現(xiàn)了數(shù)據(jù)采集程序與監(jiān)控軟件之間的信息集成和共享。利用組態(tài)王提供的豐富的圖形和組態(tài)工具,可以實(shí)現(xiàn)工藝流程圖的實(shí)時(shí)數(shù)據(jù)刷新、各種曲線和報(bào)警等的顯示。這種方法可以充分發(fā)揮vb和組態(tài)王各自的優(yōu)勢(shì),利用vb的數(shù)據(jù)通訊、處理能力和組態(tài)王的圖形化工具,使監(jiān)控系統(tǒng)軟件的開(kāi)發(fā)更加簡(jiǎn)單和靈活。
參考文獻(xiàn)
[1] 盧秋紅,張國(guó)偉,顏國(guó)正. 動(dòng)態(tài)數(shù)據(jù)交換在工業(yè)自動(dòng)控制組態(tài)系統(tǒng)中的應(yīng)用[j]. 工業(yè)儀表與自動(dòng)化裝置,2001,(6).
[2] 王為東,李 超. 結(jié)合組態(tài)王和plc實(shí)現(xiàn)遠(yuǎn)程監(jiān)控系統(tǒng)[j]. plc&fa, 2002.(4).
[3] 組態(tài)王6.0使用手冊(cè)[z]. 北京亞控自動(dòng)化軟件科技有限公司。
作者簡(jiǎn)介
李 超 (1979-) 男 助教 主要從事計(jì)算機(jī)控制、現(xiàn)場(chǎng)總線與工業(yè)監(jiān)控系統(tǒng)等教學(xué)和科研工作。