終端顯示軟件畢業(yè)設(shè)計論文_第1頁
已閱讀1頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  面向地面測試的終端顯示軟件設(shè)計與開發(fā)</p><p><b>  摘要</b></p><p>  在衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面綜合測試試驗中,終端顯示軟件是保證地面測試順利進行的必要環(huán)節(jié)。終端顯示軟件的主要任務(wù)是通過網(wǎng)絡(luò)接收中心機系統(tǒng)傳送來的數(shù)據(jù),并將其轉(zhuǎn)化為圖像、圖形、曲線、字符等方式的信息提供給使用者。該軟件具有顯示內(nèi)容豐富,畫面數(shù)量大,具備

2、三維仿真顯示能力,并且具有實時、可靠、交互性強、界面友好、操作簡單等特點。</p><p>  論文的主要工作如下:</p><p> ?。?)軟件功能模塊與總體結(jié)構(gòu)的設(shè)計。研究衛(wèi)星姿軌控分系統(tǒng)地面試驗的流程及測試需求,設(shè)計測試軟件系統(tǒng)的功能模塊與總體結(jié)構(gòu)。</p><p> ?。?)軟件通用性、靈活性與可擴展性研究。將終端顯示軟件劃分為多個功能相對獨立的模塊,并分

3、析各個模塊的實際任務(wù)與擴展性需求。</p><p>  (3)標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼研究。針對標(biāo)準(zhǔn)數(shù)據(jù)包格式設(shè)計其接收與解碼流程,以及解碼配置文件的具體定義。</p><p>  (4)歷史數(shù)據(jù)回放研究。設(shè)計數(shù)據(jù)回放的控制機制以及具體的控制指令、配置文件集和數(shù)據(jù)回放流程。</p><p> ?。?)數(shù)據(jù)顯示研究。根據(jù)數(shù)據(jù)顯示的具體需求,研究不同顯示形式的具體實現(xiàn)方法

4、。</p><p>  關(guān)鍵詞:地面測試,終端顯示,數(shù)據(jù)可視化,數(shù)據(jù)回放,模塊化</p><p><b>  目錄</b></p><p><b>  第一章 緒 論</b></p><p>  1.1研究背景與課題的來源</p><p>  1.2研究意義及內(nèi)容</

5、p><p><b>  1.2.1研究意義</b></p><p><b>  1.2.2研究內(nèi)容</b></p><p>  1.3國內(nèi)外關(guān)于數(shù)據(jù)可視化的研究現(xiàn)狀</p><p>  第二章 終端顯示軟件總體設(shè)計</p><p>  2.1 終端顯示軟件需求分析</p&

6、gt;<p>  2.1.1 軟件設(shè)計需求</p><p>  2.1.2 軟件設(shè)計目標(biāo)</p><p>  2.2軟件總體設(shè)計 </p><p><b>  2.2.1設(shè)計原則</b></p><p>  2.2.2軟件功能模塊劃分</p><p>  2.3涉及的關(guān)鍵技術(shù)<

7、/p><p>  第三章 關(guān)鍵技術(shù)研究</p><p>  3.1終端顯示軟件功能模塊與總體結(jié)構(gòu)的設(shè)計</p><p>  3.2配置文件集</p><p>  3.2.1.界面信息配置文件集</p><p>  3.2.2.數(shù)據(jù)處理配置文件集</p><p>  3.3標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解

8、碼</p><p>  3.3.1解碼協(xié)議配置文件集</p><p>  3.3.2接收與解碼流程</p><p>  3.4歷史數(shù)據(jù)回放</p><p>  3.4.1.數(shù)據(jù)回放需求</p><p>  3.4.2.數(shù)據(jù)回放結(jié)構(gòu)與控制流程</p><p>  3.4.3.

9、控制指令設(shè)計</p><p>  3.4.4.控制指令配置文件集</p><p>  3.5數(shù)據(jù)可視化</p><p>  3.5.1數(shù)據(jù)顯示的實現(xiàn)流程</p><p>  3.5.2數(shù)據(jù)顯示類的設(shè)計</p><p>  第四章 原型軟件的開發(fā)與實現(xiàn)</p><p>  4.1

10、開發(fā)工具及開發(fā)環(huán)境</p><p>  4.2終端顯示軟件功能的實現(xiàn)</p><p>  第五章 總結(jié)與展望</p><p><b>  5.1全文總結(jié)</b></p><p><b>  5.2工作展望</b></p><p><b>  畢業(yè)設(shè)計總結(jié)與

11、致謝</b></p><p><b>  參考文獻</b></p><p><b>  圖表清單</b></p><p>  圖2.1 軟件模塊實現(xiàn)層次</p><p>  圖 3.1 TCP接收方式</p><p>  圖 3.2 UDP接收方式</p&g

12、t;<p>  圖 3.3數(shù)據(jù)保存界面</p><p><b>  圖 3.4變量選取</b></p><p>  圖 3.5數(shù)據(jù)的實時曲線顯示</p><p>  圖 3.6曲線顯示中的鼠標(biāo)鍵功能</p><p>  圖 3.7曲線參數(shù)設(shè)置</p><p>  圖 3.8修改曲線的

13、各種屬性</p><p>  圖 3.9載入已保存的曲線屬性配置文件</p><p>  圖 3.10保存曲線為圖片</p><p>  圖3.11數(shù)據(jù)實時數(shù)值顯示</p><p>  圖3.12選擇曲線顯示的離線數(shù)據(jù)</p><p>  圖3.13選擇數(shù)值顯示的離線數(shù)據(jù)</p><p>  圖

14、 3.14數(shù)據(jù)實時二元曲線顯示</p><p>  圖 3.15實時窗口保存</p><p>  圖 3.16載入實時窗口</p><p>  圖3.17系統(tǒng)層次劃分</p><p>  圖3.18 INI文件格式</p><p>  圖3.19 數(shù)據(jù)處理配置文件結(jié)構(gòu)</p><p>  圖3.

15、20 Excel文件集與內(nèi)存數(shù)據(jù)處理協(xié)議的對應(yīng)轉(zhuǎn)化關(guān)系</p><p>  圖3.21 標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼流程</p><p>  圖3.22 數(shù)據(jù)回放流程</p><p>  圖3.23數(shù)據(jù)顯示實現(xiàn)流程</p><p>  圖3.24數(shù)據(jù)顯示類的繼承關(guān)系</p><p>  圖4. 1 終端顯示軟件配置信息讀取界

16、面</p><p>  圖4. 2 終端顯示軟件主界面</p><p>  圖4. 3 TCP網(wǎng)絡(luò)連接設(shè)置界面</p><p>  圖4. 4 UDP網(wǎng)絡(luò)連接設(shè)置界面</p><p>  圖4. 5 時間曲線顯示界面</p><p>  圖4. 6 曲線顯示參數(shù)設(shè)置界面</p><p>  圖4

17、. 7 列表顯示界面</p><p>  圖4. 8 數(shù)據(jù)回放控制面板界面</p><p>  表 2.1 軟件實現(xiàn)關(guān)鍵技術(shù)</p><p><b>  表3.1 數(shù)值類型</b></p><p>  表3.2 查詢指令定義</p><p>  表3.3 查詢指令類型</p><

18、;p><b>  表3.4 時間類型</b></p><p>  表3.5 操作指令定義</p><p>  表3.6 操作指令類型</p><p>  表3.7 控制指令配置文件“Command.xls”的格式定義</p><p>  表4. 1 系統(tǒng)開發(fā)環(huán)境與開發(fā)工具</p><p>&

19、lt;b>  緒論</b></p><p>  1.1 研究背景與課題來源</p><p>  自1957年10月4日,世界上第一顆人造衛(wèi)星進入太空以來,隨著空間技術(shù)的不斷發(fā)展,航天技術(shù)已經(jīng)廣泛應(yīng)用于國民經(jīng)濟、軍事、科學(xué)研究和社會生活的眾多部門,產(chǎn)生了重大而深遠的影響。截至2003年底,世界各國和組織共成功發(fā)射了5635個航天器,其中90%是各類人造衛(wèi)星,人造衛(wèi)星是人類目

20、前探索。開發(fā)和利用太空的最重要工具,研制和發(fā)射人造衛(wèi)星是世界各國航天活動的主要內(nèi)容。 </p><p>  衛(wèi)星是由多個分系統(tǒng)組成的整體,由于對發(fā)生故障的衛(wèi)星進行在軌修復(fù)十分困難,衛(wèi)星在太空中發(fā)生任何故障都可能造成災(zāi)難性的影響,因此為了及時發(fā)現(xiàn)并消除衛(wèi)星上存在的各種故障和隱患,在衛(wèi)星發(fā)射前通過地面測試試驗對衛(wèi)星的各項性能指標(biāo)進行檢驗十分重要。隨著計算機和標(biāo)準(zhǔn)接口在衛(wèi)星測試中的廣泛使用,測試軟件就成

21、了測試系統(tǒng)必不可少的重要組成部分。衛(wèi)星測試通常分為單元級測試、分系統(tǒng)測試和整星測試,在實際的衛(wèi)星測試工作中往往需要根據(jù)具體不同的測試階段、測試任務(wù)和目的開發(fā)相應(yīng)的測試軟件,這樣做就會形成多種多樣的功能類似又不能通用的測試軟件,因此如能設(shè)計一種通用的或者容易擴展的測試軟件將極大的降低開發(fā)成本,減少對測試操作人員培訓(xùn)的工作量,并且在測試工作的不同階段都能得到一致性良好的測試數(shù)據(jù)。其中由于衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面綜合測試時,涉及數(shù)十個單機以及

22、數(shù)百個測試信號,測試操作人員通常根據(jù)這些測試參數(shù)的試驗數(shù)值對控制系統(tǒng)進行實時監(jiān)控與狀態(tài)判斷,數(shù)據(jù)的采集、解析的正確與否以及數(shù)據(jù)的可視化程度的好壞都直接影響到測試人員的判斷。因此有必要開發(fā)一套數(shù)據(jù)可視化程度好,滿足需求的終端顯示軟件。</p><p>  本文將以某型號衛(wèi)星姿態(tài)與軌道控制分系統(tǒng)的地面試驗為背景,在與某航天研究所的合作項目的支持下,進行面向地面測試的終端顯示軟件設(shè)計與開發(fā)的研究工作。</p>

23、;<p>  1.2 研究意義及內(nèi)容</p><p>  1.2.1 研究意義</p><p>  本課題針對某型號衛(wèi)星姿軌控分系統(tǒng)研制過程中的實際需求,設(shè)計并實現(xiàn)一套衛(wèi)星姿軌控分系統(tǒng)地面綜合測試的軟件,并應(yīng)用于實際的衛(wèi)星研制過程中,為衛(wèi)星的實時仿真、半物理仿真以及整星試驗提供技術(shù)支持,保障衛(wèi)星設(shè)計項目的順利進行。</p><p>  因此,開展衛(wèi)星

24、姿軌控分系統(tǒng)地面終端顯示測試軟件的研究與設(shè)計對于提高衛(wèi)星測試效率,縮短研制周期,保證衛(wèi)星可靠性與使用壽命具有非常重要的意義,在衛(wèi)星的研制過程中具有重要的實用價值。終端顯示測試軟件最重要的作用就是實時監(jiān)測衛(wèi)星各系統(tǒng)運行正確與否.</p><p>  1.2.2 研究內(nèi)容</p><p>  本文以某型號衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗為背景,在調(diào)研其實際的具體試驗需求的基礎(chǔ)上,設(shè)計終端顯示測試軟

25、件的各個功能模塊與總體結(jié)構(gòu),研究軟件系統(tǒng)實現(xiàn)需要解決的多項關(guān)鍵技術(shù),開發(fā)實現(xiàn)了衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗測試軟件并將其應(yīng)用于具體的衛(wèi)星測試任務(wù)中。本文研究的主要內(nèi)容有:</p><p> ?。?)軟件功能模塊與總體結(jié)構(gòu)的設(shè)計。研究衛(wèi)星姿軌控分系統(tǒng)地面試驗的流程及測試需求,設(shè)計測試軟件系統(tǒng)的功能模塊與總體結(jié)構(gòu)。</p><p> ?。?)軟件通用性、靈活性與可擴展性研究。將終端顯示軟件劃分

26、為多個功能相對獨立的模塊,并分析各個模塊的實際任務(wù)與擴展性需求,將每個模塊統(tǒng)一劃分為配置文件集和通用模塊兩個層次,分別設(shè)計各個模塊配置文件集中配置文件的格式以及對配置信息進行存儲與讀取的具體方式。</p><p>  (3)標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼研究。針對標(biāo)準(zhǔn)數(shù)據(jù)包格式設(shè)計其接收與解碼流程,以及解碼配置文件的具體定義。</p><p> ?。?)歷史數(shù)據(jù)回放研究。設(shè)計數(shù)據(jù)回放的控制機制以及

27、具體的控制指令、配置文件集和數(shù)據(jù)回放流程。</p><p> ?。?)數(shù)據(jù)顯示研究。根據(jù)數(shù)據(jù)顯示的具體需求,研究不同顯示形式的具體實現(xiàn)方法。</p><p>  1.3 國內(nèi)外關(guān)于數(shù)據(jù)可視化的研究現(xiàn)狀</p><p>  衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗時,涉及數(shù)十個單機以及數(shù)百個測試信號,測試操作人員通常根據(jù)這些測試參數(shù)的試驗數(shù)值對控制系統(tǒng)進行實時監(jiān)控與狀態(tài)判斷,目前

28、測試數(shù)據(jù)的顯示方式主要有:</p><p><b> ?。?)數(shù)值數(shù)據(jù)</b></p><p>  將測試參數(shù)以列表的形式進行表現(xiàn),直接顯示測試參數(shù)的數(shù)值,這是測試數(shù)據(jù)最簡單最直接的表現(xiàn)形式,特別適用于需要關(guān)注參數(shù)數(shù)值大小的場合,系統(tǒng)測試人員通常用參數(shù)列表對有相關(guān)性的幾個參數(shù)進行數(shù)值對比。其缺點是不夠直觀,當(dāng)列表中的參數(shù)眾多時系統(tǒng)測試人員很難及時發(fā)現(xiàn)異常。</p

29、><p><b>  (2)二進制源碼</b></p><p>  以二進制代碼的形式顯示數(shù)據(jù)包中的測試參數(shù),該方法通常被測試人員用于對測試中異常問題進行進一步的定位與詳細分析。</p><p><b>  (3)曲線</b></p><p>  將測試參數(shù)的數(shù)值以曲線的形式進行表現(xiàn),適合表現(xiàn)數(shù)值隨時間

30、以固定規(guī)律變化的信號參數(shù)或者具有相關(guān)性的幾個參數(shù),這種情況下測試人員能夠直觀的看到參數(shù)數(shù)值的實時波動與基本變化趨勢。但由于曲線很難定量給出參數(shù)間的相互關(guān)系,通常將曲線作為數(shù)值數(shù)據(jù)顯示方式的有益補充。</p><p><b> ?。?)文字</b></p><p>  將測試參數(shù)的數(shù)值解釋為具體的文字含義,該方式更適合表現(xiàn)具有某幾個確定含義的測試參數(shù),例如數(shù)值為1時表示

31、太陽帆板展開,數(shù)值為2時表示捕獲地球,數(shù)值為3時表示異常模式等。直接顯示文字能夠讓測試操作人員快速直觀的理解測試參數(shù)目前的狀態(tài),從而減輕工作負擔(dān),提高測試效率。</p><p><b> ?。?)統(tǒng)計圖形</b></p><p>  將測試數(shù)據(jù)以柱狀圖、餅圖、散點圖等統(tǒng)計圖形進行表現(xiàn),該方式適合測試操作人員對歷史測試數(shù)據(jù)進行離線的統(tǒng)計分析。</p>&l

32、t;p> ?。?)圖像與三維動畫模擬</p><p>  借助各種高質(zhì)量的圖像顯示和直觀、方便的可視化設(shè)計為測試人員提供更加完善、簡潔、人性化的數(shù)據(jù)表現(xiàn)形式。</p><p>  終端顯示軟件總體設(shè)計</p><p>  2.1 終端顯示軟件需求分析</p><p>  2.1.1 軟件設(shè)計需求</p><p>

33、;  在本課題的研究中,衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗終端顯示軟件應(yīng)用于分系統(tǒng)研制的終端顯示,與分系統(tǒng)的研制同步進行設(shè)計開發(fā),具有相互依賴的特性。在系統(tǒng)研制的過程中采用終端顯示測試軟件對其進行實時監(jiān)視,直觀發(fā)現(xiàn)系統(tǒng)缺陷,然后改善系統(tǒng)設(shè)計,因此終端顯示軟件必需對各種測試參數(shù)進行實時的監(jiān)測與分析,同時可以對數(shù)據(jù)庫中的數(shù)據(jù)進行回放顯示。這就對終端顯示軟件提出了更高的新的要求。由于在對衛(wèi)星姿態(tài)與軌道分系統(tǒng)進行測試時,測試內(nèi)容較為復(fù)雜,對終端顯示軟

34、件的要求是比較高的,其特點為:</p><p>  (1)被測參數(shù)多,測試速度要求高;</p><p> ?。?)要求終端顯示軟件操作簡便,操作界面和結(jié)果顯示直觀醒目;</p><p>  (3)終端顯示軟件具有基于TCP/IP和UDP協(xié)議的數(shù)據(jù)通信功能;</p><p>  (4)終端顯示軟件具有測試數(shù)據(jù)的查詢和解析功能</p>

35、<p> ?。?)終端顯示軟件能夠以多種方式直觀的顯示測試數(shù)據(jù);</p><p> ?。?)終端顯示軟件具有各種參數(shù)的配置功能。</p><p> ?。?)終端顯示軟件具有一定的通用性,能夠同時應(yīng)用于仿真實驗室的測試和整星狀態(tài)下的測試。</p><p>  2.1.2 軟件設(shè)計目標(biāo)</p><p>  針對衛(wèi)星姿態(tài)與軌道分系統(tǒng)地

36、面試驗的實際需求,本文建立分系統(tǒng)地面試驗的終端顯示軟件,并將其應(yīng)用于實際的衛(wèi)星姿態(tài)與軌道分系統(tǒng)的地面測試試驗中。</p><p>  該終端顯示軟件的設(shè)計思想如下:</p><p>  較高的實用性。依據(jù)衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗的實際應(yīng)用需求進行設(shè)計,進行深入詳細的需求調(diào)研,在保證功能實現(xiàn)的基礎(chǔ)上,增強用戶體驗,提高軟件的可用性;</p><p>  結(jié)構(gòu)的合理

37、性與通用性。針對衛(wèi)星姿態(tài)與軌道分系統(tǒng)邊研制邊測試驗證的特點,采用模塊化的設(shè)計思想,將終端顯示軟件劃分為多個功能相對獨立的模塊,各模塊間定義規(guī)范的接口,簡化了軟件維護難度的同時非常利于軟件的升級與功能的改變與擴展;</p><p>  靈活適應(yīng)性與可擴展性。采用配置文件的方式管理測試數(shù)據(jù)的解碼協(xié)議,實現(xiàn)只需要適當(dāng)?shù)男薷呐渲梦募湍苁菇K端顯示軟件適用于經(jīng)過不斷修改與完善后的系統(tǒng)測試中;</p><

38、p>  高可靠性。終端顯示軟件必能能夠在測試系統(tǒng)實時產(chǎn)生大量測試數(shù)據(jù)的情況下正常工作。</p><p>  測試數(shù)據(jù)可視化多樣性。根據(jù)不同類型數(shù)據(jù)的可視化需求,終端顯示軟件提供多種數(shù)據(jù)顯示方式,例如十進制數(shù)值、文字描述、二進制源碼、十六進制源碼、時間曲線和相平面曲線等。</p><p>  為了滿足分系統(tǒng)研制與測試過程中實際需求,地面測試終端顯示軟件的設(shè)計與實現(xiàn)主要解決以下幾個具體問

39、題:</p><p>  將終端顯示軟件劃分為合理的功能模塊;</p><p>  研究測試數(shù)據(jù)包的解碼問題,以配置文件的形式對解碼協(xié)議進行靈活的管理,使得分系統(tǒng)研制過程中在不影響終端顯示軟件的情況下能夠?qū)獯a協(xié)議進行靈活的修改;</p><p>  研究測試過程中數(shù)據(jù)的流向以及數(shù)據(jù)的接收、解碼、存儲與顯示,可以實時監(jiān)測測試參數(shù),也可以從數(shù)據(jù)庫獲取歷史數(shù)據(jù)進行回放。

40、</p><p>  2.2 軟件總體設(shè)計 </p><p><b>  2.2.1設(shè)計原則</b></p><p> ?。?)模塊化設(shè)計模式</p><p>  為了提高終端顯示軟件的通用性與可擴展性,本文將終端顯示軟件按照功能劃分為幾個模塊,各個模塊之間相互連接。當(dāng)現(xiàn)有的軟件功能不能滿足改變后的測試需求時,可以開發(fā)具

41、有新功能的模塊替換原有的軟件模塊或者將新開發(fā)的模塊串接在軟件模塊中。</p><p>  2)基于配置文件的靈活性設(shè)計</p><p>  為了使終端顯示軟件具有一定的可擴展性,本文將衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗終端顯示軟件中的模塊的實現(xiàn)層次劃分為如圖2.1所示的配置文件集與通用模塊兩個層次,每個模塊中需要靈活設(shè)置的部分保存在配置文件中,專用的程序代碼采用動態(tài)鏈接庫的形式實現(xiàn)并將其相關(guān)信息

42、存儲在配置文件中,其他部分用通用模塊實現(xiàn),通用模塊啟動時讀取相關(guān)的配置信息,程序運行時通用模塊根據(jù)讀取的配置信息動態(tài)調(diào)用相應(yīng)的動態(tài)鏈接庫函數(shù),當(dāng)配置信息改變時通用模塊將其保存至配置文件中。測試人員可以根據(jù)需要修改配置文件中的配置信息,從而使得測試軟件更加的靈活。</p><p>  圖2.2 軟件模塊實現(xiàn)層次</p><p>  2.2.2 軟件功能模塊劃分</p><

43、;p>  衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗終端顯示軟件的主要目的是對各種測試參數(shù)進行實時的監(jiān)測與分析,同時可以對數(shù)據(jù)庫中的數(shù)據(jù)進行回放顯示。終端顯示軟件接收數(shù)據(jù)庫服務(wù)器軟件發(fā)送的數(shù)據(jù),然后根據(jù)內(nèi)存解碼協(xié)議配置文件的內(nèi)容對數(shù)據(jù)幀中的各個物理量進行解碼得到工程數(shù)據(jù),并將工程數(shù)據(jù)以數(shù)值列表、時間曲線和相平面曲線等不同的形式進行顯示。終端顯示軟件還可以向數(shù)據(jù)庫管理軟件發(fā)送多種回放指令,對歷史數(shù)據(jù)的回放進行控制。因此本文將終端顯示軟件按照實現(xiàn)功

44、能的不同劃分為九個子模塊,包括數(shù)據(jù)接收模塊、數(shù)據(jù)解碼模塊、數(shù)據(jù)儲存模塊、數(shù)據(jù)實時二元曲線顯示模塊、數(shù)據(jù)實時數(shù)值顯示模塊、數(shù)據(jù)離線曲線顯示模塊、數(shù)據(jù)的離線數(shù)值顯示模塊、實時窗口保存與載入模塊和數(shù)據(jù)回放控制模塊。</p><p>  這樣劃分既符合模塊化的軟件開發(fā)方法,便于編程,又有利于軟件后期的維護與功能擴展,滿足分系統(tǒng)邊設(shè)計邊測試邊完善的特定需求。</p><p><b>  涉

45、及的關(guān)鍵技術(shù)</b></p><p>  根據(jù)2.1和2.2節(jié)中的軟件需求和功能描述,實現(xiàn)本軟件需要解決一系列的關(guān)鍵技術(shù)問題。表2.1中列出了軟件實現(xiàn)需要解決的關(guān)鍵技術(shù)。</p><p>  表 2.1 軟件實現(xiàn)關(guān)鍵技術(shù)</p><p><b>  關(guān)鍵技術(shù)研究</b></p><p>  3.1 終端顯示

46、軟件功能模塊與總體結(jié)構(gòu)的設(shè)計</p><p>  為了清楚展現(xiàn)軟件的功能,現(xiàn)詳細介紹軟件的個功能模塊。</p><p>  3.1.1 數(shù)據(jù)接收模塊</p><p>  可以分別設(shè)置以TCP或UDP的連接方式接收動力學(xué)數(shù)據(jù)、遙測數(shù)據(jù)和采集數(shù)據(jù),各自的數(shù)據(jù)源可以單獨設(shè)置。模塊軟件界面說明如下:</p><p>  圖 3.17 TCP接收方式

47、 </p><p>  圖 3.18 UDP接收方式</p><p>  3.1.2 數(shù)據(jù)存儲模塊</p><p>  可以選擇將接收到的數(shù)據(jù)保存或者不保存到Access數(shù)據(jù)庫。模塊軟件界面說明如下:</p><p>  圖 3.19數(shù)據(jù)保存界面</p><p>  3.1.3 變量選取模塊</p

48、><p>  從配置文件中選擇功能號,選擇該功能號下的變量名,以不同的方式顯示。模塊軟件界面說明如下:</p><p>  圖 3.20變量選取</p><p>  3.1.4 數(shù)據(jù)的實時曲線顯示模塊</p><p>  實時接收到的數(shù)據(jù)以曲線的方式顯示,橫坐標(biāo)為一個時間,縱坐標(biāo)為一個變量值。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保

49、存至配置文件。模塊軟件界面說明如下:</p><p>  圖 3.21數(shù)據(jù)的實時曲線顯示 </p><p>  圖 3.22曲線顯示中的鼠標(biāo)鍵功能</p><p>  圖 3.23曲線參數(shù)設(shè)置</p><p>  圖 3.24修改曲線的各種屬性</p><p>  圖 3.25載入已保存的曲線屬性配置文件</p

50、><p>  圖 3.26保存曲線為圖片</p><p>  3.1.5 數(shù)據(jù)的實時數(shù)值顯示模塊</p><p>  將實時接收到的數(shù)據(jù)以數(shù)值(十進制、二進制、十六進制)或文字說明的形式顯示。模塊軟件界面說明如下: </p><p>  圖3.27數(shù)據(jù)實時數(shù)值顯示</p><p>  3.1.6 數(shù)據(jù)的離線曲線顯示模

51、塊</p><p>  保存在數(shù)據(jù)庫中的數(shù)據(jù)以曲線的形式進行回放。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保存至配置文件。曲線圖可以以.bmp的圖片格式保存下來。模塊軟件界面說明如下:</p><p>  圖3.28選擇曲線顯示的離線數(shù)據(jù)</p><p>  其他按鈕的功能界面同圖3.5~3.10。</p><p>  3.1.7

52、 數(shù)據(jù)的離線數(shù)值顯示模塊</p><p>  保存在數(shù)據(jù)庫中的數(shù)據(jù)以數(shù)值(十進制、二進制、十六進制)或文字的形式顯示。模塊軟件界面說明如下:</p><p>  圖3.29選擇數(shù)值顯示的離線數(shù)據(jù)</p><p>  3.1.8 數(shù)據(jù)的實時二元曲線顯示模塊</p><p>  實時接收到的數(shù)據(jù)以曲線的方式顯示,橫坐標(biāo)為一個變量的值,縱坐標(biāo)為另

53、一個變量的值。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保存至配置文件。模塊軟件界面說明如下:</p><p>  圖 3.30數(shù)據(jù)實時二元曲線顯示</p><p>  3.1.9 實時窗口保存與載入模塊</p><p>  將當(dāng)前軟件運行時打開的所有實時曲線顯示窗口、實時數(shù)值顯示窗口以及實時二元曲線顯示窗口保存到配置文件,可以指定保存的路徑和名稱。通過載

54、入配置文件可以打開已保存的所有實時曲線顯示窗口、實時數(shù)值顯示窗口以及實時二元曲線顯示窗口。模塊軟件界面說明如下:</p><p>  圖 3.31實時窗口保存</p><p>  圖 3.32載入實時窗口</p><p>  3.2 配置文件集</p><p>  為了提高軟件的通用性、靈活性和快速擴展性,同時減少測試軟件的前期開發(fā)時間與后

55、期維護的工作量。本文將衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗測試軟件的實現(xiàn)層次劃分為如圖3.17所示的配置文件集與軟件通用模塊兩個層次,每個模塊中需要靈活設(shè)置的部分保存在配置文件中,專用的程序代碼采用動態(tài)鏈接庫的形式實現(xiàn)并將其相關(guān)信息存儲在配置文件中,其他部分用通用模塊實現(xiàn),通用模塊啟動時讀取相關(guān)的配置信息,程序運行時通用模塊根據(jù)讀取的配置信息動態(tài)調(diào)用相應(yīng)的動態(tài)鏈接庫函數(shù),當(dāng)配置信息改變時通用模塊將其保存至配置文件中或者由系統(tǒng)測試操作人員手工修改

56、動態(tài)鏈接庫函數(shù)。因此,當(dāng)測試任務(wù)變更或者當(dāng)測試軟件應(yīng)用于不同型號的衛(wèi)星測試任務(wù)時,僅僅需要改變配置文件集中的配置信息或者提供相應(yīng)的動態(tài)鏈接庫函數(shù),這樣就實現(xiàn)了對軟件進行維護到對配置文件集進行維護的轉(zhuǎn)變,使得終端顯示軟件更具有通用性和可擴展性。</p><p>  圖3.17系統(tǒng)層次劃分</p><p>  常用的信息配置方式主要是通過將信息保存在數(shù)據(jù)庫、系統(tǒng)注冊表、INI初始化文件以及自定

57、義格式的文件等載體中來實現(xiàn)。由于系統(tǒng)注冊表涉及系統(tǒng)信息,操作函數(shù)復(fù)雜,一旦注冊表被破壞容易導(dǎo)致系統(tǒng)崩潰。數(shù)據(jù)庫適用于大量數(shù)據(jù)的存儲與管理,如果將配置信息存儲于數(shù)據(jù)庫中,必須開發(fā)相應(yīng)的數(shù)據(jù)庫管理軟件,無形中增加了開發(fā)成本。綜上所述,本文采用INI文件和自定義格式的Excel文件作為配置信息的載體構(gòu)建配置文件集并將其劃分為界面信息配置文件集、數(shù)據(jù)解析配置文件集兩個部分。</p><p>  3.2.1界面信息配置文件

58、集</p><p>  衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗終端顯示軟件涉及多個人工交互的功能模塊,其中許多涉及操作界面的信息需要系統(tǒng)測試人員設(shè)定。不同的測試人員在操作相同的測試軟件模塊時會有不同的界面操作需求,而同一測試人員又具有相對固定的操作習(xí)慣和需求,因此本文將這些界面設(shè)置的信息全部保存在INI文件中供軟件的通用模塊自動調(diào)用,大部分測試人員通常只需要設(shè)置一次界面操作信息,測試軟件會自動保存并調(diào)用這些配置信息,這樣就

59、大大的減少了測試人員的重復(fù)操作負荷。</p><p>  INI文件是Windows系統(tǒng)中以“.ini”為后綴名的信息初始化文件,是一種重要的系統(tǒng)配置文件。利用INI文件可以實現(xiàn)系統(tǒng)配置、應(yīng)用程序的參數(shù)保存與設(shè)置等多種功能,是一種常用的信息配置的實現(xiàn)方式。</p><p>  INI文件是具有標(biāo)準(zhǔn)格式的文本文件,其格式如圖3.18所示,由節(jié)點名稱(Section)、關(guān)鍵字名稱(Key)和關(guān)

60、鍵字內(nèi)容(Value)三部分組成,每個關(guān)鍵字代表一個配置量,將具有相近功能的配置量放在同一個節(jié)點下。一個INI文件中可以有多個節(jié)點名稱,一個節(jié)點中也可以有多個關(guān)鍵字。INI文件由基本的ASCⅡ字符組成,可以用文本編輯器直接進行編輯,不需要復(fù)雜的配置管理,適合保存格式簡單、數(shù)據(jù)量小的配置信息。本文中利用INI文件保存測試軟件的初始化參數(shù)、數(shù)據(jù)源參數(shù)、圖表屬性參數(shù)、操作界面設(shè)置參數(shù)等信息,并在需要時由軟件通用模塊導(dǎo)入這些配置信息,以減少用戶

61、的操作負荷。測試軟件啟動時,首先讀取INI文件中的初始化數(shù)據(jù)并對相關(guān)的模塊進行初始化,測試軟件關(guān)閉或者當(dāng)配置信息更新時,自動將最新的配置信息寫入配置文件中。</p><p>  圖3. 18 INI文件格式</p><p>  Windows系統(tǒng)提供了一系列API函數(shù)對INI文件進行操作,同時C++Builder6.0提供了一個類TIniFile實現(xiàn)對INI文件的各項具體操作,該類對Win

62、dows API函數(shù)進行了封裝,使用更加簡單方便。利用TIniFile類的構(gòu)造函數(shù)和其他對象操作函數(shù)可以將一個TIniFile對象與INI文件相關(guān)聯(lián)并進行以下類型的操作:</p><p>  對關(guān)鍵字的操作,包括讀取關(guān)鍵字的內(nèi)容、寫關(guān)鍵字以及添加和刪除關(guān)鍵字。</p><p>  對節(jié)點的操作,包括讀取所有的節(jié)點名稱,讀取某節(jié)點中所有的關(guān)鍵字名稱,添加和刪除節(jié)點。</p>&

63、lt;p>  本文中將軟件設(shè)置參數(shù)以及用戶操作習(xí)慣等信息保存在INI文件中。為了提高測試軟件的穩(wěn)定性與可靠性,本測試軟件同時設(shè)計了TCP/IP和UDP兩種網(wǎng)絡(luò)連接方式,測試人員可以根據(jù)具體的測試要求選擇具體的連接方式。本文將連接方式以及連接參數(shù)保存在配置文件LinkType.ini、TCPIP.ini、UDP.ini三個INI配置文件中。測試軟件啟動時將自動讀取配置信息并根據(jù)其對測試軟件中的通訊組件進行初始化。</p>

64、<p>  LinkType.ini文件中記錄了測試軟件當(dāng)前使用的網(wǎng)絡(luò)連接方式并指明具體連接參數(shù)所在的INI配置文件,內(nèi)容格式如下:</p><p>  [LinkType] </p><p>  SelectedType=TCPIP //該關(guān)鍵字表示當(dāng)前使用的的網(wǎng)絡(luò)連接方式,有TCPIP和UDP兩個取值</p><

65、p>  [IniFileName] </p><p>  TCPIP=TCPIP.ini //該關(guān)鍵字的取值為存儲TCP/IP連接參數(shù)的INI配置文件名稱</p><p>  UDP=UDP.ini //該關(guān)鍵字的取值為存儲UDP連接參數(shù)的INI配置文件名稱</p><p>  本文中采用C++

66、 Builder6.0中提供的TClientSocket組件和TNMUDP組件來分別實現(xiàn)數(shù)據(jù)接收端與發(fā)送端的TCP/IP和UDP方式的通信連接,并將其連接參數(shù)分別記錄在TCPIP.ini和UDP.ini文件中,程序啟動時根據(jù)讀取的配置信息設(shè)置TClientSocket組件的屬性。TCPIP.ini內(nèi)容格式如下:</p><p><b>  [TCP]</b></p><p

67、>  IP= 192.168.0.212//數(shù)據(jù)發(fā)送端計算機的IP地址,對應(yīng)于TClientSocket組件對象的Host屬性</p><p>  Port=32001//數(shù)據(jù)發(fā)送端計算機的端口號,對應(yīng)于TClientSocket組件對象的Port屬性</p><p>  UDP.ini文件中的內(nèi)容格式如下:</p><p><b>  [TCP

68、]</b></p><p>  LocalPort =32710//數(shù)據(jù)接收端計算機的端口號,對應(yīng)于TNMUDP組件對象的Port屬性</p><p>  RemoteHost =192.168.0.13//數(shù)據(jù)發(fā)送端計算機的IP地址,對應(yīng)于TNMUDP組件對象的Port屬性</p><p>  RemotePort =110043//數(shù)據(jù)發(fā)

69、送端計算機的端口號,對應(yīng)于TNMUDP組件對象的Port屬性</p><p>  3.2.2 數(shù)據(jù)處理配置文件集</p><p>  數(shù)據(jù)處理是衛(wèi)星測試中的主要內(nèi)容,主要關(guān)系到數(shù)據(jù)的解碼以及數(shù)據(jù)的重新組織。衛(wèi)星測試是一項龐大的工程,涉及眾多的測試物理量,而且不同階段的衛(wèi)星測試有不同的測試任務(wù)和測試要求,當(dāng)具體測試過程中采用不同的測試設(shè)備和計算機時,會設(shè)計有不同的數(shù)據(jù)解析協(xié)議。為了使衛(wèi)星姿態(tài)

70、與軌道分系統(tǒng)地面試驗測試終端顯示軟件能夠盡量應(yīng)用于不同型號衛(wèi)星的測試,并能夠處理不同格式的測試數(shù)據(jù),本文將數(shù)據(jù)處理協(xié)議保存在配置文件中。僅僅需要對配置文件進行更新與修改,而不需要對軟件代碼進行更改與維護,就可以將測試軟件應(yīng)用于不同的測試環(huán)境中時。</p><p>  如圖3.19所示,本文中數(shù)據(jù)處理配置文件集由協(xié)議定義文件和協(xié)議的實現(xiàn)文件組成。其中協(xié)議的定義存儲于Excel文件中,數(shù)據(jù)協(xié)議的由動態(tài)鏈接庫(dll文

71、件)實現(xiàn),Excel文件中記錄了處理每種協(xié)議的動態(tài)鏈接庫的文件名。</p><p>  圖3.19 數(shù)據(jù)處理配置文件結(jié)構(gòu)</p><p>  數(shù)據(jù)處理配置文件集主要是為數(shù)據(jù)解碼、數(shù)據(jù)接收等軟件子模塊提供數(shù)據(jù)處理配置信息。由于一旦完成對配置文件創(chuàng)建工作之后,很少會對其進行修改等操作,因此本文采用Excel文件來存儲數(shù)據(jù)解析協(xié)議的定義信息。數(shù)據(jù)在Excel中以二維表格的形式存在,相當(dāng)于關(guān)系型數(shù)

72、據(jù)庫中的一個數(shù)據(jù)表,因此本文將關(guān)系型數(shù)據(jù)庫的相關(guān)概念引入到數(shù)據(jù)處理協(xié)議配置文件集中,規(guī)定每個Excel配置文件都只有一個數(shù)據(jù)頁(sheet),并將其看做是數(shù)據(jù)庫的一個數(shù)據(jù)表,每個Excel文件中的標(biāo)題行設(shè)計為數(shù)據(jù)表的字段,文件名作為數(shù)據(jù)表的表名。這樣所有的Excel數(shù)據(jù)處理配置文件的集合構(gòu)成了一個數(shù)據(jù)庫。</p><p>  由于在測試數(shù)據(jù)的處理過程中,數(shù)據(jù)解碼模塊和數(shù)據(jù)發(fā)送模塊需要不斷的查詢數(shù)據(jù)協(xié)議定義信息并根

73、據(jù)其對數(shù)據(jù)進行實時的處理。而計算機對內(nèi)存數(shù)據(jù)的讀取速度要遠遠大于對硬盤數(shù)據(jù)的讀取速度,因此本文在軟件啟動時將協(xié)議定義文件一次性全部讀取到內(nèi)存空間中,并將這個副本稱之為內(nèi)存數(shù)據(jù)處理協(xié)議。在軟件的運行過程中將不會對硬盤上的Excel配置文件進行任何的操作,所有的配置信息查詢過程都僅僅針對內(nèi)存數(shù)據(jù)處理協(xié)議。</p><p>  在內(nèi)存中,每個Excel文件用一個容器表示,容器中的每一個元素都是一個結(jié)構(gòu)體實例,Excel

74、文件中每一行的信息對應(yīng)于一個結(jié)構(gòu)體實例,結(jié)構(gòu)體的定義與Excel文件中標(biāo)題行的定義保持一致,每行信息的關(guān)鍵字段可以作為關(guān)聯(lián)型容器的關(guān)鍵字。如果有多個類型相同的Excel文件組成配置文件集,可以將存儲每個配置文件信息的容器作為元素,存儲在另一個容器中。圖3.20為Excel數(shù)據(jù)處理協(xié)議配置文件與內(nèi)存數(shù)據(jù)處理協(xié)議的對應(yīng)轉(zhuǎn)化關(guān)系。</p><p>  圖3.20 Excel文件集與內(nèi)存數(shù)據(jù)處理協(xié)議的對應(yīng)轉(zhuǎn)化關(guān)系<

75、/p><p>  利用C++ Builder 6.0提供的TADOQuery組件和TADOConnection組件可以像操作一個數(shù)據(jù)庫一樣操作Excel文件。本文就是在各個軟件啟動時利用TADOConnection組件連接至各個Excel配置文件后利用TADOQuery組件讀取Excel文件中的所有配置信息,完成Excel數(shù)據(jù)處理協(xié)議配置文件到與內(nèi)存數(shù)據(jù)處理協(xié)議的轉(zhuǎn)化。衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗終端顯示軟件中與每個

76、子模塊實現(xiàn)不同的功能,與之相對應(yīng)的Excel數(shù)據(jù)處理配置文件中的字段和結(jié)構(gòu)體定義也有所不同。</p><p>  DLL是動態(tài)鏈接庫(Dynamic Link Library) 的英文縮寫,一個DLL文件中包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數(shù)。利用DLL不僅可以使一個進程調(diào)用不屬于其可執(zhí)行代碼的函數(shù),還可以實現(xiàn)資源與數(shù)據(jù)的共享,使得多個應(yīng)用程序可以同時訪問內(nèi)存中單個DLL 副本的內(nèi)容 [5

77、5]。利用動態(tài)鏈接庫可以非常方便的在不影響該程序其他部分的情況下將更新應(yīng)用于各個模塊。</p><p>  衛(wèi)星控制系統(tǒng)的設(shè)計過程實際上也是一個邊設(shè)計邊測試邊完善的過程,因而要求終端顯示軟件具有一定的靈活性與適應(yīng)性,在測試過程中能夠針對最新的測試要求,應(yīng)用最新協(xié)議對測試數(shù)據(jù)進行處理。若將所有的測試數(shù)據(jù)處理代碼都集中在一個可執(zhí)行文件中,顯然非常不利于軟件的維護與后期的功能擴展,為了提高軟件的通用性與可擴展性,本文將

78、不同協(xié)議規(guī)定的測試數(shù)據(jù)處理方法單獨編寫為一個DLL文件。軟件的通用模塊在處理測試數(shù)據(jù)時首先查詢內(nèi)存數(shù)據(jù)處理協(xié)議,內(nèi)存數(shù)據(jù)處理協(xié)議中記錄了針對各個協(xié)議處理測試數(shù)據(jù)的DLL文件,通用模塊調(diào)用相應(yīng)的DLL文件中的處理函數(shù)對測試數(shù)據(jù)進行處理這樣對終端顯示軟件的后期的維護與擴展轉(zhuǎn)移為對定義協(xié)議的配置文件和相應(yīng)的DLL文件的維護與擴展。</p><p>  3.3 標(biāo)準(zhǔn)數(shù)據(jù)包的接受與解碼</p><p&

79、gt;  標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼就是將接收到的標(biāo)準(zhǔn)格式的測量數(shù)據(jù)串分解為不同的數(shù)據(jù)幀,并對各個數(shù)據(jù)幀進行解碼,將其包含的信息轉(zhuǎn)化為具有實際物理意義的工程數(shù)據(jù)并在局域網(wǎng)上發(fā)布,再進一步由數(shù)據(jù)監(jiān)測模塊顯示為衛(wèi)星測試系統(tǒng)操作人員最易于理解的形式。</p><p>  3.3.1 解碼協(xié)議配置文件集</p><p>  對測量數(shù)據(jù)的解碼主要就是對數(shù)據(jù)域的解碼。根據(jù)上節(jié)中的描述,本文將每個標(biāo)準(zhǔn)數(shù)據(jù)

80、包的解碼協(xié)議存儲在一個Excel文件中,并將該文件稱之為解碼協(xié)議配置文件。測試人員可以根據(jù)需要隨時修改解碼協(xié)議配置文件。</p><p>  解碼協(xié)議配置文件的文件名為數(shù)據(jù)幀的幀編號。數(shù)據(jù)頁的名稱為“StdDecode.xls”,該數(shù)據(jù)頁中的標(biāo)題行包括:物理量序號、分類名、起始字節(jié),終止字節(jié),起始位、終止位、數(shù)值類型、文字解析、a、b、c、量綱和最小值與最大值。</p><p>  以下為

81、對標(biāo)題行各列的詳細說明:</p><p>  物理量序號:每一行以從小到大的順序方式0,1,2,3……。</p><p>  分類名:意義相近的物理量可以設(shè)為相同的分類名,例如將四元數(shù)q0,q1,q2,q3的分類名設(shè)置為“四元數(shù)”。</p><p>  物理量名稱:物理量的名稱。</p><p>  起始字節(jié):表示各變量在數(shù)據(jù)段中的起始字節(jié)位

82、置編號(第一個字節(jié)的位置編號為0)。</p><p>  終止字節(jié):表示各變量在數(shù)據(jù)段中的終止字節(jié)位置編號(第一個字節(jié)的位置編號為0)。</p><p>  數(shù)值類型:表示各變量的數(shù)值類型及其顯示方式,本文中將數(shù)值類型一共分為11種,如表3.所示:</p><p><b>  表3.1 數(shù)值類型</b></p><p>

83、  起始位:必填項。當(dāng)數(shù)值類型為bit或xbit時,該項填變量在一個字節(jié)中的起始位的位置編號(0~7),否則填-1。</p><p>  終止位:必填項。當(dāng)數(shù)值類型為bit或xbitt時,該項填變量在一個字節(jié)中的終止位的位置編號(0~7),否則填-1。</p><p>  文字解析:表示該物理量是否需要以文字說明的方式進行顯示。當(dāng)數(shù)值類型為bit或xbit或C時,需按照以下格式進行填寫。每

84、一項以“|”結(jié)束,每一項的“=”左邊為十六進制數(shù)或以格式為“(十六進制小數(shù)/十六進制大數(shù))”表示的開區(qū)間。例如“03=捕獲地球|09=帆板展開|(B7/C1)=異常模式|”表示當(dāng)該物理量的大小等于3時表示“捕獲地球”;等于9時表示“帆板展開”;大于183并且小于193時表示“異常模式”。</p><p>  a、b、c三項為解碼系數(shù),顯示終端每次接收到的數(shù)據(jù)x將按照(x+a)*b+c的格式進行轉(zhuǎn)換,其中a,b,c

85、為三個系數(shù),具體數(shù)值與各個物理量的處理要求有關(guān)。</p><p>  量綱:物理量的單位名稱,沒有量綱的物理量填“無”。</p><p>  最小值:該物理量在正常范圍內(nèi)所允許的最小取值,如無最小值,該項填“無。</p><p>  最大值:該物理量在正常范圍內(nèi)所允許的最大取值,如無最大值,該項填“無。</p><p>  在對遙測幀進行解碼

86、處理的過程中,需要頻繁的訪問解碼協(xié)議配置文件。這些數(shù)據(jù)保存在硬盤上,由于解碼協(xié)議配置文件數(shù)據(jù)量大并且計算機對硬盤的訪問速度遠遠低于對內(nèi)存的訪問速度,因此為了提高測量數(shù)據(jù)的解碼效率,本文在測量數(shù)據(jù)的解碼模塊工作之前,將解碼協(xié)議配置文件中的信息一次性讀取到內(nèi)存中的一個以結(jié)構(gòu)體為元素的map類型的容器中,并將這個副本稱之為內(nèi)存解碼協(xié)議配置文件。該結(jié)構(gòu)體和容器的結(jié)構(gòu)定義如下:</p><p>  typedefstru

87、ctM_ StdDecode</p><p>  {AnsiString GroupName;//分類名</p><p>  AnsiStringVariable;//物理量名稱</p><p>  AnsiString MachineType;//單機類型</p><p>  IntStartByte;

88、//起始字節(jié)</p><p>  Int EndByte;//終止字節(jié)</p><p>  IntStartBit;//起始位</p><p>  Int EndBit;//終止位</p><p>  AnsiString WordShow;//文字解析</p>&l

89、t;p>  Double a;// 系數(shù)a</p><p>  Double b;// 系數(shù)b</p><p>  Double c;// 系數(shù)c</p><p>  AnsiString Unit;//量綱</p><p>  BoolMinValidity;

90、//是否有最小值</p><p>  Double Min;//最小值</p><p>  BoolMaxValidity; //是否有最大值</p><p>  Double Max;//最大值</p><p>  } StdDecode;</p><p>  因此本文

91、將物理量名稱作為關(guān)鍵字的值,與結(jié)構(gòu)體變量實例StdDecode組成一個鍵-值對作為一個map容器的元素,從而用一個map關(guān)聯(lián)容器實例來存儲一個DataPre.xls中的配置信息。該map變量實例的定義如下:</p><p>  map <AnsiString, StdDecode> map_ DataPre1, map_ DataPre2, … , map_ DataPreN;</p>

92、<p>  多個map <AnsiString, StdDecode>類型變量可以作為一個map_AllStdDecode容器的元素,并且將一個幀編號和map_ DataPreN作為一個鍵值對, map_AllStdDecoded的定義如下:</p><p>  map <AnsiString, map <AnsiString, StdDecode> > map_A

93、llStdDecode</p><p>  3.3.2 接收與解碼流程</p><p>  本文采用TCP/IP方式接收測量數(shù)據(jù),由于接收緩沖區(qū)中的數(shù)據(jù)不可能正好是一個遙測幀的長度,因此本文采用如下的流程接收遙測幀并對其進行解碼:</p><p>  將解碼協(xié)議配置文件讀取到內(nèi)存空間;</p><p>  緩沖區(qū)接收到數(shù)據(jù),如果接收緩沖區(qū)中

94、的數(shù)據(jù)長度大于等于數(shù)據(jù)頭的長度,則讀取數(shù)據(jù)頭;如果小于數(shù)據(jù)頭的長度,則等待;</p><p>  讀取數(shù)據(jù)頭,對數(shù)據(jù)頭進行解碼并且獲取數(shù)據(jù)段的長度;</p><p>  如果接收緩沖區(qū)中的數(shù)據(jù)長度大于等于數(shù)據(jù)段的長度,則讀取數(shù)據(jù)段;如果小于數(shù)據(jù)段的長度,則等待。</p><p>  根據(jù)數(shù)據(jù)頭中的遙測幀編號,在相應(yīng)的內(nèi)存解碼協(xié)議配置文件中遍歷每個遙測量;取出遙測量在

95、遙測幀中的數(shù)值類型、起始字節(jié)、終止字節(jié)、起始位、終止位等信息;將遙測變量解碼為double類型的數(shù)值;</p><p>  重復(fù)步驟2~步驟5,對下一幀數(shù)據(jù)進行解碼。</p><p>  圖3.21為對測量數(shù)據(jù)進行接收與解碼的流程圖。</p><p>  圖3.21 標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼流程</p><p>  3.4 歷史數(shù)據(jù)回放<

96、;/p><p>  3.4.1. 數(shù)據(jù)回放需求</p><p>  在衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗過程中,為了便于分析測試數(shù)據(jù),測試工作人員除了要實時監(jiān)測測試參數(shù)的狀態(tài)與變化情況外,往往還需要查看之前衛(wèi)星測試試驗中產(chǎn)生的歷史數(shù)據(jù),具體要求包括:</p><p>  測試人員能夠指定需要查看的測試參數(shù);</p><p>  測試人員功能對數(shù)據(jù)回放進

97、行開始、停止、暫停、繼續(xù)等功能的控制;</p><p>  測試人員能夠指定數(shù)據(jù)回放的速度與回放數(shù)據(jù)的頻率。</p><p>  數(shù)據(jù)回放結(jié)構(gòu)與控制流程</p><p>  根據(jù)數(shù)據(jù)回放需求,本文采用C/S網(wǎng)絡(luò)結(jié)構(gòu)實現(xiàn)數(shù)據(jù)的回放與控制功能,數(shù)據(jù)終端顯示模塊作為客戶端,不同客戶端的用戶可以根據(jù)各自的需求向服務(wù)器申請回放需要查看的歷史數(shù)據(jù)。數(shù)據(jù)回放的控制流程下圖所示。&

98、lt;/p><p>  圖3.22 數(shù)據(jù)回放流程</p><p>  數(shù)據(jù)監(jiān)測模塊首先通過日期直接查詢數(shù)據(jù)庫中的某段時間內(nèi)的試驗記錄;數(shù)據(jù)庫把查詢結(jié)果(試驗序號,試驗時間等)返回數(shù)據(jù)監(jiān)測模塊;</p><p>  數(shù)據(jù)監(jiān)測模塊選擇某個試驗后,向數(shù)據(jù)庫管理模塊發(fā)送查詢指令;數(shù)據(jù)庫管理模塊返回操作指令作為應(yīng)答;</p><p>  如果查詢指令類型為

99、開始查詢,則數(shù)據(jù)庫管理模塊按照查詢指令內(nèi)容查詢數(shù)據(jù)庫,并獲得數(shù)據(jù)集;否則直接跳到步驟4。</p><p>  如果查詢指令類型為開始查詢,數(shù)據(jù)庫管理模塊利用數(shù)據(jù)發(fā)送子模塊將數(shù)據(jù)集按照查詢指令中的周期和步長發(fā)送給數(shù)據(jù)監(jiān)測模塊,否則根據(jù)查詢指令類型對正在發(fā)送的回放數(shù)據(jù)進行暫停、繼續(xù)、停止等控制操作。</p><p>  3.4.3. 控制指令設(shè)計</p><p>  

100、查詢指令共26字節(jié),指令的具體格式如下表所示。</p><p>  表3.2 查詢指令定義</p><p>  查詢指令類型為1字節(jié),查詢指令類型分為4種,即開始查詢、暫停、繼續(xù)、停止,具體數(shù)據(jù)協(xié)議下表所示。</p><p>  表3.3 查詢指令類型</p><p>  試驗序號為8字節(jié),對應(yīng)數(shù)據(jù)庫表中的testserial字段。</

101、p><p>  時間類型為1字節(jié),指查詢提交的時間段是地面時間或星上時間,具體數(shù)據(jù)協(xié)議如下表所示。</p><p><b>  表3.4 時間類型</b></p><p>  操作指令的長度為2個字節(jié),包含了指令類型和查詢標(biāo)識兩部分內(nèi)容,具體的數(shù)據(jù)協(xié)議如下表所示。</p><p>  表3.5 操作指令定義</p>

102、;<p>  操作指令類型的數(shù)據(jù)長度為一個1個字節(jié),本文定義了10種操作指令,具體的指令類型定義如下表所示。</p><p>  表3.6 操作指令類型</p><p>  查詢標(biāo)識:1字節(jié),查詢標(biāo)識指操作指令對應(yīng)的查詢幀編號,具體數(shù)據(jù)協(xié)議與查詢指令相同。</p><p><b>  控制指令配置文件集</b></p>

103、<p>  根據(jù)前節(jié)中的描述,為了提高歷史數(shù)據(jù)回放模塊的可擴展性,本文將控制指令保存在一個名為“Command.xls”的Excel配置文件中,系統(tǒng)測試人員或軟件開發(fā)人員可根據(jù)實際需要在配置文件中添加新的控制指令。</p><p>  查詢指令和控制指令都統(tǒng)一保存在名稱為“Cmd”的數(shù)據(jù)頁中,該數(shù)據(jù)頁中各列的標(biāo)題如下表所示。</p><p>  表3.7 控制指令配置文件“C

104、ommand.xls”的格式定義</p><p>  衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗終端顯示軟件在工作時,將控制指令配置文件中的配置信息讀取到內(nèi)存中的STRCmd結(jié)構(gòu)體類型的變量中。具體的結(jié)構(gòu)體定義如下:</p><p>  typedefstructM_ STRCmd</p><p>  {Int Num;//序號</p><

105、;p>  Int CmdType;//指令類型</p><p>  AnsiString CmdNum;//指令編號</p><p>  AnsiString Exp;//備注</p><p>  } STRCmd;</p><p>  Command.xls文件中的每一行信息存儲在一個結(jié)構(gòu)體中,

106、所有的結(jié)構(gòu)體變量作為元素存儲在map類型的容器中,并且將指令編號作為元素的鍵值,該容器的定義如下:</p><p>  map < AnsiString, DataPre > map_ STRCmd;</p><p><b>  數(shù)據(jù)可視化</b></p><p>  衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗過程中需要實時監(jiān)視大量的測試參數(shù),根

107、據(jù)前文中的描述,不同類型的參數(shù)適用于不同的顯示方式。根據(jù)實現(xiàn)方式的不同,本文將數(shù)據(jù)顯示的方式分為列表顯示和曲線顯示兩大部分。</p><p>  列表顯示就是將接收到的測試參數(shù)的數(shù)值直接羅列在表格中予以顯示,這是衛(wèi)星測試中最重要的數(shù)據(jù)顯示方式。根據(jù)實際需求的不同,具體的數(shù)值顯示形式又分為:十進制數(shù)值、二進制源碼、十六進源碼和文字描述。</p><p>  曲線顯示又分為實時二元曲線顯示和離

108、線曲線顯示兩大部分。</p><p>  實時二元曲線顯示功能將實時接收到的數(shù)據(jù)以曲線的方式顯示,橫坐標(biāo)為時間,縱坐標(biāo)為測試量的數(shù)值。曲線的顏色、線型、線寬、曲線圖的標(biāo)題以及實時顯示的周期等屬性可配置并保存至配置文件。采用離線曲線顯示時,保存在數(shù)據(jù)庫中的數(shù)據(jù)會以曲線的形式進行回放。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保存至配置文件。 </p><p>  實時二元曲線

109、顯示和離線曲線顯示具有一些共同的任務(wù)需求:</p><p>  曲線圖必須具有實時放大、縮小、平移的功能;</p><p>  曲線圖能夠被存儲、打印;</p><p>  曲線圖的顯示功能要求能夠?qū)崿F(xiàn)暫停、繼續(xù)等功能;</p><p>  能夠設(shè)置曲線圖的參數(shù),如曲線線型、顏色、線寬、曲線圖標(biāo)簽,曲線圖的標(biāo)題以及顯示范圍等;</p&g

110、t;<p>  曲線圖的設(shè)置參數(shù)能夠被保存并調(diào)用;</p><p>  多個曲線圖能夠同時顯示、彼此相互獨立;</p><p>  同一張曲線圖中能夠顯示多條數(shù)據(jù)曲線;</p><p>  實時二元曲線顯示與離線曲線顯示又分別有一些不同的任務(wù)要求:</p><p>  實時二元曲線顯示的曲線橫坐標(biāo)為時間,縱坐標(biāo)為測試量的數(shù)值;而

111、離線曲線顯示曲線上每一個數(shù)據(jù)點的橫坐標(biāo)和縱坐標(biāo)都是一個測試量的數(shù)值。</p><p>  實時二元曲線顯示功能要求可以自動顯示最新的曲線部分。</p><p>  曲線顯示功能既可以通過調(diào)用Windows API函數(shù)來實現(xiàn),也可以通過對C++Builder提供的圖形顯示控件Tchart進行二次開發(fā)來實現(xiàn)。調(diào)用Windows API函數(shù)會增加系統(tǒng)開發(fā)的難度與復(fù)雜性,容易給系統(tǒng)帶來不穩(wěn)定性。T

112、chart是C++ Builder6.0 中提供的一個標(biāo)準(zhǔn)的圖形顯示控件,既可以靜態(tài)設(shè)計,也可以動態(tài)生成。利用Tchart可以快速繪制Line、FastLine、Pie、Point和Area等多種類型的圖形,通過調(diào)用Tchart提供的眾多的函數(shù)可以快速實現(xiàn)曲線的平移、縮放、曲線參數(shù)設(shè)置等功能。因此,本文采用TChart控件進行曲線顯示功能的開發(fā)與實現(xiàn)。</p><p><b>  數(shù)據(jù)顯示的實現(xiàn)流程&l

113、t;/b></p><p>  類繼承和動態(tài)綁定是面向?qū)ο缶幊讨械囊粋€重要的內(nèi)容,在C++中,用類進行數(shù)據(jù)抽象,用類派生從一個類繼承另一個類。動態(tài)綁定使編譯器能夠在運行時決定是使用基類中定義的函數(shù)還是派生類中定義的函數(shù)。繼承和動態(tài)綁定可以在兩個方面簡化程序:能夠容易的定義與其他類相似但又不同的新類,能夠更容易的編寫忽略這些相似類型之間區(qū)別的程序。面向?qū)ο缶幊膛c本文中曲線顯示的應(yīng)用需求非常匹配,本文定義一個類

114、來描述實時二元曲線顯示和離線曲線顯示的共同點,同時通過繼承可以定義兩種不同派生類來分別描述并實現(xiàn)實時二元曲線顯示和離線曲線顯示。</p><p>  列表顯示和曲線顯示的共同點都是將接收到的數(shù)據(jù)以某種形式顯示出來,只是在具體的顯示及實現(xiàn)方式上有所區(qū)別,采用C++編程中類繼承和動態(tài)綁定的技術(shù)能夠?qū)煞N顯示方式的流程統(tǒng)一起來。本文設(shè)計了一個窗體類TFormShow和一個線程類ThreadShow來實現(xiàn)數(shù)據(jù)的顯示。TF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論