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