亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        組件開發(fā)架構(gòu)及在繼電保護(hù)配置軟件中的應(yīng)用

        2016-05-30 05:36:46賀敏陳宏君
        軟件工程 2016年1期
        關(guān)鍵詞:組件

        賀敏 陳宏君

        摘 要:傳統(tǒng)繼電保護(hù)裝置的功能主要由開發(fā)人員直接編寫程序,開發(fā)工作量大,維護(hù)成本高,需要提高開發(fā)效率,為此開發(fā)了基于組件化、圖形化配置軟件。本文介紹了該軟件的組件開發(fā)架構(gòu),架構(gòu)由主框架、組件庫、事件總線、主程序組成。主程序讀取組件配置文件,加載和創(chuàng)建相關(guān)組件對象,組件對應(yīng)的主窗體放置在主框架的界面容器內(nèi)。組件之間需要協(xié)同配合時,通過發(fā)送和響應(yīng)預(yù)定義的事件實(shí)現(xiàn)。在繼電保護(hù)配置軟件中應(yīng)用了該組件架構(gòu),降低了模塊間的耦合關(guān)系,提高了軟件可擴(kuò)展能力和開發(fā)集成效率。

        關(guān)鍵詞:組件;主框架;事件總線;繼電保護(hù)軟件

        中圖分類號:TP31 文獻(xiàn)標(biāo)識碼:A\

        1 引言(Introduction)

        在人機(jī)界面軟件的開發(fā)維護(hù)周期內(nèi),由于面向的領(lǐng)域較為復(fù)雜,軟件的復(fù)雜度和規(guī)模在不斷延伸,要求軟件系統(tǒng)具有較強(qiáng)的演化能力[1,2]。這一方面要求開發(fā)人員能快速適應(yīng)改變,減少軟件維護(hù)的代價,另一方面又需要一種通用的方法來實(shí)現(xiàn)滿足特定的需求,確保個性化的需求實(shí)現(xiàn)不影響已經(jīng)成熟穩(wěn)定的模塊[3-8]。人機(jī)界面軟件存在交互頻繁、基于鼠標(biāo)和鍵盤操作無規(guī)律觸發(fā)、運(yùn)行周期長等特點(diǎn),用組件模式開發(fā)時,面臨組件數(shù)據(jù)和界面管理、組件間交互配合等難點(diǎn)。本文設(shè)計了一種輕量級、組件開發(fā)集成架構(gòu),通過跨平臺庫開發(fā),面向不同權(quán)限的用戶,可配置加載不同組件,并在繼電保護(hù)裝置配置軟件中進(jìn)行了應(yīng)用。

        2 基于組件技術(shù)的軟件架構(gòu)(Software architecture

        based on component technology)

        2.1 組件概念與組件系統(tǒng)原理

        組件(Component)是一個黑盒子,是可獨(dú)立發(fā)布的二進(jìn)制單元。組件對外的接口主要是API功能和端口,其中API是組件對外提供的功能,端口表示組件內(nèi)部調(diào)用外部其他組件功能的函數(shù)。圖1是一種組件模型[1]:

        圖1 組件模型

        Fig.1 Component model

        嵌入式裝置是一個典型的組件系統(tǒng),例如繼電保護(hù)測控裝置由若干塊CPU/DSP/IO插件組成,不同的裝置將具有獨(dú)立功能的集成電路插件按照設(shè)計要求進(jìn)行組裝,通過總線進(jìn)行高速通信和有效協(xié)同工作[9]。類比于物理裝置,軟組件系統(tǒng)由總線、接口、組件共三部分組成。組件通過預(yù)先定制的接口連接到總線上,總線是一個總控程序(宿主程序),負(fù)責(zé)組件之間的通信和互操作;接口負(fù)責(zé)組件啟動、初始化、設(shè)置、注銷等功能;組件實(shí)際上是普通的程序,可由界面、數(shù)據(jù)、函數(shù)組成,可以完成某種功能,編譯為DLL。在對組件的接口定義了統(tǒng)一的規(guī)范后,系統(tǒng)投入運(yùn)行時,用戶可以根據(jù)自己的需要通過接口集成到系統(tǒng)中,也可卸載,而框架程序不用修改,如果總控程序正在運(yùn)行,修改某個組件時,不用停止運(yùn)行,通過這種技術(shù),增強(qiáng)了系統(tǒng)的靈活性和擴(kuò)展性,延長了軟件系統(tǒng)的生命周期。

        基于組件開發(fā)設(shè)計的重點(diǎn)包括:(1)實(shí)現(xiàn)對組件的管理,宿主程序可以搜索、加載、卸載組件和維護(hù)組件的狀態(tài)。將這些功能放到組件配置樹(組件容器)模塊實(shí)現(xiàn)。(2)接口的設(shè)計和識別,接口是不同組件之間、宿主程序與組件之間的通信基礎(chǔ)。宿主程序只有識別接口,才能加載組件。(3)資源的互斥和同步,多個組件的并行運(yùn)行可能對申請資源產(chǎn)生競爭。(4)組件的設(shè)計和生成,組件系統(tǒng)的功能由組件實(shí)現(xiàn),在設(shè)計時需考慮與組件相關(guān)的界面顯示、數(shù)據(jù)處理能夠高效進(jìn)行。

        2.2 組件接口設(shè)計

        本文采用導(dǎo)出函數(shù)作為組件提供服務(wù)的接口,通過函數(shù)指針方式實(shí)現(xiàn)對象的映射和接口的調(diào)用。定義組件基類Component,編譯形成comp.dll。組件有初始化、運(yùn)行、停止等接口,有請求服務(wù)的回調(diào)函數(shù),有發(fā)送組件狀態(tài)的信號,其UML模型如圖2所示。

        圖2 組件的UML模型

        Fig.2 Component UML model

        其C++主要接口定義如下:

        class COMP_DECLSPEC Component:

        public QObject {Q_OBJECT

        public:

        Component ();

        virtual~Component()=0;

        public://公共接口

        virtual bool init(void*)=0;

        virtual bool run()=0;

        virtual bool stop()=0;

        virtual void free()=0;

        signals://信號

        void sigStarted(bool);

        void sigFinished(int);

        void sigRequire (void*,int);

        public slots://回調(diào)函數(shù)

        virtual void respond(void*,int);

        protected:

        void* m_pdata;

        QString m_name;

        QString m_version;};

        Component只是定義純虛接口函數(shù),具體的實(shí)現(xiàn)由各派生的組件細(xì)化。各子組件、頂層組件均繼承自組件基類,繼承的組件均須實(shí)現(xiàn)統(tǒng)一的組件構(gòu)造接口:

        extern"C"Component*

        newComponent();

        通過類似如下的實(shí)現(xiàn)方式,返回動態(tài)類型不同的組件實(shí)例。例如定值整定組件創(chuàng)建接口實(shí)現(xiàn)為:

        Component*newComponent(){

        CSettingEditor*ptr=new

        CSettingEditor();

        return(Component*)ptr;}

        2.3 組件配置樹

        一個軟件系統(tǒng)的組件結(jié)構(gòu)關(guān)系可用組合配置樹(Composition and Configuration Tree,CCT)來描述[1]。形式化定義為一個三元組CCT=(N,E,R),其中:N表示樹節(jié)點(diǎn)的集合;R是節(jié)點(diǎn)間語義關(guān)系的集合,R有組合關(guān)系和配置關(guān)系。R={Rcomp,Rconf}。配置關(guān)系通過包括OR(或選)、AND(并選)、Switch(多選一)、Multiplex(多選多)等關(guān)系。Rconf={AND,OR,Switch,Multiplex};E是節(jié)點(diǎn)之間的邊的集合;E=Ecomp∪Econf,Ecomp表示組合關(guān)系邊,Econf表示配置關(guān)系邊。Econf=EAND∪EOR ∪ESwitch∪EMultiplex以繼電保護(hù)配置軟件的代碼生成子系統(tǒng)為例,其組合配置樹如圖3所示。

        圖3 組件配置樹示例

        Fig.3 Example of component configuration tree

        在圖3中,實(shí)線表示組合關(guān)系,虛線表示配置關(guān)系。Coder系統(tǒng)可由多個主要組件構(gòu)成,而其中部分組件也是由下層組件構(gòu)成。三角形表示多選一配置關(guān)系,coder組件根據(jù)不同的應(yīng)用領(lǐng)域,可選擇對應(yīng)交直流嵌入式保護(hù)裝置code組件、EMTDC仿真code組件。六邊形表示或選配置關(guān)系,CID的處理有直流裝置分布式的配置建模組件和交流裝置的集中式配置建模組件??捎肵ML文件描述該配置樹關(guān)系,基于組件配置樹實(shí)現(xiàn)軟件系統(tǒng)的更新、維護(hù),將修改的函數(shù)的影響盡量限定在某個組件的內(nèi)部。

        2.4 人機(jī)界面軟件的組件架構(gòu)

        本文設(shè)計的人機(jī)界面軟件集成架構(gòu)包括:主程序、主框架、組件庫、事件總線。

        主程序是main.cpp文件編譯后形成的可執(zhí)行程序,僅包括一個main入口函數(shù)。在main函數(shù)中讀取組件配置樹文件,調(diào)用組件構(gòu)造函數(shù),形成組件對象實(shí)例,將組件對應(yīng)的主窗體界面放入到主框架容器內(nèi)。main函數(shù)還調(diào)用事件總線構(gòu)造函數(shù),將組件接口對象指針放入事件總線散列管理。

        在main函數(shù)中創(chuàng)建主框架實(shí)例。主框架是一個通用的軟件集成窗體,繼承自QMainWindow,由菜單工具欄、左側(cè)資源管理器、中間界面容器、右側(cè)屬性編輯器、底部輸出欄五個區(qū)域構(gòu)成,支持各頂層組件創(chuàng)建主框架的子菜單、圖標(biāo)、停靠欄內(nèi)的標(biāo)簽窗體。在頂層主框架的界面容器內(nèi)管理各頂層組件的主窗體界面,每個組件在主窗體容器內(nèi)管理各自子界面。界面容器按照后入先出方式管理。主框架提供文件的新建、打開、關(guān)閉、保存操作入口,可顯示、隱藏停靠欄。

        圖4 人機(jī)界面軟件組件架構(gòu)

        Fig.4 Human machine interface software

        component architecture

        事件總線CEventBus是個全局對象類,各組件也可將事件發(fā)往循環(huán)處理隊列中,總線周期定時觸發(fā)后,將事件轉(zhuǎn)發(fā)給目標(biāo)組件。以保存文件為例,鼠標(biāo)點(diǎn)擊工具欄的保存按鈕,工程管理組件響應(yīng)該命令,調(diào)用發(fā)送接口,向所有組件群發(fā)保存:

        CEvent*pevent=new CEvent

        (getName(),"SaveData");

        CEventBus::instance()->send("all",pevent);

        delete pevent;

        圖5 事件發(fā)送機(jī)制

        Fig.5 Event sending mechanism

        如圖5所示,事件總線串行發(fā)送,各組件接收到該命令后,依次進(jìn)入活動狀態(tài),保存對應(yīng)的數(shù)據(jù)。

        3 繼電保護(hù)配置軟件設(shè)計(Design of relay protection

        configuration software)

        隨著IEC 61850智能變電站應(yīng)用的深入,要求繼電保護(hù)裝置具備更靈活的可配置能力,基于手工編寫代碼和配置文件的開發(fā)方式,已經(jīng)很難適應(yīng)快速集成的需求[10]。面向海外用戶需要較強(qiáng)的可配置功能,例如根據(jù)現(xiàn)場應(yīng)用增加減少開入開出插件、保護(hù)測控功能投入退出等,這都需要通過工具軟件進(jìn)行人機(jī)界面交互。

        3.1 軟件功能設(shè)計

        繼電保護(hù)配置軟件是基于組件集成框架開發(fā)的,其輸入為各類符號庫,通過圖形編輯實(shí)例化符號,并對符號進(jìn)行編輯設(shè)置和連接輸入輸出關(guān)系,通過各個實(shí)例化的符號頁面,生成變量庫,變量庫作為整個系統(tǒng)的數(shù)據(jù)中心,為各個應(yīng)用服務(wù)配置提供數(shù)據(jù)源,對各類服務(wù)所需要的變量進(jìn)行配置歸類。各個應(yīng)用服務(wù)的配置可以相對獨(dú)立的加載和卸載,可以方便的擴(kuò)充應(yīng)用配置功能。主要功能如下:(1)裝置硬件配置,從插件庫中選擇相關(guān)型號插件搭建裝置,形成可編程的插件節(jié)點(diǎn)。(2)裝置程序功能模塊化配置,將繼電保護(hù)程序進(jìn)行模塊化設(shè)計,形成可復(fù)用的元件符號庫,在圖形化頁面中創(chuàng)建元件實(shí)例和進(jìn)行數(shù)據(jù)連線,以可視化模塊化的方式完成嵌入式裝置程序組態(tài)。(3)裝置HMI配置,從變量庫中挑選信號,進(jìn)行LCD層次菜單分組,包括模擬量分組、開關(guān)量分組、錄波分組等功能。(4)裝置定值分組和整定,包括定值的導(dǎo)入、導(dǎo)出、比較等功能。(5)裝置系統(tǒng)選型配置,包括裝置MOT選型、系統(tǒng)功能選擇、保護(hù)測控功能模塊投退。(6)在線調(diào)試功能。

        3.2 軟件組件劃分

        繼電保護(hù)配置軟件基于C++/Qt跨平臺庫開發(fā),按照功能可劃分為:工程管理、離線配置、圖形編輯、數(shù)據(jù)處理、在線調(diào)試五個部分,共分18個頂層組件:

        (1)工程管理層:用資源管理(工作空間)組件展示,用工程數(shù)據(jù)管理組件維護(hù)數(shù)據(jù)響應(yīng)操作。(2)離線配置層:包括基本信息配置、LCD層次菜單配置、錄波等引用表配置、IEC61850配置瀏覽、LCD主畫面編輯、集中式瀏覽、定值整定、系統(tǒng)功能配置共八個組件。(3)圖形編輯層:包括可視化頁面圖形編輯器、符號庫制作、符號庫三個組件。其中圖形編輯器可細(xì)分多種場景的子組件。(4)產(chǎn)物處理層:包括變量庫、后端產(chǎn)物形成組件、驅(qū)動包處理(壓縮、比較、升級)組件。(5)在線調(diào)試,包括可視化調(diào)試、Inspect瞬時錄波等功能。

        組件分層關(guān)系如圖6所示。

        圖6 配置軟件結(jié)構(gòu)劃分圖

        Fig.6 Configuration software structure partition graph

        以資源管理器為例,表1給出該組件的輸入、輸出、組件間交互設(shè)計要點(diǎn)。

        表1 資源管理器組件

        Tab.1 Explorer component

        內(nèi)容 描述

        組件名 GuiExplorer.dll

        功能概述 在左邊??繖陲@示繪制工程及子節(jié)點(diǎn);支持鼠標(biāo)操作

        輸入 裝置工程文件

        輸出 樹形列表

        交互 頂級節(jié)點(diǎn)繪制由工程數(shù)據(jù)管理組件創(chuàng)建;子節(jié)點(diǎn)由對應(yīng)組件創(chuàng)建;鼠標(biāo)操作時,在樹形列表的響應(yīng)函數(shù)中發(fā)送事件給總線,然后轉(zhuǎn)發(fā)給所屬的組件處理

        例如:打開工程時只繪制裝置節(jié)點(diǎn),點(diǎn)擊裝置節(jié)點(diǎn)時,發(fā)送事件給工程管理組件,繪制裝置子節(jié)點(diǎn)、加載顯示變量庫。

        3.3 應(yīng)用場景

        基于組件化的軟件架構(gòu),可根據(jù)不同用戶角色(研發(fā)人員、工程人員、終端用戶),定制發(fā)布不同的組件庫。圖7是面向研發(fā)人員的編輯場景,研發(fā)人員基于公共元件庫,搭建圖形化頁面程序,之后在離線配置相關(guān)組件內(nèi)完成HMI等人機(jī)接口配置。

        圖7 配置軟件應(yīng)用場景

        Fig.7 Configuration software application scenarios

        4 結(jié)論(Conclusion)

        本文介紹了一種人機(jī)界面軟件的組件化框架,定義了組件的公共接口模型;設(shè)計了基于事件總線的交互方法?;诒疚奶岢龅慕M件開發(fā)架構(gòu)在繼電保護(hù)配置軟件中進(jìn)行了應(yīng)用,該軟件通過組件分層設(shè)計,將組件的交互協(xié)議和組件的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)分開,并支持部分升級,提高了軟件開發(fā)集成效率。

        參考文獻(xiàn)(References)

        [1] 陶傳奇,等.基于模型的構(gòu)件軟件修改影響分析[J].軟件學(xué)報,

        2013,24(5):942-960.

        [2] 郁湧,劉永剛,侯江畔.一種基于構(gòu)件的可信軟件系統(tǒng)框架及

        其表示[J].軟件工程師,2015,18(5):60-62.

        [3] 譚海中.基于Java的Web通用DataTable組件設(shè)計[J].軟件工程

        師,2015,18(7):22-23.

        [4] 袁偉民,左春.基于樣本程序的領(lǐng)域開發(fā)平臺的研究與實(shí)踐

        [J].計算機(jī)工程設(shè)計,2010,31(18):3979-3982.

        [5] 張弛.軟件組件接口擴(kuò)展技術(shù)研究[J].微電子學(xué)與計算機(jī),

        2007,24(8):35-41.

        [6] 何鵬飛,等.組件技術(shù)在嵌入式系統(tǒng)中的應(yīng)用[J].計算機(jī)系統(tǒng)

        應(yīng)用,2014,23(6):220-223.

        [7] 丁博,王懷民,史殿習(xí).構(gòu)造具備自適應(yīng)能力的軟件[J].軟件學(xué)

        報,2013,9(24):1981-2000.

        [8] 陳宏君,等.一種基于組件和腳本的可視化程序產(chǎn)物形成架

        構(gòu)及應(yīng)用[J].工業(yè)控制計算機(jī),2013,26(12):1-5.

        [9] 李響,等.新一代控制保護(hù)系統(tǒng)通用硬件平臺設(shè)計與應(yīng)用

        [J].電力系統(tǒng)自動化,2012,36(14):52-55.

        [10] 陳宏君,等.新一代保護(hù)測控裝置配套工具軟件設(shè)計與應(yīng)用

        [J].電力系統(tǒng)自動化,2013,37(20):92-96.

        作者簡介:

        賀 敏(1972-),女,碩士,高級工程師.研究領(lǐng)域:電力系統(tǒng)

        及其自動化軟件研發(fā),新能源發(fā)電及控制.

        陳宏君(1981-),男,碩士,高級工程師.研究領(lǐng)域:電力系統(tǒng)

        及其自動化軟件研發(fā).

        猜你喜歡
        組件
        無人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
        能源工程(2022年2期)2022-05-23 13:51:50
        一種嵌入式軟件組件更新方法的研究與實(shí)現(xiàn)
        新型碎邊剪刀盤組件
        U盾外殼組件注塑模具設(shè)計
        跨平臺APEX接口組件的設(shè)計與實(shí)現(xiàn)
        T/R組件移相置位時間測試方法及實(shí)現(xiàn)
        電子測試(2018年11期)2018-06-26 05:55:48
        橋梁組件搭配分析
        中國公路(2017年16期)2017-10-14 01:04:56
        風(fēng)起新一代光伏組件膜層:SSG納米自清潔膜層
        太陽能(2015年11期)2015-04-10 12:53:04
        AGV在組件生產(chǎn)線中的應(yīng)用方式
        太陽能(2015年6期)2015-02-28 17:09:21
        16%——Manz再度刷新CIGS光伏組件轉(zhuǎn)換效率世界紀(jì)錄
        太陽能(2015年5期)2015-02-28 17:08:47
        久久影院最新国产精品| 亚洲综合网在线观看首页| 青青草视频华人绿色在线| 白嫩少妇在线喷水18禁| 国产在线无码一区二区三区视频| 激情综合色综合啪啪五月丁香| 91精品国产综合成人| 开心五月婷婷综合网站| 风韵人妻丰满熟妇老熟女视频| 99久久人妻无码精品系列| 国产av影片麻豆精品传媒| 亚洲亚洲亚洲亚洲亚洲天堂| 中文字幕人妻久久久中出| 亚洲精品久久久av无码专区| 在线播放国产一区二区三区| 亚洲精品综合在线影院| 日本人妻精品有码字幕| 欧美性xxxx极品高清| 国产精品亚洲欧美云霸高清| 亚洲av影片一区二区三区| 久久一道精品一区三区| 日本久久高清一区二区三区毛片| 国产成人精品三级麻豆| av男人的天堂手机免费网站| 欧美牲交a欧美牲交| 无码人妻丰满熟妇区五十路百度| 久久天堂av色综合| 蓝蓝的天空,白白的云| 日本大肚子孕妇交xxx| 国产一在线精品一区在线观看| 素人系列免费在线观看| 美利坚日韩av手机在线| 国产成人精品一区二区不卡| 一区五码在线| av中文字幕在线直播| 无遮挡18禁啪啪羞羞漫画| 狠干狠爱无码区| 国产精品av网站在线| 日本熟妇人妻xxxx| 又污又黄又无遮挡的网站| 亚洲福利第一页在线观看|