程小軍,林回祥
(中國電子科技集團(tuán)公司第三十八研究所 軟件系統(tǒng)研究部,安徽 合肥 230031)
浮空器在升空過程中會(huì)處于不同的環(huán)境中[1-2],地面與浮空器之間甚至艇載軟件之間的指令信號(hào)都容易受到干擾。盡管通過指令編碼和校驗(yàn)方式可以在一定程度上減輕錯(cuò)誤指令出現(xiàn)的概率[3],但為了進(jìn)一步確保指令的正確性,還需要增加其他手段[4-5],比較常見的有“3”判“2”或者“5”判“3”甚至更大數(shù)量的余度指令判別法。這種判別方法是:在規(guī)定的時(shí)間內(nèi)連續(xù)接收到多組指令,只要其中有規(guī)定數(shù)量的相同指令A(yù),指令A(yù)就是有效的。
本文根據(jù)實(shí)際應(yīng)用需要,研究了一種基于滑窗的余度指令判別算法。
在浮空器關(guān)鍵指令處理過程中,特別是在下位機(jī)(控制執(zhí)行機(jī)構(gòu))對(duì)關(guān)鍵指令進(jìn)行處理時(shí),不但需要根據(jù)幀頭、幀尾、數(shù)據(jù)長度、指令標(biāo)簽以及校驗(yàn)和等多個(gè)特征點(diǎn)對(duì)指令進(jìn)行合理性判斷,還要求上位機(jī)能在規(guī)定時(shí)間內(nèi)發(fā)出多條相同指令,從而以“3”判“2”或者“5”判“3”來獲取有效指令。一般多余度指令處理模型如圖1所示。
圖1 多余度指令處理模型
值得注意的是,實(shí)際應(yīng)用情況要比理想狀態(tài)要復(fù)雜得多。比如,接收的指令可能有連續(xù)多組關(guān)鍵指令,或者是一般指令和關(guān)鍵指令交叉存在。于是,干擾問題和時(shí)序問題會(huì)造成多條相同指令之間夾雜著其他指令的現(xiàn)象,這時(shí)普通的多余度指令處理方法就可能會(huì)失效。失效情況如圖2所示。對(duì)關(guān)鍵指令采取“5”判“3”判斷,假設(shè)在第N-1個(gè)余度判斷時(shí),下位機(jī)收到5個(gè)指令(編號(hào)為奇數(shù)的指令為關(guān)鍵指令),分別是指令1、指令1、指令2、指令3、指令3,即關(guān)鍵指令在該次判斷里不能得到執(zhí)行,因而被拋棄。在第N個(gè)余度判斷里,接著接收后面的指令,分別為指令3、指令3(指令3丟失1個(gè))、指令4、指令5、指令5,同樣,關(guān)鍵指令仍不能得到執(zhí)行。第N+1個(gè)余度判斷情況與第N個(gè)余度判斷一樣(指令5丟失1個(gè))??梢钥闯?,只要關(guān)鍵指令丟失一個(gè),就容易造成執(zhí)行不成功的情況。若在相同的5個(gè)關(guān)鍵指令中間還存在其他指令,就更容易出現(xiàn)失效情況。另外,對(duì)于非關(guān)鍵指令,究竟是當(dāng)作干擾還是當(dāng)作正確指令予以執(zhí)行也是個(gè)需要思考的問題。
本文正是基于這些失效情況的考慮,提出一種新的判別算法。
圖2 普通多余度指令處理失效情況
針對(duì)普通余度指令算法存在的不足,本文給出一種基于滑窗的余度指令判別算法。該算法分為以下幾步,其流程圖如圖3所示。
圖3 基于滑窗的余度指令判別算法流程
步驟1:判斷接收到的指令是否是關(guān)鍵指令,若不是,則直接執(zhí)行該指令;若是,則將其放入緩存(一共可以保存5個(gè)指令)中。
步驟2:如果緩存滿,則執(zhí)行“5”判“3”規(guī)則,未滿則繼續(xù)接收指令。
步驟3:如果其中有3個(gè)相同的關(guān)鍵指令,則執(zhí)行對(duì)應(yīng)的關(guān)鍵指令。移除最舊指令(若存在多個(gè)連續(xù)的指令,則全部移除),將未移除的指令向前移動(dòng),留出的緩存空間繼續(xù)接收關(guān)鍵指令。
步驟4:步驟1—步驟3往復(fù)進(jìn)行。如果在規(guī)定的時(shí)間內(nèi)沒有關(guān)鍵指令到來,則清空緩存。
在滑窗移動(dòng)過程中,可以確保連續(xù)指令(只要大于三個(gè)就可以)得到執(zhí)行。注意到,如果關(guān)鍵指令要能夠得到執(zhí)行,其中間最多可以夾雜2個(gè)其他關(guān)鍵指令。當(dāng)中間夾雜的其他關(guān)鍵指令超過2個(gè)時(shí)(比如,地面遙控時(shí),指令因?yàn)樾盘?hào)不好導(dǎo)致部分指令丟失嚴(yán)重的情況),該算法就難以應(yīng)付了。這與我們的“5”判“3”規(guī)則有關(guān)。如果規(guī)則要求只要在規(guī)定的時(shí)間內(nèi)接收到三組同樣的關(guān)鍵指令就可以執(zhí)行相應(yīng)的控制,則可以采取多個(gè)余度指令緩存接收不同指令的方式或者采取更大緩存空間的方式。本文對(duì)此不作展開論述。
為了驗(yàn)證本文所提算法的有效性,本節(jié)通過大量的測(cè)試用例給予說明。在指令輸入端,分別輸入10萬組指令,并在傳輸過程注入一定概率的指令錯(cuò)誤。在指令接收端通過冗余指令判別算法提取指令。通過對(duì)普通算法和本文算法的比較,展示本文算法的優(yōu)勢(shì)。針對(duì)指令錯(cuò)誤概率分別為10%、 0.1%、以及無錯(cuò)誤等3種情況進(jìn)行仿真,輸入指令包括4組關(guān)鍵指令和4組普通指令,隨機(jī)選取這8組指令之一輸入到系統(tǒng),并且保證每次輸入關(guān)鍵指令時(shí)都能連續(xù)輸入5組以利于“5”判“3”的實(shí)現(xiàn),得到表1-表3的運(yùn)行結(jié)果。
表1 指令錯(cuò)誤為10%下的測(cè)試結(jié)果
續(xù)表1
指令傳輸錯(cuò)誤率10%(10萬組)第1次采樣(指令個(gè)數(shù))第2次采樣(指令個(gè)數(shù))第3次采樣(指令個(gè)數(shù))輸入指令普通指令冗余解算本文指令冗余解算輸入指令普通指令冗余解算本文指令冗余解算輸入指令普通指令冗余解算本文指令冗余解算一般指令1534148024802523946794679534048044804一般指令2494444564456493144424442489744114411一般指令3481043504350481143304330491144074407一般指令4498444634463501045374537494144314431
表2 指令錯(cuò)誤為0.1%下的測(cè)試結(jié)果
表3 無指令錯(cuò)誤下的測(cè)試結(jié)果
為了針對(duì)性地展示結(jié)果,表1-表3所得結(jié)果要求系統(tǒng)不可將兩個(gè)相同的關(guān)鍵指令組挨在一起(表4所對(duì)應(yīng)的條件卻可以),從表中所展示的數(shù)據(jù)可以看出:
(1)本文所給出的算法相比普通指令不易丟失指令;
(2)兩種算法對(duì)普通指令都能夠順利提取;
(3)隨著指令錯(cuò)誤概率的降低,兩種算法都趨于完全提取出指令,在無錯(cuò)誤注入時(shí)能完全解析出所有指令。
對(duì)于第(3)條結(jié)論,是建立在系統(tǒng)在輸入指令時(shí)不可將兩個(gè)相同的關(guān)鍵指令組挨在一起的條件下(中間可以有普通指令),對(duì)于違反這個(gè)條件的情況見表4。
從表4可以看出,普通冗余算法得到的關(guān)鍵指令個(gè)數(shù)竟然超出了輸入的關(guān)鍵指令數(shù),這是因?yàn)閮山M關(guān)鍵指令一共有10個(gè),如果中間有其他指令,則普通冗余算法根據(jù)其接收的先后順序會(huì)將關(guān)鍵指令拆成三個(gè)部分,導(dǎo)致根據(jù)“5”判“3”所解算的指令個(gè)數(shù)超出實(shí)際組數(shù)。然而,本文所提算法卻并未出現(xiàn)這種情況。
表4 關(guān)鍵指令組挨在一起的測(cè)試結(jié)果
本文針對(duì)普通余度指令判斷算法存在的問題,提出了一種基于滑窗的余度指令判斷算法。該算法能夠避免連續(xù)指令得不到執(zhí)行的問題,在處理關(guān)鍵指令問題上具有一定優(yōu)勢(shì)。且在浮空器的關(guān)鍵指令執(zhí)行為應(yīng)用平臺(tái)進(jìn)行驗(yàn)證過程中,大量的測(cè)試用例成功執(zhí)行表明該算法具有較大的工程實(shí)用價(jià)值。
[1] 王蓮英,楊柳,張功學(xué),等.浮空器的關(guān)鍵技術(shù)探討[J].飛航導(dǎo)彈,2013(7):30-33.
[2] 楊秉,楊健,李小將,等.臨近空間浮空器運(yùn)行環(huán)境及其影響[J].航天器環(huán)境工程,2008,25(6):555-557.
[3] 賁宗玉.某型無人機(jī)導(dǎo)航控制研究與軟件實(shí)現(xiàn)[D].西安:西北工業(yè)大學(xué),2007.
[4] 楊柳慶,肖前貴,劉久富. 無人機(jī)飛控軟件抗干擾設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,24(5):52-53.
[5] 楊林芳.無人機(jī)容錯(cuò)飛行控制系統(tǒng)研究[D].南京:南京航空航天大學(xué),2007.