SCADA系統簡介
城市照明監控系統是一種SCADA(Supervisory Control and Data Acquisition)系統,即監視控制與數據采集系統,是以計算機為基礎的監測控制與調度管理自動化系統,能實現遠程數據采集、故障診斷,設備控制、測量、參數調節以及信號報警等各項功能。
SCADA系統自誕生之日起就與計算機技術的發展緊密相關,至今已發展了三代。
第一代是基于計算機和專用操作系統的SCADA系統,70年代~80年代初主要采用第一代SCADA系統。
第二代是基于通用計算機的SCADA系統,廣泛采用VAX小型計算機以及其它通用工作站,操作系統一般是采用通用UNIX操作系統。
第三代SCADA系統開始采用PC機和網絡技術,同時系統逐步從集中式結構轉向客戶機/服務器結構。
第四代S CA DA系統的雛形已經出現,它以智能化、網絡化為標志。主要特征是采用因特網技術、面向對象技術、模糊控制及數據挖掘等技術,實現了SCADA系統與其它信息系統的增值集成,實現控制和管理過程的現代化和自動化。
SCADA系統一般采用分散式測控、集中式管理的方式,整個系統由監控中心、若干個分散的遠程測控終端RTU(Remote Terminal Unit)和通信介質三部分組成。監控中心又稱主站,是SCADA系統的核心,負責控制管理整個系統的運行。本文針對監控中心實時監控軟件的開發方法進行論述。
幾種軟件開發方法在項目中的應用
照明監控領域的軟件開發從九十年代初期至今尚未完全擺脫手工藝的開發方式,很大程度上還依靠單兵作戰。由于應用的城市多,用戶水平有高有低,在軟件版本上也是種類繁多,完全沒有適應軟件工程的開發需要。
隨著客戶需求的越來越多、越來越高,造成現有的軟件開發難度越來越大,特別是軟件版本的統一問題、軟件編程的重復性勞動問題、軟件開發團隊的協調工作問題等等,在許多方面都無法適應現有的需求和形式。
增量開發
由于增量模型特別適用于需求經常變化的軟件開發,以及市場急需而開發人員和資金不能在設定的市場期限前實現一個完善的軟件。這種情況在軟件開發中經常發生。其原則:盡量采用軟件重用技術、算法的時/空開銷方面可以讓步、充分展示軟件的可見部分等,也經常在現有團隊已有的軟件開發方法中有一定的應用。
然而,由于從事的軟件屬于實時監控軟件,在可靠性、穩定性、健壯性、運行效率和可維護性上要求又較高,而增量模型的一些固有缺點,如缺少項目標準,有點像編碼修正;缺少控制,由于用戶可能不斷提出新要求,因而迭代的周期很難控制;運行效率可能會受影響等等。這些缺點使得這種開發模型并不適用于團隊現有的軟件開發模式。
面向對象開發
面向對象方法模擬人類思維習慣,即問題域與求解域在結構上一致,以數據或信息為主線,把數據和處理結合構成統一體:對象。使得程序不再是一系列工作在數據上的函數集合,是相互協作又彼此獨立的對象集合。
很明顯,面向對象的開發方法能夠有效地利用自身具有的多種屬性,如繼承、多態、封裝以及消息機制,最大程度地減少了系統的重復性工作、提高了系統可維護性和可讀性。
面向對象開發方法優點很多,但由于現有人員還不具備相關知識能力,原有系統如果推翻重來,涉及到的用戶以及軟件較多,故只能作為下一步努力的方向。
基于構件的開發模型
基于構件的軟件開發方法通過軟件復用,利用預先包裝好的軟件構件來構造應用系統,從而減少重復工作量、減少軟件現場工作量。通過可復用的軟組件(稱為構件),復用這些軟構件,組裝應用系統,從而降低軟件開發和維護費用,提高軟件生產率,同時也提高軟件質量。
基于構件的開發從客戶處導出需求,選擇合適的體系結構風格來滿足待建造系統的目標,然后選擇潛在的可復用構件,認證這些構件以確信它們能夠合適地符合系統的體系結構,為了更好地集成,對構件進行適應性修改,集成構件以形成子系統和完整的應用。此外,對系統中不能被現存構件實現的那些方面,還需開發定制的構件。
通過以上一些步驟, 實現軟件開發。可見,如何選擇合適的部分構造構件、構件編制工作由誰來完成、如何測試等等,都是很重要的環節。而恰恰在這幾個重要環節上,對于現有團隊而言,正是缺少相應支持的環節,如在整體上能夠把握系統關鍵環節的團隊、軟件的質量監督與管理等等。所以,基于構件的開發模型對于現有軟件開發團隊(軟件編程人員6~8人,4人為具有實踐經驗的編程人員,2~4人為尚無實踐經驗的新進人員),同樣需要通過人員調整、制定合適的嚴格的軟件質量監督機制,才能逐步實現。適合于團隊現有軟件開發機制的構想這種機制不完全是以上任何一種,而更多地像多種軟件開發方法的綜合體。
首先,追溯以前的軟件開發工作,通過結構化思想、采用構件開發模型,完成現有構件庫,并逐步應用到已有系統中。對于一些較難的構件構造與測試,應有多人共同參加。
第二,構件的開發由實踐經驗豐富的編程人員實施,每一個構件應具有面向對象的一些屬性,如封裝特性、接口與信息等。
第三,構件的組裝由多人協同參與,組裝的目的主要是逐步替代現已應用的軟件系統,完成軟件系統的逐步歸一化。
第四, 對于用戶經常提出的新需求,盡量不在現場完成,而是在了解需求、上報構件庫后再視情況完成。若情況緊急,可先在軟件現場的可視部分與基本部分完成基礎功能,如界面交互上、基本運行條件上等,而詳細的最終解決方案還是應由構件組成員結合現有構件情況后制定。
VB中構件的開發與應用
由于現有團隊的編程語言基本使用VB6.0,而VB中最關鍵的就是對控件的應用。除了使用開發系統自帶的控件以外,還可以自己開發控件,作為構件庫的一部分,向軟件系統集成提供支持。對于控件的選用與開發,必須注意以下幾點:
第一,要考慮控件的實際功能。功能強、接口多的控件可以增強應用軟件的質量,也可減少編程工作量,當然,這要結合應用需求來定,并不是功能越多越好。提供的功能多了,控件本身就很大,占好幾兆空間,增加了程序的冗余代碼。另外,一些功能閑置、靈活性太強也可能導致最終用戶不易掌握使用。
第二,控件的穩定性要強。作為應用程序的基石,不應選用那些控件本身容易出錯,補丁太多的版本。
第三,控件的易用性要高。選用那些屬性配置合理,事件觸發機制明晰流暢,易于設計和使用,項目組中的程序員都容易接受掌握的控件。
如同樣是網格控件,Grid和DBGrid就有許多不同。Grid只是提供了一個預覽的功能,便于數據的修改,在需要對數據庫進行大量數據的操作時,為了減少對數據庫的直接操作,提高數據庫的安全性,使用Grid控件,非常方便。Grid是VB在早期版本中就帶有的控件,但現在與其它控件比較起來功能有些不足。
DBGrid控件是專用來操作數據庫的網格控件,可以綁定到Data控件,幾乎不用寫代碼就可方便地對數據進行顯示,增加、刪除或修改記錄,DBGrid具有OnAddNew、BeforeDelete等事件,可在增加新記錄或刪除修改時對數據進行有效性檢驗,來實現事務處理功能。DBGrid也可以在設計時編輯網格格式,指定顯示字段等,增強了顯示和操作數據的能力。
綜上所述,在軟件工程實際運行過程中,應該通過軟件工程知識,靈活應用各種方法與開發模型,制定適合自己開發團隊的有效方法,只要緊密圍繞可維護性、健壯性、可靠性、高效性等方面,就可逐步適應軟件工程的發展需要。
(本文作者盧強系中國電子科技集團公司第五十研究所工程師,蔣琦系中國電子科技集團公司第五十研究所高級工程師)