呂俊巧,邢立偉,孫文靖,劉耀文
(1.北京京航計算通訊研究所,北京 100074;2.北京機電工程研究所,北京 100074)
為了實現靈活機動的飛行,制導控制系統(tǒng)功能日益復雜,建模和算法也更加復雜,相應的軟件質量直接關系到性能指標的實現和試驗任務的成敗,而基于系統(tǒng)工作原理進行故障模式分析和測試,能夠發(fā)現較深層次的設計問題,是保障軟件質量的重要技術手段。
對于機動飛行控制的實現,目前在縱向通道或者側向通道的單一的機動變軌策略已經較為成熟,例如縱向通道的躍起或者下滑、側向通道的扇面轉彎或者“S”形機動等,相應的制導控制律主要解決各自通道的軌跡切換時序和姿態(tài)穩(wěn)定控制,功能較簡單,軟件可靠性較高。
但某些少數情況下需要采用縱向和側向雙通道耦合控制的機動策略,目前這方面的工程應用經驗較少,相應的故障模式和檢測測試技術也較少,本文結合實際應用進行深入研究,通過在縱向和側向通道分別進行運動學、動力學建模,引入控制律,得到全空間的仿真軌跡。通過分析縱向和側向通道的控制律之間的耦合關系,在機動區(qū)間內引入風干擾影響分析,建立風干擾模型,在機動結束的關鍵狀態(tài)切換點充分考慮可能的邏輯分支和流程時序,提取可能的故障模式,設計相應的測試用例,進行故障注入,全面覆蓋路徑分支,避免遺漏可能的錯誤狀態(tài),從而實現將算法分析與軟件測試方法相結合的目的,檢測出軟件缺陷,達到從系統(tǒng)設計和程序實現兩方面保障軟件質量的效果[1-2]。
某機動飛行區(qū)間的縱向和側向通道理論軌跡分別如圖1、圖2所示。
圖1 縱向通道理論軌跡示意圖
圖2 側向通道理論軌跡示意圖
飛行初始狀態(tài)為平飛,到達導航點A開始縱向爬升,到達導航點B開始側向轉彎,而后到達導航點C縱向轉為平飛,同時側向轉彎結束并返回直飛狀態(tài)。從點B到點C是縱向和側向同時進行機動變軌飛行的區(qū)間,縱向先爬升再轉平飛,側向轉彎再恢復直線飛行,相當于在躍起過程中進行扇面轉彎機動,是一種比較復雜的機動飛行狀態(tài),需要縱向俯仰和側向滾動兩個通道同時啟動控制時序并協(xié)調切換控制律,容易產生邏輯交聯和耦合關系,造成控制效果不穩(wěn)定或者達不到期望值。所以在測試中要重點關注控制狀態(tài)切換點及其時序組合的影響因素,從分析算法及其干擾因素入手發(fā)現程序中潛在的邏輯風險[3-4]。
在圖1、圖2的理論軌跡中,從點B到點C是縱向和側向同時進行機動變軌飛行的區(qū)間,縱向先爬升再轉平飛,側向連續(xù)進行入彎和出彎控制,相當于在躍起過程中進行扇面轉彎機動,是一種比較復雜的機動飛行狀態(tài)。在制導控制律的設計中,當縱向通道中爬升轉平飛條件滿足時,會將側向通道控制模式置為“恢復直線飛行”狀態(tài),這樣點C既是縱向爬升轉平飛點,又是側向轉彎結束點。
實際中,多種干擾因素會導致飛行偏離理論軌跡,影響狀態(tài)切換和飛行時序的準確實現,其中風干擾是最為常見的重要影響因素。由于陣風等實際干擾因素的影響,當縱向通道中爬升轉平飛條件滿足時,側向通道的實際狀態(tài)有可能是轉彎結束的“直線飛行狀態(tài)”,也可能還處于“出彎過程中(恢復直飛狀態(tài)前)”[5]。
在機動飛行區(qū)間內,俯仰通道控制律主要采用俯仰角和高度控制,同時受到滾轉角的修正作用,如式(1)所示;側向通道控制規(guī)律主要采用滾動角和側向位置控制,如式(2)所示。俯仰和滾動兩個通道同時啟動控制時序并協(xié)調切換控制律,容易產生邏輯交聯和耦合關系,造成控制效果不穩(wěn)定或者達不到期望值。
(1)
(2)
另外,此處采用工程應用中簡化的縱向通道和側向通道的運動和控制模型,分別如式(3)和式(4)所示。
(3)
(4)
機動區(qū)間內,縱向通道和側向通道的控制流程如圖3、圖4所示。
圖3 縱向通道控制流程示意圖
圖4 側向通道控制流程示意圖
圖3中,縱向在機動開始后,首先按照飛行參數和爬升控制律進行彈道積分計算,判斷彈道實際狀態(tài)是否到達轉平飛條件,如果不滿足條件就繼續(xù)采用爬升控制律并返回到彈道積分計算的步驟,如果滿足條件則將縱向轉平飛標志和側向轉直線飛行標志同時置為有效并切換為直線平飛階段的控制律,縱向機動結束。
圖4中,側向在機動開始后,首先按照飛行參數和側向轉彎控制律進行彈道積分計算,判斷側向直線飛行標志是否有效(注意此處沒有判斷彈道的實際狀態(tài)是否到達轉彎結束點),如果不滿足條件就繼續(xù)采用轉彎控制律并返回到彈道積分計算的步驟,如果滿足條件則切換為直線平飛階段的控制律,側向機動結束。
按照上述控制流程進行正常模式和故障模式分析如下。
模式1:如果縱向通道中爬升轉平飛條件滿足時,側向通道的實際狀態(tài)已經是“直線飛行”,兩通道各自正常飛行,為理論彈道的期望設計狀態(tài),對整體飛行無異常影響。
模式2:如果由于某些干擾影響,縱向通道中爬升轉平飛條件滿足時,側向通道的實際狀態(tài)是“出彎過程中”,而此時控制量卻轉為按照直線控制狀態(tài)進行小幅度糾偏控制。由于并沒有完成期望的側向轉彎過程,此時的側向速度偏差、位置偏差較大,很快使舵面達到限幅值,因控制能力不足開始滾動,滾轉角經反饋控制后穩(wěn)定在某個較大值,側向位置偏差極易超出安控邊界,如圖5所示。
圖5 側向偏移示意圖
同時當側向滾動角突然變?yōu)檩^大值時,依據縱向信號計算公式修正程序俯仰角,使俯仰控制信號突然增加,開始抬頭爬升,在縱向平面處于一個穩(wěn)定的爬升過程,偏離理論設計彈道,直到安控邊界,如圖6所示。
圖6 縱向高度示意圖
模式3:如果由于某些干擾影響,縱向通道中爬升轉平飛條件滿足時,側向通道的實際狀態(tài)是“轉彎結束越過原航向進入反向轉彎”,而此時控制量卻轉為按照原航向直線控制狀態(tài)進行小幅度糾偏控制。對側向和縱向彈道的影響與模式2中類似。
對于狀態(tài)較為復雜的飛行,軟件測試中要重點關注控制狀態(tài)切換點及其時序組合,從算法和系統(tǒng)工作流程入手,全面分析各判斷分支的觸發(fā)條件,發(fā)現程序中潛在的邏輯風險,避免漏測,增加覆蓋率[5-6]。
針對縱向和側向同時機動帶來的雙通道耦合控制的潛在風險,在各自通道內引入風干擾拉偏,并分析對控制實現的影響,在縱向機動結束轉平飛的切換點,應該對實際的滾動通道狀態(tài)和對應標志位進行驗證和確認,若有交聯耦合關系要充分列舉可能的狀態(tài)并設計測試用例。主要從邏輯測試、邊界測試和安全性測試等方面加強分析,軟件的動態(tài)測試用例要正確且覆蓋全面[7-8]。
① 對控制律切換的時序進行嚴密的邏輯分析,覆蓋相關的流程分支,并設計測試用例,以免遺漏可能的錯誤狀態(tài)。本文中的理論彈道設計意圖是:在爬升轉平飛的切換點將側向通道的滾動控制標志位切換為直線控制狀態(tài),這種設計未考慮干擾和建模不確定性等因素的影響,隱藏著風險,所以測試中需要在合適的節(jié)點加入風干擾模型(見圖3、圖4中的風干擾模塊),以驗證算法的準確性[9]。
② 在縱向機動和側向機動區(qū)間的端點,要進行邊界測試,驗證狀態(tài)切換邊界實現的安全可靠性。
③ 安全性測試應關注對故障情況的容錯或者避錯設計,在故障變?yōu)槭坝枰宰R別并處理,驗證飛行控制程序的安全性能。
根據上述分析,基于機動區(qū)間的狀態(tài)切換流程,利用邏輯覆蓋法、邊界值分析和錯誤推測法等測試技術進行測試用例設計,驗證機動后的滾動通道直線控制狀態(tài)的判定處理是否正確[10]。
對軟件功能進行邏輯覆蓋測試,執(zhí)行正常功能的測試用例,再通過程序插樁增加風干擾,設計異常情況下的測試用例,驗證軟件的異常處理功能。具體是在縱向和側向分別增加垂直風干擾和側風干擾(合理范圍為0~40 m/s),使實際彈道的機動結束點與設計點不一致。設計具體用例如表1所示。
表1 邏輯覆蓋測試用例設計
f1為縱向機動狀態(tài)的標志位。f1=0:縱向風干擾為0(縱向機動按照設計點完成并轉平飛);f1=-1:縱向增加垂直逆風30 m/s(縱向機動比設計點延遲完成);f1=1:縱向增加垂直順風30 m/s(縱向機動比設計點提前完成)。
f2為側向機動狀態(tài)的標志位。f2=0:側向風干擾為0(側向機動按照設計點完成并轉直飛);f2=-1:側向增加逆風30 m/s(側向機動比設計點延遲完成);f2=1:側向增加順風30 m/s(側向機動比設計點提前完成)。
f3為機動結束設計點的縱向控制的標志位,f3=0:縱向轉平飛控制 ;f3=-1:縱向爬升控制;f3=1:縱向降高控制。
f4為機動結束設計點的側向控制的標志位。f4=0:側向機動轉直飛控制;f4=-1:側向轉彎控制;f4=1:側向反向轉彎控制。
從實際執(zhí)行結果可以看出,當縱向與側向的機動結束狀態(tài)一致時,實際測試結果與期望結果是一致的;當縱向與側向的機動結束狀態(tài)不一致時,實際測試結果與期望結果是不一致的。
由于控制流程中將縱向機動結束點作為側向機動結束標志位的同步觸發(fā)條件,所以通過邊界測試重點對機動結束的設計點的雙通道狀態(tài)匹配情況進行驗證。
以縱向機動的正常結束點和對應的側向機動實際狀態(tài)作為測試輸入,通過程序插樁增加側向的逆風或者順風干擾,設計測試用例如表2所示。
表2 機動區(qū)間右端點的邊界測試用例設計
從實際執(zhí)行結果可以看出,當縱向與側向的機動狀態(tài)一致時,實際測試結果與期望結果是一致的;當縱向與側向的機動狀態(tài)不一致時,實際測試結果與期望結果是不一致的,測試未通過。
分析軟件實現所依據的飛行控制策略和流程,縱向通道切換控制模式的同時也觸發(fā)側向通道控制模式的切換(見圖3中的紅色虛線框),而外界干擾的不確定性會導致實際兩通道控制模式的不一致,屬于軟件設計缺陷。
根據經驗對關鍵切換點進行錯誤推測以驗證安全性,復用3.2節(jié)中表2的測試用例2和測試用例3,在邊界上的側向增加逆風30 m/s(側向延遲到達)和順風30 m/s(側向提前到達),形成安全性測試類型的測試用例。可以看出,在受到風干擾影響后,機動結束點的雙通道控制仍然沿用理論設計值,沒有根據實際飛行狀態(tài)切換到所需的控制流程,說明算法設計中沒有考慮對關鍵切換點異常的容錯設計。
筆者研究了一類機動飛行模式的算法,并進行了故障注入、檢測,提取了相應的測試方法和軟件設計準則。
① 基于系統(tǒng)工作原理和流程分析進行建模分析和測試場景設計,包括正常的和異常的,關注對異常分支的容錯和避錯設計,有利于檢查系統(tǒng)和軟件的可靠性和正確性。
② 在測試方法研究中,測試用例設計要結合真實有效的數據模擬進行,對數據的形式和注入方式、故障模式的覆蓋都要充分考慮,避免漏測。
① 關鍵狀態(tài)點切換的條件和流程分支判斷標準要充分準確,在雙通道耦合控制的設計中要充分考慮干擾等建模不確定性的影響,增加控制律的魯棒性設計。
② 針對算法較為復雜的軟件,應該采用故障樹分析(FTA)、失效模式影響及危害分析(FMECA)等方法,找出影響安全性的關鍵功能或者潛在的失效隱患,例如時序錯誤、量值超限、環(huán)境干擾等,制定相應的安全響應措施或者容錯設計。
綜上,通過軟件的算法分析加強對程序邏輯結構的深入了解,進而定位相應的設計風險和邏輯隱患,設計有針對性的故障注入或測試用例,保障測試的功能覆蓋的充分性和安全可靠性,對于實現機動、靈活、快速的控制能力有重要保障意義,是對關鍵復雜軟件開展測試工作的重要研究方向。