丁芳頤,劉江
(北京航天自動控制研究所,北京 100854)

運載火箭通用發射軟件測試平臺設計*
丁芳頤,劉江
(北京航天自動控制研究所,北京 100854)
詳述了一種基于外設組件互連標準(PCI)總線技術和可編程邏輯控制器(PLC)技術的運載火箭通用發射軟件測試平臺,利用它可以脫離發射控制系統實物對發射軟件以及其發出的點火、緊急關機等時串進行全面測試,模擬各種硬件故障和軟件故障,從而提高測試覆蓋性,保證發射的可靠性和安全性。
運載火箭;通用;發射軟件;測試平臺;精確定時;可編程邏輯控制器
點火控制組合是運載火箭控制系統地面測試發控系統的重要組成部分。它的主要功能為在收到點火指令后,發出發動機自動點火指令和緊急關機指令。而發射軟件則是點火控制組合的核心程序,發射軟件在收到“轉電”指令后,自主計時按照順序發出“點火”、“緊急關機”等一系列點火指令信號,控制發動機完成點火動作從而實施自動點火。因此,發射軟件的時序精度、脈沖寬度和順序都需要進行準確測試[1]。
由于發射軟件的可靠與否直接關系著火箭發射的成敗和人員的生命安全,因此它的可靠性和安全性要求尤為重要。如果沒有通用平臺則對發射軟件進行測試時,必須啟動整套地面測試發控系統,這樣既造成了因受系統硬件環境的影響而不能盡快開展測試工作,又不能經常不斷的對發射軟件進行測試。因此必須開發脫離地面測試發控系統的獨立通用發射軟件測試平臺,以便能隨時對發射軟件進行測試,從而達到暴露問題、改進設計、提高發射軟件的可靠性、提高發射系統的綜合保障效率的目的。另外利用它通用發射軟件測試平臺還可以模擬各種硬件故障和軟件故障,進行故障注入測試,從而考察在冗余系統環境中,發射軟件在各種故障情況下能否協調工作,輸出正確的點火時序和緊急關機時序,從而保證發射的可靠性和安全性[2-3]。
1.1 總體要求
測試平臺總體的設計首先應滿足完全模擬被測設備的測試需求。因此模擬地面測發控系統的真實設備將測試平臺的硬件設計為3套PLC冗余結構,因此不但需要測量經3取2表決電路產生的時串信號還需要單獨測量每個PLC分支輸出的點火時串信號,從而實現冗余分支的測試。輸出除了考慮模擬地面測發控的母線加電、地面轉電、點火發射等正常的測發控流程以外還需要模擬緊急關機和不同運載型號切換等復雜的流程控制信號[4-5]。
另外由于點火時串的重要性,因此對點火時串的測量精度要求非常高,需要測量時串的輸出時間,脈沖寬度,時間記錄需要精確到1 ms,單次誤差要小于等于10 ms。測試結果還需要進行實時的自動記錄、存儲、顯示,并可以通過第三方軟件對結果編輯、打印、查詢等;另外,系統還提供了彩燈顯示系統和筆錄儀外接系統,為軟件記錄的結果提供參照依據。
另外系統還設置了故障注入模式,可以人為設定單PLC或多個PLC故障,還可以設定某幾路輸入信號故障等故障模式,全面模擬在火箭發射過程中遇到的各種類型的故障,考核系統的可靠性。
1.2 整體架構[6]
通用點火組合軟件測試平臺是由PLC測試箱,自研測試箱,控制機、專用測試電纜組成的,系統原理框圖如圖1所示[7]。
PLC測試箱由3套PLC組成,運行發射軟件,其軟件環境為GE公司提供的Versapro編程軟件,以循環掃描的方式執行,其硬件環境為GE公司的PLC(可編程控制器)。該軟件的功能是當發控臺檢測到PLC工作正常并具備轉電、點火條件時,按下轉電按鈕,使PLC發出轉電信號,牽動等信號;當點火按鈕按下后,PLC按設定的時間發出點火時序信號和緊急關機信號,發射軟件為三重復冗余系統,采用3取2表決工作方式。3套PLC中可運行相同或不同版本的發射軟件,更換PLC中的軟件版本就可輕松實現不同火箭系統的測試轉換[8]。
自研測試箱由穩壓電源、開關和指示燈組成的,其主要功能是接收PLC信號進行彩燈顯示筆錄儀記錄,提供供電和開關量控制信號。

圖1 通用發射軟件測試平臺系統原理框圖Fig.1 General launching software test platform system theory diagram
控制機一方面可以通過軟件程序對PLC的每路輸入信號的時間,順序等加以控制。從而實現不同方式的故障注入,另一方面,可對接收到的時串數據進行采集,記錄,保存,編輯。并通過顯示器實現對點火時序的實時監視,最后通過打印機打印結果。控制機采用PCI板卡,包括I/O卡和2塊數字量接口卡,I/O卡將控制信號輸出到PLC點火時序中去,控制PLC的輸入,并且實時將PLC輸出的時串隔離輸入到工控機內,從而實現對時串的采集和監控。這樣軟件在編程時采用不同的輸入組合就可以模擬正常和各種異常狀態。數據采集卡使用的是研華公司的PCI-1756 32通道隔離輸入/輸出卡和PCI-1754 64通道隔離輸入輸出卡,用以采集記錄時串時間并進行測試,可以實現每路PLC的測試和三冗余后的信號測試,從而對冗余的分支以及數據差異性做出比較。軟件具有良好的人機交互軟界面來操作測試[9]。
由于運載型號的測發控系統比較復雜,對人機交互圖像界面的要求非常高,并且同時還要運行殺毒軟件、Office軟件、數據處理軟件等軟件。因此如果采用VXWork實時操作系統,則在圖形界面開發方面等方面難度較大,對其他軟件的安裝支持相對于Windows也較弱,因此測發控系統采用的Windows98操作系統。根據繼承性原則和盡量與實物一致的原則,發射軟件測試平臺也采用了Windows98操作系統。由于Windows98系統是一種實時多任務系統,用戶可以同時運行多個任務,在集成化的操作環境中完成多任務需求;同時Windows98系統還是一種真正的32位操作系統,提高了內存管理能力和高速緩沖存儲器(Cache)的效率,有利于充分利用微機系統的內存資源,并使操作更為迅速與有效。同時Windows 98的運行環境要求相對較低,在64 Mbit的內存、較低端Pentium級CPU就可以使Windows 98正常運行大型的應用程序,而且對系統的整體開銷比較小,特別適合于需要精確定時的計算機系統。程序采用VC編寫程序和界面,由于測試要求的時間精度精確到±1 ms,因此在Windows操作平臺下實現精確軟件定時是該軟件需要解決的關鍵技術問題。
2.1 Windows下秒級定時的一般方法[10]
在Windows下解決定時問題的最簡單方法是使用其提供的計時函數KillTimer(),SetTimer()和TimerProc()。首先在程序中通過調用SetTimer函數向系統申請定時器消息,同時設定消息發送的時間間隔,Windows系統就會每隔一定時間向窗口發出一個WM_TIMER消息,不需要再定時處理時則調用KillTimer通知Windows系統停發消息,采用則種方法可以方便的在應用程序中設置一個或多個定時時鐘,但是由于受系統時鐘的限制,定時器的最小間隔不能低于55 ms,所以不能解決精確定時的問題。
2.2 利用多媒體定時器實現毫秒級精確定時[11]
由于多媒體的需要,微軟公司在其多媒體Windows中提供了精確定時器的底層API支持。在它的多媒體擴展庫MMSYSTEM. DLL中,提供了更高的定時器服務。利用多媒體定時器可以很精確地讀出當前時間,并能在非常精確的時間間隔內完成一個事件、函數、或對過程的調用,該定時器的定時精度可以達到1 ms。在VC++中,對多媒體定時器的應用主要通過以下函數來實現:
(1) timeBeginPeriod()———建立應用程序使用的定時器分辨率;
(2) timeEndPeriod()———清除前面用time-BeginPeriod()函數建立的最小定時器分辨率;
(3) timeSetEvent()———產生一個在指定的或時間周期間隔內執行的定時器事件;
(4) timeKillEvent( )———刪除前面用time-SetEvent()產生的定時器事件;
(5) timeGetDevCaps()———返回關于定時器服務能力的信息。
多媒體定時器對實現較高精度定時是比較理想的工具,其精度也十分可靠。但是,多媒體定時器的可靠精度是建立在對系統資源的消耗之上的,因此在利用多媒體定時器時必須注意在使用完定時器后一定要刪除定時器及其分辨率,否則系統會越來越慢。由于該方法采樣的最高分辨率為1 ms,因此誤差較大,在本系統中同樣不適用。
2.3 利用線程達到微秒級高精度定時的方法[12]
對于要求更高的計時系統,VC++為Windows95及其后續版本提供了更精確的時間函數,本程序在線程中采用了該時間函數的計數器作為定時使用,具體WIN32 API相關函數為QueryPerformanceFrequency()和QueryPerformanceCount()。
BOOL QueryPerformanceFrequency(LARGE_INTERGER * IpFrequency)。
該函數取得高分辨率新能計數器的頻率,IpFrequency表示變量指針,該變量值的每秒的計數被函數設置為當前性能計數器的頻率[13];
BOOL QueryPerformanceCount(LARGE_INTERGER * IpPerformanceCount)。
該函數取得高分辨率性能計數器的當前值;IpPerformanceCount表示變量指針,該變量的值被函數設置為當前性能計數器值;
函數的運行原理是在進行定時之前,先調用QueryPerformanceFrequency( )函數獲得機器內部定時器的時鐘頻率,然后在需要嚴格定時的事件發生之前和之后分別調用QueryPer-formanceCounter()函數,利用2次獲得的計數之差及時鐘頻率,計算出事件經歷的精確時間。
由于本軟件要求定時間隔<1 ms ,而Windows系統是基于消息機制的系統,任何事件的執行都是通過發送和接收消息來完成的,在VC++中直接運用Windows高精度定時器會導致在運行時程序大量占用CPU時間和系統資源,出現死機現象。因此把調用Windows高精度定時器的控制程序放在線程中執行,從而防止死機。
在這2個操作函數的基礎上筆者完成了計時設計,程序示例如下[14-15]:
myThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Data_Timer, &TParam,CREATE_SUSPENDED,&thread_ID);//產生線程
if(myThread==NULL)
{MessageBox("產生線程錯誤!", "提示信息框",MB_OK);}
else
{
SetThreadPriority(myThread,THREAD_PRIORITY_NORMAL); //設置線程優先級
ResumeThread(myThread); //開始線程
}
if( !( QueryPerformanceFrequency(&frequency) ) )
{::MessageBox(NULL,"硬件不支持此高精度記數器!","錯誤信息",MB_OK);}
intervel = ( 50*(frequency.QuadPart) )/1000000; //這里可以設置基礎的計數值,如這里為50 μs
QueryPerformanceCounter( &begin ); //獲得當前記數器值
while( TRUE )
{
QueryPerformanceCounter( &end ); //不斷獲得當前新的記數器值
temp.QuadPart = end.QuadPart - begin.QuadPart; //新的記數器值-BEGIN記數器值
if( temp.QuadPart<0 )
{temp.QuadPart = temp.QuadPart + frequency.QuadPart;} //記數器值溢出處理
if( temp.QuadPart>=intervel )
{
begin.QuadPart = begin.QuadPart + intervel; //更新BEGIN記數器值
// 以下為數據采集及分析程序,每隔50 μs進入一次
ptDioReadPortByte.port = 0;
ptDioReadPortByte.value = (USHORT far *)&gwValue0;
}
}
在本測試平臺中通過該定時方法成功地每隔50 μs從通道采集一次數據,滿足系統要求的1 ms精度。
故障注入是人為在目標系統中引入故障來加速系統失效,然后通過觀察系統在出現故障之后的行為反應對系統的可靠性進行評價的方法。運載火箭通用發射軟件測試平臺的主要作用是驗證發射系統的軟硬件可靠性,點火組合平臺硬件采用硬邏輯3取2冗余設計,本身可抵消一度故障的影響。因此模擬各種故障并進行注入,從而驗證系統及其各冗余分支的可靠性是其必不可少的功能之一。
一般來說,故障注入有基于硬件的故障注入和基于軟件的故障注入2種方式,本設備采用的是軟硬件結合的故障注入方式。模擬故障類型和方式如表1所示。
在實際測試中,系統參照上表模擬了一度故障和幾度故障相結合的方式,考核系統軟硬件的健壯性。在使用中驗證了系統一度故障無影響的設計,并對各硬件冗余分支進行了測試,故障注入用于軟件應例設置環節,達到軟件各分支測試覆蓋率100%,與原始設計期望值相符合,達到了故障注入的設計目的。
該通用發射軟件測試平臺簡便易用,僅更換PLC中的軟件就可實現不同火箭系統的測試轉換。目前已在某系列火箭測試中應用,在實踐中取得了很好的效果。
[1] 張毅,肖龍旭,王順宏.彈道導彈彈道學[M].長沙:國防科技大學出版社,1999. ZHANG Yi,XIAO Long-xu,WANG Shun-hong.The Ballistics of Ballistic Missile[M].Changsha:Defence Science University Press,1999.
[2] 孫凝生.運載火箭控制系統綜合設計[M].北京:中國運載火箭技術研究院,1998. SUN Ning-sheng.Carrier Rocket Control System Comprehensive Design[M].Beijing:China Carrier Rocket Academe, 1998.
[3] 姜家緯.地(艦)空導彈測試系統設計思想與原則[J].現代防御技術,2006,34(5):45-49. JIANG Jia-wei. Thinking and Principle of Design on the Surface (Ship)-to-Air Missile Comprehensive Test System[J].Modern Defence Technology, 2006, 34(5): 45-49.
[4] 郭希維, 張茹, 王竹林.某型導彈擊發點火信號檢測電路設計與仿真[J].儀表技術,2010(6):38-40. GUO Xi-wei,ZHANG Ru, WANG Zhu-lin.Design and Simulation on Testing Circuis for Firing Signal of Some Missile[J].Instrumentation Techonology,2010(6):38-40.
[5] 朱巖. 導彈發射裝置測試系統的設計與實現[J].電光與控制,2008,15(4):74-77. ZHU Yan.Design and Realization of a Testing System for Missile Launcher[J].Electronics Optics & Control,2008,15(4):74-77.
[6] 何鑫,尉廣軍,邢婭浪,等.基于虛擬儀器的某型導彈控制設備檢測系統[J].儀器儀表學報,2003,24(z2):188-189. HE Xin, WEI Guang-jun,XING Ya-lang,et al. A Test System About the Control Device of a Missile Based on Virtual Instrument Technology [J].Chinese Journal of Science Instrument,2003,24(z2):188-189.
[7] 祖先鋒, 潘孟春,羅飛路,等.基于虛擬儀器技術的多型號戰術導彈自動測試系統[J].計算機測量與控制,2005,13(9):960-963. ZU Xian-feng, PAN Meng-chun,LUO Fei-lu,et al. Automatic Test System of Various Tactical Missiles Based on Virtual Instrument Technology [J]. Computer Automated Measurement & Control,2005,13(9):960-963.
[8] 周萬珍,高鴻斌.PLC分析與設計應用[M].北京:電子工業出版社,2004:1-41. ZHOU Wan-Zhen,GAO Hong-Bin.PLC Analysis and Design Application[M]. Beijing: Publishing House of Electronics Industry, 2004:1-41.
[9] 胡吉銘,張曉林,馮文全.可編程誤碼儀的設計與實現[J].電子測量技術,2006,29(5):112-114. HU Ji-ming,ZHANG Xiao-lin,FENG Wen-quan.Design and Realization of Programming Bit Error Rate Tester[J].Electric Measurement Technology,2006,29(5):112-114.
[10] Saxna,David E.Y.Windows快速應用開發[M].北京:電子工業出版社,1995. Saxna,David E.Y.Windows Apace Application Development[M]. Beijing: Publishing House of Electronics Industry,1995.
[11] 網冠科技. Visual C++6.0時尚編程百例[M].北京:機械工業出版社, 2001. Wangguan Technology. Visual C++6.0 Fashion Programme Hundred Examples[M].Beijing: Machinery Industry Press,2001.
[12] David J Kruglinski.Visual C++6.0技術內幕[M].希望圖書創作室,譯.北京:希望電子出版社,2002。 David J Kruglinski.Visual C++6.0 Inside Technology[M].Hope Book Produce House,Translated.Beijing: Hope Electric Press,2000.
[13] 王宏,李東,付新苗.Windows API常用技巧匯編[M].北京: 清華大學出版社,2000. WANG Hong,LI Dong,FU Xin-miao.Windows API Useful Technique Collection[M].Beijing:Qinghua University Press,2000.
[14] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2006. SUN Xin,YU An-ping. VC++ Deep Particular Resolution[M].Beijing: Publishing House of Electronics Industry, 2006.
[15] Jeffrey Richter.Windows核心編程[M].王建華,譯.北京:機械工業出社,2000. Jeffrey Richter.Windows Kernel Program[M].WANG Jian-hua, translated. Beijing: Machinery Industry Press,2000.
Design of General Launching Software Test Platform for Carrier Rocket
DING Fang-yi,LIU Jiang
(Beijing Aerospace Automatic Control Institute,Beijing 100854,China)
A general launching software test platform for carrier rocket based on peripheral component interconnection (PCI) bus and programmable logic controller (PLC) technology is introduced. It can be used comprehensively to test launching software and ignition time bunches, emergency cutoff time bunches, etc. without launch control System. It can also simulate a lot of software and hardware fault to improve testing coverage and ensure launching reliability and security.
carrier rocket; general; launching software; test platform; accurate timing; programmable logic controller(PLC)
2014-11-02;
2015-02-02
丁芳頤(1978-),女,北京人。工程師, 碩士,主要從事運載火箭控制系統電氣綜合研究工作。
通信地址:100854 北京142信箱402分箱四室 E-mail:dbbei_2002@sina.com
10.3969/j.issn.1009-086x.2015.04.030
V448.25+3
A
1009-086X(2015)-04-0178-06