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