史海龍,王晶晶,化斌斌,任成才,杜 偉
(1.解放軍63850 部隊,吉林 白城 137001;2.解放軍32200 部隊,遼寧 錦州 121000)
在高炮武器系統(tǒng)設(shè)計定型試驗中,高炮停止間對勻速直線運動目標(biāo)的動態(tài)射擊諸元精度是重要的指標(biāo),為考核此指標(biāo),需要進行動飛試驗。在試驗中,要求在每天試驗后進行數(shù)據(jù)處理,及時用數(shù)據(jù)處理結(jié)果判定被試品、參試品和測試設(shè)備狀態(tài)是否正常,避免在耗盡所有的航架次后才發(fā)現(xiàn)試驗存在問題,造成整個動飛試驗數(shù)據(jù)的作廢。要在整個飛行試驗期間既給出試驗結(jié)果而又不影響試驗進度,則要求標(biāo)準(zhǔn)值程序在動飛試驗前即可保證正確性,否則由于程序調(diào)試時間不可控制,會造成試驗進度延后。目前,勻速直線運動目標(biāo)的射擊諸元算法在理論上相對成熟[1-6],但不存在一個通過驗證的射擊諸元精度統(tǒng)計程序,能夠在動飛試驗前保證解算結(jié)果的正確性。
在定型試驗中,認(rèn)為經(jīng)過了實際試驗檢驗的程序可保證正確性。要完成這一目標(biāo),可以通過兩種方式保證程序正確。第1 種是建立起通用的標(biāo)準(zhǔn)值解算程序,使程序適用于現(xiàn)在和未來的武器系統(tǒng),此程序經(jīng)過一個試驗的驗證后,即可保證在后續(xù)的試驗中此程序正確。由于不同試驗標(biāo)準(zhǔn)值設(shè)備不同、被試品數(shù)據(jù)采集設(shè)備不同,武器系統(tǒng)坐標(biāo)系定義不同,武器系統(tǒng)彈種的不同,在計算過程中涉及到的數(shù)據(jù)讀取、坐標(biāo)平移、坐標(biāo)旋轉(zhuǎn)、球坐標(biāo)與直角坐標(biāo)互換、標(biāo)準(zhǔn)值坐標(biāo)系與被試品坐標(biāo)系的互換、靜態(tài)射擊諸元解算等部分都很難建立通用的算法,因此,建立通用的射擊諸元解算程序不可實現(xiàn)。第2種是每個試驗前都重新編寫程序,然后建立測試用例[7],通過嚴(yán)格的軟件測評保證程序正確性。此種方法也難以實施。目前要求采用的測試機制為雙人對算制。雙人對算制難以找到兩個數(shù)據(jù)處理人員,另外沒有經(jīng)過實際試驗驗證,即使有兩人也難以保證程序正確。如兩人雖然結(jié)果相同,但同時計算錯誤;或兩人結(jié)果不同,但不能確定哪人錯誤。
本文通過定義標(biāo)準(zhǔn)值設(shè)備、數(shù)據(jù)采集設(shè)備和程序間的協(xié)議,定義標(biāo)準(zhǔn)坐標(biāo)系,應(yīng)用開放-封閉原則[8],建立了高炮射擊諸元精度統(tǒng)計算法,并依此算法編寫了程序,嚴(yán)格區(qū)分程序中變化與不變的部分,將變化部分壓縮到局部,使程序只需編寫射擊諸元的靜態(tài)解題部分,即可以復(fù)用原有程序,解算動態(tài)精度。并建立了測試機制,使程序中不變部分和變化部分,在動飛試驗前都經(jīng)過了實際試驗的檢驗,保證了程序的正確性。
標(biāo)準(zhǔn)坐標(biāo)系S:以北為Y 軸正向,以東為X 軸正向,垂直向上為Z 軸正向,X 軸Y 軸Z 軸構(gòu)成右手坐標(biāo)系,原點采用一個預(yù)先定義的點。方位角以北為0,逆時針旋轉(zhuǎn)為正,高低角以水平面為0,向上旋轉(zhuǎn)為正。
標(biāo)準(zhǔn)站心坐標(biāo)系C:原點與武器系統(tǒng)坐標(biāo)系原點重合,以北為Y 軸正向,以東為X 軸正向,垂直向上為Z 軸正向,X 軸Y 軸Z 軸構(gòu)成右手坐標(biāo)系。方位角以北為0,逆時針旋轉(zhuǎn)為正,高低角以水平面為0,向上旋轉(zhuǎn)為正。
射表坐標(biāo)系F,原點和坐標(biāo)軸與站心坐標(biāo)系重合,各坐標(biāo)軸及球坐標(biāo)定義方法由采用的射表確定。
標(biāo)準(zhǔn)載體坐標(biāo)系V:原點與武器系統(tǒng)坐標(biāo)系原點重合,Y 軸與武器系統(tǒng)縱軸平行,指向前方為正,X 軸與武器系統(tǒng)橫軸平行,直線武器系統(tǒng)右側(cè)為正,Z 軸與X 軸和Y 軸構(gòu)成右手坐標(biāo)系。方位角以車體縱軸為0,逆時針旋轉(zhuǎn)為正,高低角以O(shè)XY 平面為0,向上旋轉(zhuǎn)為正。
武器系統(tǒng)(被試品)坐標(biāo)系T:不同的武器系統(tǒng)定義不同。在定義球坐標(biāo)時,常見的有兩種定義方法。第1 種是方位角以南為0,逆時針旋轉(zhuǎn)為正;高低角與載體平面為0,向上為正。第2 種是方位角以北或車體縱軸為0,順時針旋轉(zhuǎn)為正;高低角與載體平面為0,向上為正。
標(biāo)準(zhǔn)值坐標(biāo)系、站心坐標(biāo)系和載體坐標(biāo)系都是右手坐標(biāo)系,被試品坐標(biāo)系根據(jù)武器系統(tǒng)的不同,由系統(tǒng)定義。
圖1 解靜態(tài)射擊諸元
FiringData 模塊是開放-封閉原則中的開放部分,采用式(1)的接口定義方法,針對不同的武器系統(tǒng)射表編程實現(xiàn)。
圖1 中的方法主要針對非轉(zhuǎn)管高炮,對于轉(zhuǎn)管速射炮,可查閱相關(guān)資料[10-12]。
建立FiringData 模塊后,即可建立通用算法,數(shù)據(jù)處理過程如圖2 所示。
圖2 射擊諸元標(biāo)準(zhǔn)值處理過程
標(biāo)準(zhǔn)坐標(biāo)系下的航路坐標(biāo)數(shù)據(jù)Sl,通過Translate 模塊變換到標(biāo)準(zhǔn)站心坐標(biāo)系下,得變換后的航路數(shù)據(jù)Cl,通過FutruePoints 模塊求得未來點Cp,求得標(biāo)準(zhǔn)站心坐標(biāo)系下的射擊諸元Cd,再變換到標(biāo)準(zhǔn)載體坐標(biāo)系下,得Vd。被試品數(shù)據(jù)Td'變換到載體坐標(biāo)系下,與標(biāo)準(zhǔn)值數(shù)據(jù)比較,得到一次差,進行精度統(tǒng)計。
Translate 公式為:
對于輸入的標(biāo)準(zhǔn)站心坐標(biāo)系下的航路坐標(biāo)數(shù)據(jù)Cl,通過FuturePoints 求出標(biāo)準(zhǔn)站心坐標(biāo)系下的未來點Cp。FuturePoints 輸入是現(xiàn)在點的序列,輸出是未來點的序列,F(xiàn)uturePoints 對于每個點,使用圖3方法。
圖3 通用逆解法
圖3 中方法為逆解法,對每一個點,通過查定型的射表,可以得到彈飛時間,用當(dāng)前的時間減去彈飛時間,可以構(gòu)成一個未來點的序列。如果采用順接法,過程如圖4 所示。
解出未來點就可以通過查射表的方式,用FiringDatas 函數(shù)解出對應(yīng)的射擊諸元,F(xiàn)iringDatas 對每一個點調(diào)用式(1)定義的FiringData,得到Cd。
圖4 通用順解法
變換后再通過Rotate 模塊進行坐標(biāo)旋轉(zhuǎn),Rotate 公式為:
再通過Rect2Sphere 模塊轉(zhuǎn)化為球坐標(biāo):
圖2 中,對被試品數(shù)據(jù)通過Testee2Std 模塊進行了預(yù)處理,將載體坐標(biāo)系下的被試品數(shù)據(jù)變換到標(biāo)準(zhǔn)載體坐標(biāo)系中。被試品坐標(biāo)系到標(biāo)準(zhǔn)載體坐標(biāo)系的變換比較簡單。如對某型自行高炮,方位角以北或車體縱軸為0,順時針旋轉(zhuǎn)為正,可采用如下變換:
對于某型牽引高炮,方位角以南為0,逆時針旋轉(zhuǎn)為正,則不需進行變換。
此部分是開放-封閉原則中的封閉部分,包括對現(xiàn)在點標(biāo)準(zhǔn)值的坐標(biāo)平移、旋轉(zhuǎn)、未來點解算、直角坐標(biāo)與球坐標(biāo)的互換,通用于不同的武器系統(tǒng)。
解出射擊諸元后,由于與被試品數(shù)據(jù)的時間取樣間隔不一致,還要對解出的標(biāo)準(zhǔn)未來點插值來進行時間對齊,使標(biāo)準(zhǔn)值數(shù)據(jù)域被試品數(shù)據(jù)的取樣間隔一致。插值公式為:
式中:
然后相減,得到一次差。最后采用GJB3856-99[14]或GJB74A-98[15]的方法進行統(tǒng)計,如需要,還可進一步推導(dǎo)時空特性[16-17]??梢酝茖?dǎo)出,對于方位角以北或車體縱軸為0,順時針旋轉(zhuǎn)為正,最終的系統(tǒng)誤差和均方差,高低角不用再進行處理,對于方位角,用式(10)處理:
對于方位角以南為0,逆時針旋轉(zhuǎn)為正的系統(tǒng),則不需進行變換,輸入時將航向角h 設(shè)為3 000 mil。
對于Testee2Std 部分,通過定義數(shù)據(jù)采集設(shè)備的輸出格式,可以使數(shù)據(jù)采集設(shè)備直接輸出載體坐標(biāo)系下的射擊諸元,不需要編程處理。
程序不變部分對于不同的武器系統(tǒng)是通用的,因此,此部分只要通過了一次充分驗證,即可認(rèn)為此部分正確。
本文中的程序初次應(yīng)用在某型履帶式雙管自行高炮定型試驗中。在驗證過程中,本文中用C++編寫的程序與研制方用basic 編寫的程序進行對算,結(jié)果不同時,采用單步調(diào)試的方式對算每步的計算結(jié)果。出現(xiàn)爭議時,邀請試驗負(fù)責(zé)人采用手工計算的方式估算出大致結(jié)果,與程序的計算結(jié)果交互驗證。雙方的程序解算結(jié)果一致后,又經(jīng)過了正樣機試驗和定型試驗的驗證,確保了不變部分的正確性。
第一次對算保證程序正確后,在后續(xù)的定型試驗中,則只對靜態(tài)解題結(jié)果進行對算。在設(shè)計定型試驗前,本程序與火控計算機的靜態(tài)解題結(jié)果進行對算,如果誤差在規(guī)定范圍內(nèi),則認(rèn)為程序正確,程序可以用于動態(tài)射擊諸元精度考核;如果誤差超過規(guī)定范圍,則與火控計算機研制人員共同尋找原因,確定是火控計算機錯誤還是標(biāo)準(zhǔn)值計算程序錯誤,直至結(jié)果正確。
由于靜態(tài)解題試驗安排在動飛試驗前,因此,可保證程序在動態(tài)飛行試驗前變化與不變的部分都經(jīng)過實際試驗檢驗。
從射擊諸元解算角度,對于目前非轉(zhuǎn)管的高炮武器設(shè)計定型試驗動態(tài)射擊諸元數(shù)據(jù)處理可以分為兩類:一類是射表不變。由于目前高炮武器的發(fā)展以信息化方向發(fā)展為主,很少研制新的口徑,彈種的發(fā)展與武器本身的發(fā)展相對獨立。因此,設(shè)計定型試驗可能是彈種不變,即射表不變,比如同一口徑的火炮,可以有輪式、履帶式、牽引式,其他方面改變,射表不變。另一種是試驗中要測試一種新的彈種,即射表改變。
對于第1 類武器,即射表不變的武器,通過建立通用的算法,可以保證程序不變。對于第2 類武器,則程序中改變射表相關(guān)部分,將計算動態(tài)射擊諸元的復(fù)雜度變?yōu)橛嬎愣c解題的復(fù)雜度,然后通過靜態(tài)解題試驗確定程序的正確性。
例1:在某型輪式單管自行高炮武器系統(tǒng)的定型試驗中,其采用的射表與之前定型的某型履帶式雙管自行高炮武器系統(tǒng)射表相同,則在試驗中采用了履帶式高炮定型中的程序。
例2:某型火控雷達(dá)定型試驗,采用的射表在之前的試驗中未出現(xiàn)過,則新編寫了基于該射表的靜態(tài)解題部分,其他部分復(fù)用原有程序,在動飛試驗前進行研制方與試驗方對算,保證程序正確。
例3:某型履帶式4 管彈炮結(jié)合武器定型試驗,采用的一種彈丸射表在之前牽引式高炮試驗中出現(xiàn)過,但是方位角定義的零位和正向與牽引式高炮方向相反,則對此射表考核的程序不變,輸出標(biāo)準(zhǔn)載體坐標(biāo)系下的誤差統(tǒng)計結(jié)果,再用式(10)手工轉(zhuǎn)化為被試品坐標(biāo)系下的誤差統(tǒng)計結(jié)果。此系統(tǒng)的另一種彈丸射表未在之前試驗中出現(xiàn),則新編寫射表部分。
本文針對高炮動態(tài)射擊諸元考核中標(biāo)準(zhǔn)值程序算法復(fù)雜、難以保證正確性的問題,通過應(yīng)用開發(fā)-封閉原則,建立了算法,編寫了程序,并建立了測試機制。
本文方法已應(yīng)用到多種武器系統(tǒng)的設(shè)計定型試驗中。試驗結(jié)果說明,可以將動態(tài)射擊諸元精度統(tǒng)計的編程難度降到查射表的靜態(tài)解題難度,可以在動飛試驗前確保程序的正確性。