邢 浩,史 巖,岳佳欣
(航空工業(yè)西安航空計算技術(shù)研究所,陜西 西安 710065)
載人飛艇是一種可操縱的浮空飛行器,它依靠氣囊內(nèi)封閉的氫氣或氦氣產(chǎn)生浮力,并通過發(fā)動機來推進其在空中的持續(xù)飛行,具有良好的機動性和穩(wěn)定性。目前載人飛艇已廣泛應(yīng)用于航空運輸、應(yīng)急救援以及商業(yè)旅游等多元場景中。綜合處理機(Integrated Processor,IP)作為飛艇航空電子系統(tǒng)的重要組成設(shè)備,它主要用于連接相關(guān)外部設(shè)備和綜合顯示器,同時提供各路數(shù)據(jù)的收發(fā)功能。
隨著民用載人飛艇技術(shù)的不斷發(fā)展,綜合處理機軟件(Integrated Processor Software,IPS)的功能越來越復(fù)雜。為了保證飛艇航電系統(tǒng)的可靠性、穩(wěn)定性和安全性,必須對IPS進行全方位和多層次的測試[1-3]。由于綜合處理機需要與其他外部設(shè)備互連,為了驗證IPS的功能是否符合要求,需模擬各種外設(shè)來產(chǎn)生測試激勵,并發(fā)送給綜合處理機進行處理。在測試激勵構(gòu)建過程中,數(shù)據(jù)校驗碼的計算是必不可少的環(huán)節(jié)之一。校驗碼可以保證數(shù)據(jù)在傳輸過程中的準確性,因此它對IPS測試的實現(xiàn)起到十分關(guān)鍵的作用[4-5]。綜合處理機與各種外設(shè)之間的信息交互通常需要使用多種校驗方式,這就造成了每種激勵的校驗碼計算方法各不相同,為了提高測試效率,本文提出了一種面向飛艇綜合處理機的校驗碼自動生成軟件設(shè)計方法。在測試激勵構(gòu)建過程中,此軟件很好地解決了校驗碼計算困難的問題,而且為測試人員提供了友好的人機交互界面,通過選擇特定的校驗方式即可自動生成對應(yīng)的校驗碼,節(jié)省了大量的人力和時間成本。此外,該軟件只需要進行少量改動即可應(yīng)用于同類設(shè)備的測試,具有很好的通用性。
為了驗證IPS的功能是否符合要求,必須構(gòu)造各種測試激勵對綜合處理機進行充分的測試。每類測試激勵均由激勵頭、有效數(shù)據(jù)、校驗碼三部分組成,如圖1所示,其中校驗碼可以保證數(shù)據(jù)在傳輸過程中的準確性,對測試激勵的構(gòu)造起到非常關(guān)鍵的作用。
圖1 綜合處理機測試激勵組成
數(shù)據(jù)校驗的基本原理就是在M位二進制數(shù)據(jù)序列之后附加R位二進制校驗碼,從而構(gòu)成一個總長度為N=M+R位的二進制序列,附加在數(shù)據(jù)之后的校驗碼與數(shù)據(jù)序列之間存在某種特定的關(guān)系,若數(shù)據(jù)在傳輸過程中受到干擾,數(shù)據(jù)序列中的某一位或某些位發(fā)生錯誤,這種特定的關(guān)系就會被破壞,因此通過檢查這一關(guān)系就可以實現(xiàn)對數(shù)據(jù)正確性的檢查。飛艇綜合處理機與各種外設(shè)之間的數(shù)據(jù)傳輸共有3種不同的校驗方式,這3種方式均以累加和校驗為基礎(chǔ),累加和校驗是一種被廣泛采用的錯誤檢驗編碼,在通信系統(tǒng)中得到了廣泛應(yīng)用。
飛艇綜合處理機校驗碼自動生成軟件(以下簡稱CAGS軟件)擁有友好的人機交互界面,并且將測試激勵的3種校驗碼計算方法進行了集成,用戶只需輸入測試激勵的有效數(shù)據(jù)部分,并選擇該激勵的校驗方式,然后點擊‘計算校驗碼’按鈕即可自動生成對應(yīng)的校驗碼。校驗碼產(chǎn)生后,在CAGS界面上點擊‘激勵生成’按鈕即可自動生成完整的測試激勵。同時該軟件也支持校驗碼自動保存功能,可以將每條激勵的校驗碼以excel或文本形式自動保存到本地??傊?CAGS軟件很好的解決了測試激勵構(gòu)建過程中校驗碼計算困難的問題,節(jié)省了大量的人力和時間成本,其功能組成如圖2所示。
圖2 CAGS軟件基本功能組成
目前CAGS軟件的開發(fā)工具主要有MFC、Qt以及PyQt等。MFC由微軟公司開發(fā),它可調(diào)用的類中包含了大量Windows句柄封裝類,以減少應(yīng)用程序開發(fā)人員的工作量。但MFC存在一些明顯缺點,比如MFC不能跨平臺,程序只能運行在Windows系統(tǒng),不能運行于Linux等開源系統(tǒng),這就限制了MFC在工程中的廣泛推廣?;谏鲜鎏攸c,CAGS軟件的開發(fā)未使用MFC。
Qt是一款基于C++的跨平臺GUI庫,它包含跨平臺類庫、集成開發(fā)工具和跨平臺的IDE。Qt是完全面向?qū)ο蟮?主要用于GUI程序的開發(fā);同時Qt也是跨平臺的,它適用于Windows、linux等多種操作系統(tǒng)。而PyQt是一種基于Qt圖形程序框架的Python接口,由一組Python模塊構(gòu)成,它是一個創(chuàng)建GUI應(yīng)用程序的工具包,由Phil Thompson進行開發(fā),目前已經(jīng)發(fā)布了PyQt3、PyQt4和PyQt5三個主要版本,其中PyQt5.14是目前最新版本。PyQt5的主要特點如下:
1) 對Qt庫進行完全封裝;
2) 使用信號/槽機制進行通信;
3) 提供了一整套進行GUI程序開發(fā)的窗口控件;
4) 可以跨平臺運行在主要的操作系統(tǒng)上,包括Linux、Windows等;
5) 支持使用Qt的可視化設(shè)計器進行圖形界面設(shè)計。
PyQt將Python和Qt融為一體,PyQt允許使用Python語言調(diào)用Qt庫中的API,這樣做的最大好處就是在保留了Qt高運行效率的同時大大提高了開發(fā)效率。相對于C++語言來說,Python語言的開發(fā)效率要更高,而且其語法簡單、易學(xué)。正是基于上述特點,CAGS軟件采用PyQt5進行開發(fā)。
CAGS軟件具有友好的人機交互界面,測試人員可根據(jù)實際需求來自動生成測試激勵的校驗碼。CAGS的主界面由校驗碼自動生成模塊、測試激勵生成和保存模塊兩部分組成,具體構(gòu)成如圖3所示。
圖3 CAGS軟件界面的組成
由圖3可知,校驗碼自動生成模塊由三部分組成,分別是測試激勵輸入、校驗方式選擇以及校驗碼計算。其中測試激勵輸入部分由Pyqt的TextEdit文本框控件組成,用來輸入激勵的數(shù)據(jù)部分(包括激勵頭和有效數(shù)據(jù));校驗方式選擇部分由ComboBox下拉組合框控件組成,共有3種校驗方式供用戶選擇;而校驗碼計算部分由PushButton功能按鈕來實現(xiàn),通過綁定自定義的槽函數(shù)來實現(xiàn)校驗碼的計算。
測試激勵生成和保存模塊由PushButton按鈕來實現(xiàn),用戶可以將生成的校驗碼與激勵的數(shù)據(jù)部分進行組合,從而生成完整的測試激勵,并通過點擊‘保存至本地’按鈕來完成激勵儲存功能,支持Excel表格和Text文本兩種存儲方式。
在飛艇航電系統(tǒng)中,共有10種外設(shè)與綜合處理機互連和通信,它們分別是左/右發(fā)參采集器、壓控計算機、飛控計算機、矢量控制器、航姿控制器、左/右油量傳感器、電臺以及應(yīng)答機。綜合處理機與各種外設(shè)之間的信息交互共有3種校驗方式,其中左/右發(fā)參采集器、航姿控制器、左/右油量傳感器、電臺以及應(yīng)答機屬于校驗方式1,它們的校驗碼為字節(jié)累加和以256為模的補碼;壓控計算機和飛控計算機屬于校驗方式2,其校驗碼為字節(jié)累加和,且校驗碼位于測試激勵最后一個字節(jié);而矢量控制器屬于校驗方式3,其校驗碼為字節(jié)累加和,且校驗碼位于測試激勵倒數(shù)第二個字節(jié),這3種校驗碼的計算方法如圖4所示。
圖4 綜合處理機校驗碼的計算原理
由圖4可知,對于校驗方式1,首先需要將測試激勵的數(shù)據(jù)部分Sdec轉(zhuǎn)化為16進制Shex,然后對各個字節(jié)進行累加求和得到Ssum,并將Ssum以256取模得到Smod,最后計算Smod的補碼就可得到最終的校驗碼,在構(gòu)造測試激勵時將校驗碼置于最后一個字節(jié)即可。對于校驗方式2和3,只需將測試激勵的數(shù)據(jù)部分Sdec按字節(jié)累加求和就可以得到最終的校驗碼,這兩種校驗方式的主要區(qū)別是校驗碼在整個測試激勵中的位置,其中校驗方式2中的校驗碼位于測試激勵的最后一個字節(jié),而校驗方式3中的校驗碼位于測試激勵倒數(shù)第二個字節(jié)。
CAGS軟件的測試運行主界面如圖5所示。經(jīng)過多次測試,CAGS軟件運行穩(wěn)定,在飛艇綜合處理機測試中,能夠自動生成各類測試激勵的數(shù)據(jù)校驗碼,從而保證數(shù)據(jù)在傳輸過程中的準確性和有效性。同時,整個軟件具有較好的人機交互性,通過點擊界面按鈕即可完成相應(yīng)的功能,測試人員使用起來非常方便,明顯提高了測試效率。此外,CAGS軟件具有一定的通用性,后續(xù)根據(jù)不同軟件的額外需求,也可對程序進行少量適應(yīng)性改動即可適配。
圖5 CAGS軟件的測試運行主界面
校驗碼自動發(fā)送軟件對飛艇綜合處理機測試效率的提高起到了十分關(guān)鍵的作用,該軟件具有友好的人機交互界面,可以自動生成各類測試激勵的數(shù)據(jù)校驗碼,明顯提高了測試效率,并節(jié)省了大量的人力和時間成本,在實際測試工作中取得了很好的效果。此外,該軟件具有較好的通用性,只需要對程序進行少量適應(yīng)性改動即可滿足其他設(shè)備的測試要求,同時也提高了測試設(shè)備的復(fù)用率。