<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于VxWorks的飛機配電自動化主執(zhí)行軟件研究

          基于VxWorks的飛機配電自動化主執(zhí)行軟件研究

          ——
          作者:秦龍勇 彭衛(wèi)東 謝拴勤 時間:2005-10-19 來源:電子產品世界 收藏

            先進飛機正朝著多電、全電方向發(fā)展,供電系統(tǒng)成為了未來飛機發(fā)展的關鍵。按照功能飛機供電系統(tǒng)分為電源系統(tǒng)和配電系統(tǒng)兩大部分。先進配電系統(tǒng)由電源系統(tǒng)處理機(PSP)、電氣負載管理中心(ELMC)、固態(tài)功率控制器(SSPC)和遠程終端(RT)組成,實現(xiàn)飛機配電的智能化,其中電源系統(tǒng)處理機是配電系統(tǒng)的核心。

            目前我國飛機電源系統(tǒng)仍采用的是集中配電方式。隨著航空技術的迅速發(fā)展,飛機性能有了大幅度提高,用電設備迅速增加,電源功率不斷提高,這種配電方式已經(jīng)不適應,而且嚴重影響了飛機整體性能的提高。

            國外一些技術發(fā)達的國家,如美國、英國、法國等在航空航天領域已普遍使用了分布式配電和負載自動管理技術。美國最近裝備部隊的F-22先進飛機就采用了可編程的固態(tài)開關、1553B總線、微處理機和負載自動管理技術。美國在P7-A反潛機上也使用了先進配電系統(tǒng),系統(tǒng)控制功能達到了故障—工作、故障—容錯、故障—保險的容錯等級。我國對該課題的研究起步較晚,但是近來發(fā)展迅速,1553B數(shù)據(jù)總線、發(fā)電機控制器、固態(tài)功率控制器和電氣負載管理中心的研究,以及某型飛機的NAMP系統(tǒng),都是富有成果性的。不過,與世界上技術先進國家相比尚有一定差距,還有很多工作要做。先進飛機配電系統(tǒng)可以實現(xiàn)不中斷供電和容錯供電,提高供電系統(tǒng)的可靠性、維護性、靈活性,對于提高飛機的整體性能有重要的作用,已是第四代戰(zhàn)斗機的必備技術。 配電系統(tǒng)控制分析

            配電系統(tǒng)采用集散控制方式,由具有智能性的PSP、ELMC、RT和GCU(發(fā)電機控制器)來實現(xiàn)控制。其中,ELMC監(jiān)視和控制SSPC,RT監(jiān)視和控制EMPC(機電式功率控制器)、外部電源、蓄電池以及TRU(變壓整流器)。GCU為發(fā)電機、主交流匯流條提供控制和保護。GCU在功能上是獨立的,并不受PSP控制。PSP完成頂層級的系統(tǒng)控制任務,實現(xiàn)對配電系統(tǒng)集中管理。各智能終端與PSP通過MIL-STD-1553B數(shù)據(jù)總線進行通信。

            由于受MIL-STD-1553B總線1MBPS位速率的限制,不能采用單一的綜合結構,所以航空電子系統(tǒng)與配電系統(tǒng)控制采用了分層結構。航空電子系統(tǒng)提供配電系統(tǒng)控制所必需的飛行和任務數(shù)據(jù),它采用自己單獨的數(shù)據(jù)總線。由電源系統(tǒng)處理機 (PSP)擔負航空電子系統(tǒng)和配電系統(tǒng)控制之間的信息傳遞任務。

            根據(jù)對飛機配電系統(tǒng)的分析,電源系統(tǒng)處理機軟件可分為下述模塊:

          a. 系統(tǒng)控制指令處理模塊
          b. 供電系統(tǒng)布局狀態(tài)處理模塊
          c. MIL-STD-1553B 數(shù)據(jù)總線控制模塊
          d. 供電系統(tǒng)初始化模塊
          e. 電氣系統(tǒng)監(jiān)控模塊
          f. 處理機請求排序模塊
          g. 處理機請求處理模塊

            由于采用了VxWorks作為操作系統(tǒng),必須將上述模塊劃分為具體的任務,提交給操作系統(tǒng),由操作系統(tǒng)來調度、管理。任務調度一般采用RM和EDF方式,遵循的原則是:首先,要避免死鎖。引起死鎖的原因主要是資源的競爭,所以要保證資源的合理使用。其次,必須為每個任務合理分配CPU使用時間,對于那些I/O操作多的任務優(yōu)先級要低一些,運算多的任務優(yōu)先級要高一些。為保證CPU的充分利用,大量運算歸為一個任務;功能耦合歸為一個任務;對于周期時間,針對不同的頻率處理不同任務。如果我們在具體分析一個系統(tǒng)的時候發(fā)生原則沖突,則要針對具體的系統(tǒng)為每一個原則設定“權重”,必要的時候可以通過計算“權重”來最終確定如何去劃分任務。為了系統(tǒng)的穩(wěn)定和可擴展性,CPU不能全載工作,達到60~70%就可以了。 VxWorks介紹

            VxWorks 是Wind River 公司開發(fā)的實時操作系統(tǒng)軟件,為程序員提供了高效的實時任務調度和中斷管理,實時的系統(tǒng)資源以及實時的任務間通信。其核心功能主要有微內核,任務間通信機制,網(wǎng)絡支持,文件系統(tǒng)和I/O管理,POSIX標準實時擴展,以及C++等其它標準支持。目前,VxWorks操作系統(tǒng)已經(jīng)廣泛應用于通信、國防、工業(yè)控制、醫(yī)療設備等實時應用領域。 綜合設計軟件系統(tǒng)有嚴格的層次結構,如圖2所示。

            主執(zhí)行軟件結構圖 這樣做的目的在于明確各個層面的功能,便于軟件的工程化開發(fā)。 硬件構架:包括了處理機和總線接口部件。軟件層對它的要求是適合于開發(fā)。

            BSP:這一層是連接硬件與VxWorks的,其功能是對上層屏蔽硬件操作,實現(xiàn)系統(tǒng)的配置,驅動的集成,硬件的初始化等等,其部分功能類似于PC機的BIOS。

            VxWorks:這是操作系統(tǒng)層。VxWorks是一款出色的嵌入式實時操作系統(tǒng),該操作系統(tǒng)采用搶占式優(yōu)先級調度,并且根據(jù)應用可以配置和裁減以提高系統(tǒng)的效率、可靠性和實時性。其功能是對應用軟件提供接口界面,進行實時任務調度,系統(tǒng)資源管理等。通過在Tornado開發(fā)環(huán)境下創(chuàng)建Bootable Project 來定制所需要的VxWorks image。用戶一般要根據(jù)實際情況,適當?shù)剡M行添加或裁減。

            應用軟件:這是用戶層,關鍵在于根據(jù)飛機的負載特性和優(yōu)先級分布來合理地劃分任務。建立有限狀態(tài)機和Petri網(wǎng)都能有效地幫助建立合理的應用程序模型,正確地使用相關輔助工具可以簡化建模過程。

            根據(jù)開發(fā)的需要,應用軟件分為內核軟件和外圍集成軟件兩大塊。其中內核軟件實現(xiàn)PSP主執(zhí)行軟件的基本功能,外圍集成軟件實現(xiàn)參數(shù)輸入、顯示等調試過程的人機界面,所有的外圍模塊通過內核軟件的指定接口模塊與內核通信。

            鑒于數(shù)據(jù)被各個任務頻繁使用,所以建立一個嵌入式實時數(shù)據(jù)庫來管理數(shù)據(jù)是安全而高效的。關于嵌入式實時數(shù)據(jù)庫的建立,請參閱相關書籍。這里只是簡單的采用內存數(shù)據(jù)庫來實現(xiàn),目的是消除一般數(shù)據(jù)庫中I/O操作的時間不確定性。首先,要為相關的數(shù)據(jù)類型建立相應的結構體。在該系統(tǒng)中需要為模擬量、狀態(tài)量、數(shù)字量、控制量建立數(shù)據(jù)結構。以數(shù)據(jù)中的模擬量為例,可定義如下: typedef struct AnalogEntity


          int  ID; 
          char  Name[NAME_LEN]; 
          char  U[UNIT_LEN]; 
          int  PValue;  /*前一周期值*/ 
          float  Value;  /*模擬量值*/ 
          int State;  
          int Node;  
          int Aisle; /* 通道 */
          ATIME  Time;  /* 報警時間 */
          float  Uplimit;  / * 報警上限 */ 
          float  Lowerlimit;  /* 報警下限 */ 
          float  IncValue;  /* 過載值*/ 
          int  ALevel;  /* 報警等級 */ 
          int  Ratio;  / * 比例系數(shù) */ 
          /* 向后兼容 */  
          float  Res;  
          char  Reserve[10];  
          } ANALOG;   

            其次,將所有的數(shù)據(jù)和方法封裝在一起,完成數(shù)據(jù)庫的定義而得到的數(shù)據(jù)庫,在這里把它稱為數(shù)據(jù)布局文件。對于本數(shù)據(jù)庫最重要的是要保證讀寫的時間限制,如果規(guī)定時間內未能完成讀寫操作,必須要終止操作,并且回滾到未操作狀態(tài)。

            內核軟件的大致任務為:1553B通信處理任務,電源系統(tǒng)監(jiān)測任務,與備份PSP通信任務,控制臺處理任務,電源請求與執(zhí)行任務,外圍模塊通信處理任務,系統(tǒng)自監(jiān)測任務等。外圍軟件主要是航空電子模擬任務、模擬控制臺任務、綜合顯示任務。   

            內核軟件:處理電源請求和執(zhí)行任務,主要是解飛機負載邏輯方程,從而得出當前的最佳控制方案,將結果通過1553B總線送給ELMC、RT等控制機構。系統(tǒng)自監(jiān)測任務主要是監(jiān)視當前軟件系統(tǒng)工作情況,防止外界原因使得內部數(shù)據(jù)不穩(wěn)定,導致錯誤控制的發(fā)生。外圍軟件主要是模擬PSP的工作環(huán)境和簡單的人機接口,并不是PSP功能的組成部分。采用外圍模塊通信處理任務來管理外圍的任務,可以方便地擴展外圍開發(fā)中的模塊,而不影響內核功能,便于軟件的裁減。備份PSP通信任務通過RS422與備份PSP通信,達到雙機熱備份。電源系統(tǒng)監(jiān)測任務主要是查看電源系統(tǒng)的工作狀態(tài),定期地修改數(shù)據(jù)布局文件中的狀態(tài)量,得到當前的系統(tǒng)工作情況,對于歷史數(shù)據(jù)布局文件可以寫入歷史數(shù)據(jù)庫,以備查詢。另外,任務之間如果需要同步,可以采用信號量來實現(xiàn)。 結語

            本文簡單講述了基于VxWorks的飛機電源系統(tǒng)軟件設計過程,在實際應用中還有許多問題需要解決。比如考慮到程序用途的特殊性,必須保證程序的正確運行,所以程序的健壯性是研究的另一個重點。比如,采用程序固化運行、冗余容錯技術、程序互檢驗等技術都是為了保證程序準確無誤地運行。另外,飛機邏輯負載方程庫的建立和求解,以及相應日志文件系統(tǒng)的建立,都是必要的工作。 參考文獻:

          1. Fault Tolerant Electrical Power System 裀hase I:Study. AFWAL-TR-86-2084,Boeing Military Airplane Company,May 1986.

          2. Fault Tolerant Electrical Power System 裀hase II:Analysis andPreliminaryDesign.AFWAL-TR-86-2084,Boeing Military Airplane Company,May 1986.

          3. VxWorks-Programmer’s Guide 5.4,1999 Wind River Systems,INC.

          4. VxWorks-User’s Guide 5.4,1999 Wind River Systems,INC.



          關鍵詞: 嵌入式 嵌入式

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();