楊東升鄭煒吳宏
(1.駐上海滬東中華造船(集團(tuán))有限公司軍事代表室 上海 200129)
(2.中國船舶重工集團(tuán)公司第七○一研究所湖北 武漢 430064)
VB與組態(tài)軟件集成監(jiān)控解決方案研究
楊東升1鄭煒2吳宏1
(1.駐上海滬東中華造船(集團(tuán))有限公司軍事代表室 上海 200129)
(2.中國船舶重工集團(tuán)公司第七○一研究所湖北 武漢 430064)
組態(tài)軟件;VB;遠(yuǎn)程監(jiān)控;軟件接口
研究了組態(tài)軟件與VB的集成方法,提出了VB與組態(tài)軟件集成監(jiān)控方案。該方案克服了組態(tài)軟件本身功能性的不足,并結(jié)合具體應(yīng)用,以MCGS為例進(jìn)行了方案的實(shí)施和驗(yàn)證。
鄭煒(1971.11-),男,漢族,高級工程師,主要從事船舶電氣設(shè)計(jì)研究工作。
吳宏(1975.12-),男,漢族,工程師,主要從事船舶電氣工作。
隨著控制技術(shù)、通訊技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,遠(yuǎn)程監(jiān)控系統(tǒng)在工業(yè)過程控制中的應(yīng)用越來越廣泛。組態(tài)軟件由于功能強(qiáng)大、良好的人機(jī)界面、模塊化、編程簡便、開發(fā)成本低、周期短等優(yōu)勢,成為工業(yè)現(xiàn)場遠(yuǎn)程監(jiān)控方案的首選[1]。
使用組態(tài)軟件,能夠快速構(gòu)造計(jì)算機(jī)監(jiān)控系統(tǒng),而且能夠通過對現(xiàn)場數(shù)據(jù)的采集處理,實(shí)現(xiàn)動(dòng)畫顯示、報(bào)警處理、流程控制、實(shí)時(shí)曲線、歷史曲線和報(bào)表輸出等。然而,組態(tài)軟件在實(shí)際應(yīng)用中也存在一些不足,那就是組態(tài)軟件為數(shù)據(jù)采集和控制提供的大量底層設(shè)備驅(qū)動(dòng)程序,主要是針對有名廠商的板卡和模塊,對于較小廠商開發(fā)的各種智能化儀表及用戶自己設(shè)計(jì)的板卡,卻沒有現(xiàn)成的驅(qū)動(dòng)程序提供。此外,組態(tài)軟件往往不支持對計(jì)算機(jī)底層設(shè)備如串口的直接操作,給用戶的使用帶來了諸多不便[2]。
針對以上問題,本文提出了一種組態(tài)軟件與VB混合編程的集成解決方案,由VB實(shí)現(xiàn)底層通用設(shè)備的部分功能,并通過軟件接口與組態(tài)軟件實(shí)現(xiàn)數(shù)據(jù)交換。該方案的技術(shù)特點(diǎn)是充分利用了組態(tài)軟件圖形功能完備、界面一致性好、易學(xué)易用的特點(diǎn)和VB語言簡潔、功能強(qiáng)大、開發(fā)效率高等諸多優(yōu)點(diǎn),比以往使用專用機(jī)開發(fā)的工業(yè)控制系統(tǒng)更具有通用性,在自動(dòng)化領(lǐng)域有著更廣泛的應(yīng)用。
目前,主流組態(tài)軟件都致力于提高本身的開放性,大量采用“標(biāo)準(zhǔn)化技術(shù)”,如DDE、OPC、ODBC、ActiveX控件、COM/DCOM等,使組態(tài)軟件演變成軟件平臺(tái),在軟件功能不能滿足用戶特殊需要時(shí),用戶可以根據(jù)自己的需要進(jìn)行二次開發(fā)[3]。
DDE(Dynamic Data Exchange,動(dòng)態(tài)數(shù)據(jù)交換)是開放的、與語言無關(guān)的、基于消息的協(xié)議,是在Windows系統(tǒng)下使用共享內(nèi)存在兩個(gè)應(yīng)用程序之間進(jìn)行數(shù)據(jù)交換的方式。采用DDE方式,可以利用計(jì)算機(jī)上的豐富資源來擴(kuò)充組態(tài)軟件的功能,使計(jì)算機(jī)上的多種應(yīng)用程序通過DDE的方式與組態(tài)軟件進(jìn)行數(shù)據(jù)交換。DDE通訊的雙方根據(jù)數(shù)據(jù)的流向可以分為客戶端和服務(wù)器端,服務(wù)器程序與客戶端程序之間的數(shù)據(jù)交換被稱為一個(gè)“會(huì)話”,其中客戶端程序初始化鏈接和發(fā)送請求,而服務(wù)器程序通過執(zhí)行自身的命令和發(fā)送數(shù)據(jù)來響應(yīng)客戶程序。DDE協(xié)議將控制通訊對象劃分為應(yīng)用程序名(Application)、主題名(Topic)和項(xiàng)目名(Item)。每次DDE會(huì)話由應(yīng)用程序名和主題名唯一確定??蛻舳顺绦蚩梢酝ㄟ^DDE協(xié)議與服務(wù)器程序的一個(gè)或多個(gè)項(xiàng)目建立鏈接[4]。
本機(jī)DDE地址由三部分構(gòu)成,其形式為:
應(yīng)用程序名|主題名!項(xiàng)名
網(wǎng)絡(luò)DDE地址同樣由三部分構(gòu)成,其形式為:
\計(jì)算機(jī)名NDDE$|DDE共享名.DDE!項(xiàng)名
OPC(OLE for Process Control,過程控制的OLE)是一個(gè)新興的通用工業(yè)應(yīng)用軟件標(biāo)準(zhǔn),大多組態(tài)軟件提供了標(biāo)準(zhǔn)的OPC接口,既可作為OPC客戶端,也可以作為OPC服務(wù)器,因而,可以方便地與其他具有OPC標(biāo)準(zhǔn)接口的工業(yè)應(yīng)用程序或外部控制設(shè)備連接,實(shí)現(xiàn)數(shù)據(jù)交互,完成對現(xiàn)場數(shù)據(jù)的處理維護(hù)和對設(shè)備的有效控制。
組態(tài)軟件把其核心作為對象封裝起來,把組態(tài)軟件的大多數(shù)功能作為對象的屬性和方法暴露出來,使其他程序可以通過OLE自動(dòng)化操作直接操作組態(tài)軟件的屬性和方法。
組態(tài)軟件支持標(biāo)準(zhǔn)的ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連)接口,用戶可以使用標(biāo)準(zhǔn)的ODBC接口將數(shù)據(jù)登錄到Oracle、Microsoft SQL Server、Microsoft Access、Sybase等數(shù)據(jù)庫中,方便地進(jìn)行歷史和實(shí)時(shí)數(shù)據(jù)的分析、處理和維護(hù)。
在某些組態(tài)軟件中可以插入標(biāo)準(zhǔn)的Windows ActiveX控件,用戶也可以根據(jù)需要開發(fā)自己的ActiveX控件或者選用其他廠商開發(fā)的ActiveX控件。這樣,大大豐富了組態(tài)軟件的控件工具箱,使系統(tǒng)組態(tài)時(shí)更加靈活和方便。
多數(shù)組態(tài)軟件的設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)方法和原理與標(biāo)準(zhǔn)VB的ActiveDLL完全一致,但組態(tài)軟件規(guī)定了一套接口規(guī)范,遵守這些接口規(guī)范,用戶可以開發(fā)自己的ActiveDLL用作組態(tài)軟件的設(shè)備驅(qū)動(dòng)構(gòu)件。用戶開發(fā)組態(tài)軟件設(shè)備驅(qū)動(dòng)的過程,實(shí)際上就是根據(jù)設(shè)備的特性和含義來完成方法功能的編程過程。
MCGS(Monitor and Control Generated System,通用監(jiān)控系統(tǒng))是一套用于快速構(gòu)造和生成計(jì)算機(jī)監(jiān)控系統(tǒng)的組態(tài)軟件,它能夠在基于Microsoft的各種32位Windows平臺(tái)上運(yùn)行,通過對現(xiàn)場數(shù)據(jù)的采集處理,以動(dòng)畫顯示、報(bào)警處理、流程控制和報(bào)表輸出等多種方式向用戶提供解決實(shí)際工程問題的方案,它充分利用了Windows圖形功能完備、界面一致性好、易學(xué)易用的特點(diǎn),比以往使用專用機(jī)開發(fā)的工業(yè)控制系統(tǒng)更具有通用性,在自動(dòng)化領(lǐng)域有著更廣泛的應(yīng)用。
由于語言簡潔、功能強(qiáng)大、開發(fā)效率高等諸多優(yōu)點(diǎn),VB作為一種通用的Windows環(huán)境開發(fā)環(huán)境,已經(jīng)被全球數(shù)以百萬計(jì)的程序員所接受。下面以VB和MCGS為例,對組態(tài)軟件二次開發(fā)進(jìn)行研究。
利用DDE技術(shù)實(shí)現(xiàn)VB與MCGS的數(shù)據(jù)交換,需要對通訊的雙方進(jìn)行必要的配置。例如:
圖1 “DDE連接管理”對話框
2.1.1 MCGS作為DDE服務(wù)器向VB傳送數(shù)據(jù)Output CurSet
在MCGS程序中,通過“工具”→“DDE連接管理”,在“DDE連接管理”對話框中,將OutputCurSet設(shè)置為DDE輸出。
MCGS程序的服務(wù)器名為MCGSRun,主題名為DataCentre,項(xiàng)目名為變量名。
在VB程序中,在窗體中添加DDE鏈接控件,如Label,設(shè)置該控件的LinkTopic屬性為MCGSRun|DataCentre,Link Item屬性為OutputCurSet,LinkMode屬性為1,Link Timeout屬性為合適值。
2.1.2 VB作為DDE服務(wù)器向MCGS傳送數(shù)據(jù)SysState
在VB程序中,將應(yīng)用程序名改為DDETestVB,在窗體中添加TextBox1作為DDE項(xiàng)目,設(shè)置窗體的LinkTopic屬性為Form1,LinkMode屬性為1。
在MCGS程序“DDE連接管理”對話框中,將SysState變量設(shè)置為DDE輸入,并為其建立服務(wù)器節(jié)點(diǎn)VB:服務(wù)名為DDETestVB,主題名為Form1,然后在“連接項(xiàng)目”輸入框中輸入TextBox1。
VB程序可以通過引用MCGS公開的OPC接口,以對象的形式直接引用MCGS的屬性和方法,下例為VB程序操作MCGS程序變量Data1和Data2的主要語句:
Private DataObj As Object
Set
DataObj=GetObject(,”McgsRun.DataCentre”)
Text1=Format$(DataObj.GetValueFromName(“Data1”))
DataObj.SetValueFromName
“Data2”,Val(Text2)
ODBC是一種分層結(jié)構(gòu),包括驅(qū)動(dòng)程序管理器和多個(gè)數(shù)據(jù)庫的ODBC驅(qū)動(dòng)程序.驅(qū)動(dòng)程序管理器根據(jù)應(yīng)用程序的指令,調(diào)用相應(yīng)的ODBC驅(qū)動(dòng)程序,把應(yīng)用程序的SQL語句或函數(shù)調(diào)用傳送到數(shù)據(jù)庫管理系統(tǒng),從而實(shí)現(xiàn)對數(shù)據(jù)庫的訪問和操作.ODBC的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫.一個(gè)完整的ODBC由下列部件組成:
(1)應(yīng)用程序(Application);
(2)ODBC管理器(Administrator):主要任務(wù)是管理安裝的ODBC驅(qū)動(dòng)程序和管理數(shù)據(jù)源;
(3)驅(qū)動(dòng)程序管理器(Driver Manager):驅(qū)動(dòng)程序管理器包含在ODBC32.DLL中,對用戶是透明的,其任務(wù)是管理ODBC驅(qū)動(dòng)程序,是ODBC中最重要的部件;
(4)ODBC API;
(5)ODBC驅(qū)動(dòng)程序:主要是一些DLL,提供ODBC和數(shù)據(jù)庫之間的接口;
(6)數(shù)據(jù)源:數(shù)據(jù)源包含了數(shù)據(jù)庫位置和數(shù)據(jù)庫類型等信息,實(shí)際上是一種數(shù)據(jù)連接的抽象。
VB和MCGS可用SQL語句訪問同一ODBC數(shù)據(jù)庫,從而實(shí)現(xiàn)VB與MCGS數(shù)據(jù)交換。
VB用戶可以創(chuàng)建自己的ActiveX控件和ActiveX DLL,具體方法見參考文獻(xiàn)2。MCGS可以將這些ActiveX控件和ActiveX DLL作為動(dòng)畫構(gòu)件和設(shè)備驅(qū)動(dòng)程序添加到項(xiàng)目中。其中,MCGS設(shè)備驅(qū)動(dòng)程序的開發(fā)必須遵循規(guī)定的接口規(guī)范,具體包括5個(gè)和8個(gè)方法:屬性DevType(標(biāo)識設(shè)備的類型)、屬性DevChannel(標(biāo)識設(shè)備的通道個(gè)數(shù))、屬性DevBaseIO(標(biāo)識設(shè)備所用IO的基地址)、屬性DevIONumber(標(biāo)識設(shè)備所用IO地址的個(gè)數(shù))、方法GetDevName(讀取設(shè)備構(gòu)件類型名稱)、方法GetDevHelp(調(diào)用設(shè)備構(gòu)件的在線幫助內(nèi)容)、方法SetDevPage(調(diào)用設(shè)備的內(nèi)部屬性頁)、方法(InitNewDev)初試化設(shè)備的初始值、方法GetChlType(讀取設(shè)備構(gòu)件各通道的數(shù)據(jù)類型和注釋)、方法InitDevRun(運(yùn)行時(shí)對設(shè)備進(jìn)行初始化工作)、方法RunDevCommand(執(zhí)行指定的設(shè)備命令)、方法CollectDevDat(定時(shí)操作設(shè)備,采集或輸出數(shù)據(jù))。
上述方法已經(jīng)在某大功率船用直流可編程電源的監(jiān)控程序中得到成功應(yīng)用。該監(jiān)控系統(tǒng)的結(jié)構(gòu)框圖如圖2所示。
在該項(xiàng)目中,VB程序作為后臺(tái)程序運(yùn)行,通過485接口與設(shè)備的DSP控制器進(jìn)行Modbus協(xié)議通訊,通過PCI板卡實(shí)現(xiàn)設(shè)備數(shù)據(jù)采集,并通過DDE、OPC和ODBC技術(shù)與MCGS程序通訊。MCGS程序作為系統(tǒng)的監(jiān)控主程序,通過與VB的通訊實(shí)現(xiàn)指令的下達(dá),并對VB程序通過Modbus通訊和采集卡獲得的參數(shù)、狀態(tài)、故障報(bào)警等數(shù)據(jù)進(jìn)行進(jìn)一步處理,并以友好的HMI呈現(xiàn)給用戶。圖3為MCGS程序主畫面。
圖3 MCGS監(jiān)控主畫面
本文提出了一種組態(tài)軟件與Windows高級編程語言混合編程的集成解決方案,充分利用了組態(tài)軟件和高級語言各自的優(yōu)點(diǎn),通過DDE、OPC、ODBC和ActiveX自動(dòng)化等軟件接口規(guī)范,可以方便地實(shí)現(xiàn)組態(tài)軟件與高級語言的集成。該方案突破了單純應(yīng)用工控組態(tài)軟件的不足,極大地?cái)U(kuò)展了其應(yīng)用范圍,為快速靈活的構(gòu)建監(jiān)控系統(tǒng)提供了解決方案,該方案和關(guān)鍵技術(shù)已經(jīng)在項(xiàng)目中得到成功應(yīng)用,其有效性和開發(fā)效率得到充分驗(yàn)證。
[1]Yong Xiao,Tie-jun Liu.Development of a new power quality monitoring terminal based on configuration[J].Electricity Distribution,2008.CICED 2008.International Conference.
[2]劉燕,夏建全等.基于VB實(shí)現(xiàn)的組態(tài)王與單片機(jī)間通信[J].自動(dòng)化與儀器儀表,2006(5).
[3]A SKravchenko,Yu V Vilkov.A power supply for simulting lightning current pulses[J].Instruments and Experimental Techniques,2006,49(4).
[4]施建強(qiáng).InTouch、VB和Matlab之間的DDE接口方法[J].南京工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2003,(3).
[5][美]Bob Reselman,Richard Peasley.何鍵輝,董方鵬,馮毅.實(shí)用Visual Basic 6教程[M].北京:清華大學(xué)出版社,2001.03.
[6]曹輝等.組態(tài)軟件技術(shù)及其應(yīng)用[M].北京:電子工業(yè)出版社,2009.01.
Research on monitoring&control scheme based on VB and the configuration software
Yang Dong sheng Zheng Wei Wu Hong
configuration software;VB;Remote Monitoring&Control;software interface
This paper researches on the integration means of the configuration software and VB,and puts forward to an industrial Remote Monitoring&Control System scheme.This novel scheme gets over the disadvantages of the configuration software and is validated in practice with the case of MCGS.
TP311.52
A
1001-9855(2011)01-0061-04
2010-08-31
楊東升(1979.09-),男,漢族,工程師,主要從事船舶電氣設(shè)計(jì)研究工作。