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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 1553總線測試仿真系統(tǒng)設(shè)計與實現(xiàn)

          1553總線測試仿真系統(tǒng)設(shè)計與實現(xiàn)

          作者: 時間:2012-07-30 來源:網(wǎng)絡(luò) 收藏

          摘要:為了解決的測試和故障排查問題,以AEC-PCI-FBC31RT-2-S2型B信號解調(diào)板為基礎(chǔ),設(shè)計、構(gòu)建了1553系統(tǒng),完成了系統(tǒng)軟件的設(shè)計、研制、調(diào)試和測試工作。系統(tǒng)軟件包括1553信號實時采集、實時分析處理、實時顯示和總線仿真等多個軟件模塊,采用多線程軟件設(shè)計技術(shù)保證了信號采集和數(shù)據(jù)轉(zhuǎn)換的實時性和可靠性。實際應(yīng)用表明,該系統(tǒng)縮短了排故周期,提高了效率試飛。
          關(guān)鍵詞:1553總線;信號解調(diào);實時處理;仿真

          0 引言
          飛行試驗是飛機及相關(guān)航空產(chǎn)品設(shè)計定型中非常重要的階段,而飛行試驗數(shù)據(jù)處理又是飛行試驗過程中不可缺少的重要環(huán)節(jié)。隨著新型號的不斷出現(xiàn)和新技術(shù)的發(fā)展,航電系統(tǒng)的結(jié)構(gòu)越來越復(fù)雜,系統(tǒng)越復(fù)雜故障發(fā)生點就越多,這給試飛測試和試飛數(shù)據(jù)處理工作帶來了巨大的挑戰(zhàn),當(dāng)故障出現(xiàn)時如何在最短時間內(nèi)將故障定位,如何縮短數(shù)據(jù)處理周期,都是試飛測試和試飛數(shù)據(jù)處理必須解決的問題。
          針對以上問題,本文提出了飛行試驗中1553總線測試和仿真系統(tǒng)的設(shè)計和實現(xiàn)方法,該系統(tǒng)是基于MIL-STD-1553(GJB289A)數(shù)據(jù)總線標(biāo)準(zhǔn)開發(fā)的,主要用于對1553B信號進行測試和仿真。該系統(tǒng)能對飛機上的總線信號進行實時采集、實時處理、實時監(jiān)測和記錄,能夠?qū)︼w行總線數(shù)據(jù)進行事后分析和實驗室1553總線信號仿真功能,可以加快用戶對總線錯誤定位的速度,縮短數(shù)據(jù)處理周期,減少試驗次數(shù)降低試驗費用。

          1
          1.1 統(tǒng)組成
          系統(tǒng)硬件由工控計算機和雙通道多功能1553B數(shù)據(jù)通信卡組成。系統(tǒng)的主要功能靠軟件來實現(xiàn),各軟件模塊問的工作流程示意圖如圖1所示。系統(tǒng)軟件從結(jié)構(gòu)上主要分為2部分:1553B測試軟件和1553B仿真軟件,圖1中除仿真模塊之外的所有模塊都屬于測試軟件中的功能模塊。

          本文引用地址:http://www.ex-cimer.com/article/193490.htm

          a.JPG


          1.2 1553B信號實時測試軟件設(shè)計與實現(xiàn)
          1.2.1 軟件結(jié)構(gòu)設(shè)計
          1553B總線信號實時測試軟件,主要設(shè)計思想是根據(jù)功能需求,采用了模塊化設(shè)計。主要功能模塊有:總線信號實時采集模塊、實時分析處理模塊、數(shù)據(jù)回放模塊、實時顯示監(jiān)控模塊、原始數(shù)據(jù)記錄模塊和數(shù)據(jù)處理結(jié)果存儲模塊共6部分。
          為了提高1553B測試軟件的運行效率,本系統(tǒng)軟件采用了多線程編程技術(shù)對1553B進行信號采集和處理,主線程和子線程之間通過信號量實現(xiàn)同步。下面對多線程編程技術(shù)進行簡單介紹,給出使用多線程編程技術(shù)的必要性和對軟件運行效率的影響。
          1.2.2 多線程編程技術(shù)
          Windows是一個多任務(wù)操作系統(tǒng),它們在每一時刻中都可以有多個進程同時工作,而一個正在執(zhí)行的程序就是一個進程,每個進程至少有一個線程,也可以有多個線程。
          每一個進程至少有一個主執(zhí)行線程,它是由系統(tǒng)自動創(chuàng)建的。用戶可以根據(jù)需要在應(yīng)用程序中創(chuàng)建其他線程,多個線程并發(fā)的運行于同一進程。這樣可以將一些占用時間長的程序任務(wù)放到后臺去處理,提高程序的運行速度,占用更少的資源等。對復(fù)雜的應(yīng)用程序來說,線程的應(yīng)用給應(yīng)用程序提供了高效、快速、安全的數(shù)據(jù)處理能力。
          要充分發(fā)揮多線程編程技術(shù)的優(yōu)勢,必須要解決好線程之間的同步問題,線程同步就是如何讓多個線程不要同時訪問同一個數(shù)據(jù),讓多個線程能夠協(xié)調(diào)一致的工作,以免破壞數(shù)據(jù)的完整性和防止死鎖情況的發(fā)生。常用的線程同步技術(shù)有信號量(Semaphores)、互斥鎖(Mutex)和臨界段(Critical Sections)。
          1.2.3 實時測試軟件實現(xiàn)方法
          實時測試軟件中的總線數(shù)據(jù)實時分析處理是主線程,信號采集由單獨的子線程來完成,這樣可以保證總線能夠得到及時采集和分析處理,通過消息告訴主線程數(shù)據(jù)已經(jīng)采集好了,主線程收到消息之后開始進行解算、分析。
          在實時測試軟件中當(dāng)主線程運行時,首先要建立主線程和子線程之間,通信的消息,然后建立采集線程工作函數(shù)(定義采集線程的入口函數(shù)),定義創(chuàng)建ICD結(jié)構(gòu)樹的過程和一組消息分析函數(shù),然后對1553B多功能解調(diào)卡進行初始化。總線信號采集系統(tǒng)在總線上相當(dāng)于是一個監(jiān)視器,因此要將采集卡設(shè)置在監(jiān)聽模式。
          要對總線數(shù)據(jù)開始進行實時測試,首先要進行采集總線信號。創(chuàng)建采集線程時,將主線程與子線程的堆棧尺寸設(shè)為相同,并且其長度會根據(jù)需要自動變長,給出采集線程執(zhí)行時代碼所在函數(shù)的地址(線程工作函數(shù)),將采集線程設(shè)為創(chuàng)建后立即執(zhí)行的運行模式,采集線程采滿數(shù)據(jù)之后通過消息通知主線程,主線程開始對采集到的數(shù)據(jù)進行分析處理。
          對采集到的數(shù)據(jù)進行分析處理的內(nèi)容主要包括,將采集到的原始數(shù)據(jù),按照100%1553B事后處理軟件輸入數(shù)據(jù)的格式,寫到存儲介質(zhì)上;將用戶需要實時監(jiān)控的參數(shù)按照GJB289A中的消息結(jié)構(gòu)和通信標(biāo)準(zhǔn)、1553總線中總線控制器、遠程終端的地址、子地址、收/發(fā)等信息和ICD信息進行實時處理,并將分析處理結(jié)果以數(shù)字、文字和曲線的形式進行實時顯示,同時寫入結(jié)果數(shù)據(jù)文件中,其格式和事后處理軟件的輸出格式完全相同。實時處理軟件模塊的程序邏輯流程圖,如圖2所示。

          b.JPG


          1.2.4 實時測試軟件界面設(shè)計
          實時測試軟件界面設(shè)計原則是界面友好,為用戶傳遞的信息準(zhǔn)確無二意性,可操作性要強。實時測試和事后回放主界面中右側(cè)表格中奇數(shù)行,顯示消息中每個元素的名稱,是從ICD數(shù)據(jù)庫中讀取的內(nèi)容,偶數(shù)行顯示每個元素總線數(shù)據(jù)的解算結(jié)果。由于采用了多線程設(shè)計,用戶在測試和回放過程中可以隨時增加需要測試顯示的數(shù)據(jù)塊,處理軟件會立即響應(yīng),而不會出現(xiàn)單線程軟件中的死機現(xiàn)象。測試主界面如圖3所示。

          e.JPG


          1.3 1553B信號仿真軟件設(shè)計與實現(xiàn)
          1.3.1 仿真軟件結(jié)構(gòu)設(shè)計
          仿真軟件由消息配置、消息發(fā)送和停止發(fā)送3個模塊組成。其中,消息配置包括消息塊信息的增、刪、改等消息編輯功能,消息編輯包括消息名稱定義、消息格式選擇、消息選項設(shè)置、指令字配置和數(shù)據(jù)字配置共5部分,軟件結(jié)構(gòu)示意圖如圖4所示。

          c.JPG


          仿真軟件的設(shè)計思想是要準(zhǔn)確地控制總線多功能解調(diào)卡,要深入了解并掌握每個API函數(shù)的意義和使用方法,如何將API函數(shù)和實驗室需要的總線數(shù)據(jù)緊密結(jié)合,使板卡的功能發(fā)揮到極致,是在軟件設(shè)計中比較關(guān)鍵的技術(shù)環(huán)節(jié),該板卡的所有API函數(shù)都封裝在動態(tài)鏈接庫(同時提供了常規(guī)函數(shù)庫)中,因此在軟件設(shè)計時必須確定采用哪種函數(shù)庫,和采用哪種調(diào)用方法,從而在軟件實現(xiàn)方法上實現(xiàn)突破。針對這些情況下,通過對動態(tài)鏈接庫和常規(guī)函數(shù)庫的比較分析,調(diào)用方法的比較分析,最終確定本系統(tǒng)開發(fā)所采用的API函數(shù)調(diào)用技術(shù)。
          1.3.2 動態(tài)鏈接庫技術(shù)
          動態(tài)鏈接庫與常規(guī)函數(shù)庫的區(qū)別在于:常規(guī)函數(shù)庫,連接器復(fù)制它需要的所有庫函數(shù),并把確切的函數(shù)地址傳給調(diào)用這些函數(shù)的程序。而對于動態(tài)鏈接庫,函數(shù)存儲在一個獨立的DLL文件中。在創(chuàng)建Windows程序時,鏈接過程并不把DLL鏈接到程序中。直到程序運行并調(diào)用其中的一個函數(shù)時,該程序才要求給出這個函數(shù)的地址。
          根據(jù)以上對2種不同函數(shù)庫技術(shù)特點的分析,本系統(tǒng)軟件在設(shè)計時,采用了板卡供應(yīng)商所提供的API函數(shù)的動態(tài)鏈接庫。
          調(diào)用一個存儲在動態(tài)鏈接庫中的過程或函數(shù)有靜態(tài)和動態(tài)2種方式。靜態(tài)調(diào)用指在單元的Interface部分用External指示字列出要從DLL中調(diào)用的過程,DLL和DLL中的函數(shù)在程序執(zhí)行前被加載。靜態(tài)調(diào)用所需要的代碼量少,但它有2個缺點:一是當(dāng)要加載的動態(tài)鏈接庫不存在或在動態(tài)鏈接庫中沒有找到要調(diào)用的函數(shù)時,程序就會停止運行;二是一旦動態(tài)鏈接庫加載,就一直停留在應(yīng)用程序的地址空間。
          動態(tài)調(diào)用不需要單元的Interface部分把要調(diào)用的所有函數(shù)列出,只要調(diào)用前引入,用Loadlibrary函數(shù)指定需要加載的DLL,用GerProc Address函數(shù)指定需要調(diào)用的函數(shù)。如果指定的DLL出錯,最多時API調(diào)用失敗,不會導(dǎo)致程序終止。
          基于對動態(tài)鏈接庫2種調(diào)用方式的分析、對比實驗,1553總線軟件采用動態(tài)調(diào)用動態(tài)鏈接庫的方式,實現(xiàn)API函數(shù)的調(diào)用。
          1.3.3 1553B仿真軟件實現(xiàn)方法
          仿真軟件算法根據(jù)國軍標(biāo)《飛機內(nèi)部時分制指令/響應(yīng)式多路傳輸數(shù)據(jù)總線》中的消息格式,以及不同格式的消息結(jié)構(gòu)特點,仿真出總線控制器和各個遠程終端之間的總線工作狀態(tài)??偩€系統(tǒng)中消息格式分為總線控制器向遠程終端的傳輸BC RT,遠程終端向總線控制器的傳輸RT BC,遠程終端向遠程終端的傳輸RTRT共3種格式。
          仿真軟件算法實現(xiàn)步驟如下:
          (1)采用動態(tài)調(diào)用板卡控制函數(shù)的動態(tài)鏈接庫,用Loadlibrary進行加載;
          (2)采用GerProcAddress函數(shù)指定需要調(diào)用函數(shù)的地址,仿真系統(tǒng)作為1553總線系統(tǒng)中的BC進行信號仿真;
          (3)對1553B多功能卡進行設(shè)置,包括板卡初始化、板卡;
          (4)根據(jù)用戶需要仿真的消息結(jié)構(gòu)、周期、時間間隔、通道號(A、B總線)和消息內(nèi)容組建消息包;
          (5)根據(jù)用戶需要仿真的總消息中各個消息包的結(jié)構(gòu),建立消息鏈標(biāo);
          (6)啟動BC,對1553B信號進行仿真輸出,如果是周期消息就一直輸出,直到用戶給出停止操作,如果是非周期函數(shù),執(zhí)行一次發(fā)送后就不再發(fā)送。
          仿真軟件的邏輯流程圖如圖5所示。

          d.JPG


          仿真軟件用戶界面主要是消息配置和消息編輯界面,分別如圖6,圖7所示。

          f.JPG

          g.JPG



          2 系統(tǒng)測試與結(jié)果分析
          2.1 系統(tǒng)測試方法
          系統(tǒng)功能和性能的測試是在實驗室進行的,利用成熟的1553B信號源,采取先進行單獨的航電子系統(tǒng)測試,然后再進行綜合航電系統(tǒng)測試的方法來進行該系統(tǒng)的實時采集、實時處理、實時記錄等功能,用現(xiàn)有飛機的飛行數(shù)據(jù)測試了事后回放和事后處理模塊的性能。
          首選測試方法是與其他系統(tǒng)進行實例對比,通過不同系統(tǒng)之間測試結(jié)果的一致性來判斷結(jié)果的準(zhǔn)確性,例如:總線控制器給雷達發(fā)一個消息,將本系統(tǒng)監(jiān)測到的消息與信號源發(fā)出的消息進行一致性對比。
          第2種方法是采用理論衡量法,總線上的某個子系統(tǒng)執(zhí)行了某條指令之后,按照國標(biāo)軍標(biāo)的規(guī)定,理論上本系統(tǒng)應(yīng)該出現(xiàn)一種測試結(jié)果,然后將本系統(tǒng)實際的測試結(jié)果和理論測試結(jié)果進行對比,確定雙方的一致性。
          第3種方法是采用不同的分析處理方式對總線數(shù)據(jù)進行分析處理,將結(jié)果進行對比,對于本系統(tǒng)來說,將實時測試模塊的測試結(jié)果與事后處理軟件的分析處理結(jié)果進行對比。
          2.2 系統(tǒng)測試結(jié)果分析
          通過對整個系統(tǒng)性能進行的測試,均達到了實際工作要求的指標(biāo),ICD管理軟件對ICD信息的分解和管理達到100%的準(zhǔn)確率,滿足用戶需求;系統(tǒng)時延的測試結(jié)果是小于等于60 ms,完全滿足用戶提出的系統(tǒng)小于等于70 ms的時延;在消息采集完整性測試中,通過對記錄數(shù)據(jù)進行隨機查找指令字和事后分析處理的方法進行測試,測試結(jié)果都表明,總線上的消息百分之百地的被采集并記錄下來,沒有丟消息的現(xiàn)象。仿真消息能夠準(zhǔn)確地傳輸?shù)接脩羲O(shè)定的實驗室總線終端中,而且消息內(nèi)容準(zhǔn)確無誤;系統(tǒng)連續(xù)開機8 h測試,系統(tǒng)運行非常穩(wěn)定。

          3 結(jié)語
          根據(jù)試飛測試需求,選用以1553B總線信號解調(diào)板AEC1553-PCI-FBC31RT-2/S2為硬件基礎(chǔ),設(shè)計和開發(fā)的1553B總線測試仿真系統(tǒng),采用通用化、標(biāo)準(zhǔn)化、模塊化的設(shè)計思想,具有良好的實用價值,可以作為運輸機上百分之百地1553B信號采集、記錄裝置、試飛數(shù)據(jù)地面處理系統(tǒng)、作為進行排故實驗時的信號源,目前已應(yīng)用到各個重點型號中。具有良好的擴展性,可以通過技術(shù)改造后,形成體積小巧的百分之百地1553B信號采集、記錄單元,應(yīng)用到殲擊機和直升機上。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();