摘要:該文主要探討了監(jiān)控組態(tài)軟件設(shè)計與開發(fā)中六大關(guān)鍵技術(shù),具有一定的實踐意義。
關(guān)鍵詞:監(jiān)控組態(tài)軟件;關(guān)鍵技術(shù)
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)14-3706-02
Configuration Software to Monitor the Research of Key Technologies
FANG Lin
(Tianhe college of Guangdong polytechnical normal university,Guangzhou 510540,China)
Abstract: This paper mainly discusses the design and configuration software to monitor the development of six key technologies, with a certain degree of practical significance.
Key words: Monitor configuration software; Key technologies
1 引言
監(jiān)控組態(tài)軟件設(shè)計與開發(fā)是一項十分復(fù)雜的工程任務(wù),涉及到面向?qū)ο蠹夹g(shù)、圖形技術(shù)、數(shù)據(jù)庫訪問技術(shù)、網(wǎng)絡(luò)通信技術(shù)、組件技術(shù)、多線程技術(shù)等相關(guān)理論與技術(shù)。
2 面向?qū)ο蠹夹g(shù)
當(dāng)前,許多設(shè)計監(jiān)控組態(tài)軟件的開發(fā)者采用了面向?qū)ο缶幊?Object Oriented Programming)技術(shù),通過對監(jiān)控組態(tài)軟件的各功能模塊的分析、抽象,提煉出具體的操作行為及屬性,構(gòu)建出基本類庫,當(dāng)需要時,可以從基本類庫中派生出新類并實例化,從而可以方便地在通用的開發(fā)平臺上建立有自己獨特功能的監(jiān)控組態(tài)軟件。這種導(dǎo)出式的開發(fā)方式具有較高的軟件重用性,避免了軟件模塊的重復(fù)開發(fā),是一種比較成熟的方法。
面向?qū)ο蟮某绦蛟O(shè)計的本質(zhì)是把數(shù)據(jù)和處理數(shù)據(jù)的過程當(dāng)成一個整體,即對象。面向?qū)ο蟪绦蛟O(shè)計的實現(xiàn)需要封裝和數(shù)據(jù)隱藏技術(shù),需要繼承和多態(tài)技術(shù)。所謂封裝和數(shù)據(jù)隱藏指的是控制對象數(shù)據(jù)訪問的特定規(guī)則。將數(shù)據(jù)和操作這些數(shù)據(jù)的代碼包裝成一個對象,而將數(shù)據(jù)和操作細(xì)節(jié)隱藏起來,這一過程叫做封裝。封裝的基本思想是:如果增加某些限制,使得對數(shù)據(jù)的訪問可按照統(tǒng)一的方式進(jìn)行,那就比較容易產(chǎn)生更為強壯的代碼。繼承機(jī)制指建立子類或派生類的能力,使面向?qū)ο筌浖苋菀走m應(yīng)不同的應(yīng)用而不用修改其原始設(shè)計。在重用原始設(shè)計的同時,增加新的功能或遺棄不必要的功能。多態(tài)性通過繼承的方法構(gòu)造類,采用多態(tài)性為每個類指定表現(xiàn)行為。繼承性和多態(tài)性的組合,可以輕易地生成一系列雖類似但獨一無一的對象。由于繼承性,這些對象共享許多相似的特征。但由于多態(tài)性,一個對象可以有獨特的表現(xiàn)方式,而對另一個對象有另一種表現(xiàn)形式。
3 圖形技術(shù)
監(jiān)控系統(tǒng)需要在遠(yuǎn)離現(xiàn)場的控制室對系統(tǒng)的各狀態(tài)進(jìn)行監(jiān)控,逼真地反映現(xiàn)場的真實運行狀態(tài)和設(shè)備的運行狀態(tài),這就要求監(jiān)控組態(tài)軟件具有良好的圖形監(jiān)控畫面,豐富強大的圖形組態(tài)功能,從而能夠達(dá)到再現(xiàn)現(xiàn)場實況,為管理人員提供簡單方便的操作的效果。監(jiān)控組態(tài)軟件具有友好的人機(jī)界面和強大的組態(tài)能力,其人機(jī)界面不再是單一的文字,而是文字和圖形的綜合處理,除了具有菜單式的操作方法外,一般都采用圖形化、儀表化的操作界面,提供趨勢圖、報警等常用過程控制中的監(jiān)控乎段。充分利用圖形技術(shù),可將界面設(shè)計的非常友好,方便操作人員使用。
4 數(shù)據(jù)庫訪問技術(shù)
監(jiān)控系統(tǒng)的處理過程其實就是數(shù)據(jù)采集、數(shù)據(jù)傳遞和數(shù)據(jù)處理的過程,其中對于數(shù)據(jù)的處理難免要用到數(shù)據(jù)庫。監(jiān)控系統(tǒng)由于其應(yīng)用場合的特殊性,它的數(shù)據(jù)處理與一般的商業(yè)軟件有著明顯的區(qū)別,前者需要處理最多的是實時更新現(xiàn)場數(shù)據(jù),即處理一些實時的不斷變化的數(shù)據(jù),數(shù)據(jù)與時間因素緊密相關(guān);而后者這種實時的因素相對較弱,主要是處理一些靜態(tài)的數(shù)據(jù)。在監(jiān)控系統(tǒng)中涉及到兩種數(shù)據(jù)庫:實時數(shù)據(jù)庫和歷史數(shù)據(jù)庫。
數(shù)據(jù)庫是組態(tài)軟件的重要組成部分,其它組件模塊經(jīng)常要對數(shù)據(jù)庫進(jìn)行讀寫、創(chuàng)建、刪除等操作。比如歷史控件需要查詢、讀取歷史數(shù)據(jù),硬件I/O模塊需要將從外圍設(shè)備中取得的數(shù)據(jù)定時寫入數(shù)據(jù)庫中等。因此數(shù)據(jù)庫訪問技術(shù)是組態(tài)軟件開發(fā)中經(jīng)常要設(shè)計的一項技術(shù)之一。微軟提供了一個通用解決方案——OLE DB,它是一組COM(Component Object Model,組件對象模型)接口的集合,提供了統(tǒng)一的方法以訪問存儲在不同信息源中的數(shù)據(jù)。但是,由于OLEDB API是為了給盡可能多的不同應(yīng)用提供最佳功能而設(shè)計的,因此不符合使用簡便這一要求。所以,我們需要一個介于OLE DB和實際應(yīng)用之間的橋梁,而ADO正是這座橋梁。
ADO是為Microsoft最新和最強大的數(shù)據(jù)訪問接口OLE DB而設(shè)計的,是一個便于使用的應(yīng)用程序?qū)?。OLE DB為任何數(shù)據(jù)源都提供了高性能的訪問,這些數(shù)據(jù)源包括關(guān)系和非關(guān)系數(shù)據(jù)庫、電了郵件、文件系統(tǒng)、文本和圖形以及自定義業(yè)務(wù)對象等。ADO在關(guān)鍵的Internet方案中使用最少的網(wǎng)絡(luò)流量,并且在前端和數(shù)據(jù)源之間使用最少的層數(shù),所有這些都是為了提供高性能的接口。同時ADO使用了與DAO相似的約定和特性,使得它更易于學(xué)習(xí)。
5 網(wǎng)絡(luò)通信技術(shù)
網(wǎng)絡(luò)程序的實現(xiàn)可以有多種方式,Windows Socket就是其中一種比較簡單的實現(xiàn)方法。Socket是連接應(yīng)用程序與網(wǎng)絡(luò)驅(qū)動程序的橋梁,Socket在應(yīng)用程序中創(chuàng)建,通過綁定操作與驅(qū)動程序建立關(guān)系。此后,應(yīng)用程序送給Socket的數(shù)據(jù),由Socket交給驅(qū)動程序向網(wǎng)絡(luò)上發(fā)送出去。計算機(jī)從網(wǎng)絡(luò)上收到與該Socket綁定的IP地址和端口號相關(guān)的數(shù)據(jù)后,由驅(qū)動程序交給Socket,應(yīng)用程序便可以從該Socket中提取接收到的數(shù)據(jù)。網(wǎng)絡(luò)應(yīng)用程序就是這樣通過Socket進(jìn)行數(shù)據(jù)的發(fā)送和接收的。
在TCP/IP網(wǎng)絡(luò)應(yīng)用中,通信的兩個進(jìn)程間相互作用的主要模式是客戶機(jī)/服務(wù)器模式(client/server),即客戶向服務(wù)器提出請求,服務(wù)器接收到請求后,提供響應(yīng)的服務(wù)。監(jiān)控組態(tài)軟件在建立客戶機(jī)/服務(wù)器模式時主要基于以下兩點:首先,建立網(wǎng)絡(luò)的起因是網(wǎng)絡(luò)中軟硬件資源、運算能力和信息不均等,需要共享,從而造就擁有眾多資源的主機(jī)提供服務(wù),資源較少的客戶請求服務(wù)這一非對等作用。其次,網(wǎng)間進(jìn)程通信完全是異步的,相互通信的進(jìn)程間既不存在父子關(guān)系,又不共享內(nèi)存緩沖區(qū)。
6 組件技術(shù)
組件是一種可重復(fù)調(diào)用的軟件塊,它把維護(hù)及操作某一類信息的程序集中在一起獨立成塊。應(yīng)用系統(tǒng)通過預(yù)先定義好的界面來調(diào)用執(zhí)行組件。組件可以簡單如一個類,也可以復(fù)雜如完整的應(yīng)用服務(wù)處理。組件與調(diào)用它的應(yīng)用環(huán)境一起構(gòu)成容器系統(tǒng),它提供了一種執(zhí)行服務(wù)器組件的運行環(huán)境。常用的組態(tài)軟件控件為ActiveX控件。
ActiveX是Microsoft的一個術(shù)語,是基于組件對象模型(COM - Component Object Model)的一種技術(shù),是一組包括控件、Dll和ActiveX文檔的組件,它通常是以動態(tài)鏈接庫的形式存在,因此必須在一個叫容器的獨立執(zhí)行軟件中運行。ActiveX技術(shù)的核心是ActiveX控件。事實上,ActiveX控件是OLE控件的一個新的稱呼。以前所創(chuàng)建的OLE控件自然而然地成為ActiveX控件,并且可以在ActiveX應(yīng)用程序中使用。原有的OLE控件的最大問題是過于笨重。這主要因為它們面向桌面應(yīng)用,實現(xiàn)了完整的 OLE控件標(biāo)準(zhǔn)接口集。而ActiveX控件,主要是在Internet環(huán)境下應(yīng)用,所以必須做到盡可能的小。ActiveX控件的一個特點是能夠自動下載。支持ActiveX控件的瀏覽器如果發(fā)現(xiàn)正在瀏覽的頁面中用到某個ActiveX控件是它所沒有的,便會自動從服務(wù)器端下載ActiveX控件并安裝它。ActiveX控件的數(shù)據(jù)輸入和函數(shù)功能的執(zhí)行都必須通過容器,因此ActiveX控件和容器都必須支持一些特定的接口協(xié)議。
目前使用的大多數(shù)監(jiān)控組態(tài)軟件都提供了使用ActiveX控件的能力。程序員可以利用自己熟悉的開發(fā)語言來開發(fā)ActiveX控件,任何能通過編程來完成的任務(wù)都可寫成一個或多個ActiveX控件。用戶不僅可以自己創(chuàng)建ActiveX控件,也可以直接使用第三方程序開發(fā)者提供的ActiveX控件例如微軟的MSCOMM控件,用戶利用它可以輕松完成利用串口通訊的程序;又如Tide Stone公司的Formulate0ne控件可以完成各種較為復(fù)雜的報表。控件的使用大大增強了組態(tài)軟件的靈活性。
7 多線程技術(shù)
多線程技術(shù)也是組態(tài)軟件中普遍使用的技術(shù)之一。為了實現(xiàn)程序的實時性、并發(fā)性,防止因為單個線程而阻塞整個程序運行,畫面線程和操作線程往往需要分開。另外,為了提高CPU執(zhí)行效率,也常常使用多線程技術(shù),比如監(jiān)控組態(tài)軟件中的硬件讀寫模塊為每一個I/O設(shè)備開辟一個線程,以加快程序執(zhí)行速度以及網(wǎng)絡(luò)通信過程中為每個客戶端請求開辟一個響應(yīng)線程。雖然線程確實非常有用,但使用線程時可能產(chǎn)生新的問題。比如線程間的通信和同步問題,這也是我們在使用多線程時最需要注意的問題。線程需要在下面兩種情況下互相進(jìn)行通信:
第一,當(dāng)有多個線程訪問共享資源而不使用資源被破壞時。
第二,當(dāng)一個線程需要將某個任務(wù)已經(jīng)完成的情況通知另外一個或多個線程時。
Windows提供了許多方法,可以非常容易地實現(xiàn)線程的同步。這些方法包括:臨界區(qū)、信號量、互斥體、事件對象等。
參考文獻(xiàn):
[1] 王亞民,陳青,劉暢生,等.組態(tài)軟件設(shè)計與開發(fā)[M].陜西:西安電子科技大學(xué)出版社,2003.
[2] 馬國華.監(jiān)控組態(tài)軟件及其應(yīng)用[M].北京:清華大學(xué)出版社,2001.
[3] 王海瑞.ActiveX技術(shù)在組態(tài)軟件中的應(yīng)用研究[J].計算機(jī)測量與控制,2002(6).