摘 要:為了給某型導(dǎo)彈單元測試設(shè)備配套的模擬訓(xùn)練設(shè)備,采用硬件結(jié)合軟件的方法實(shí)現(xiàn)模擬訓(xùn)練系統(tǒng)的設(shè)計。硬件結(jié)合軟件的方法是由單片機(jī)檢測外部開關(guān)、按鈕等元件狀態(tài),再由軟件來判斷結(jié)果,在數(shù)碼管和指示燈上進(jìn)行顯示。詳細(xì)介紹波段開關(guān)讀取、語音控制等關(guān)鍵的硬件技術(shù)、軟件流程、流程數(shù)據(jù)分離技術(shù)和菜單技術(shù)等關(guān)鍵的軟件技術(shù)在系統(tǒng)中的應(yīng)用。
關(guān)鍵詞:導(dǎo)彈;模擬訓(xùn)練;單片機(jī);單元測試
中圖分類號:TP207 文獻(xiàn)標(biāo)識碼:B
文章編號:1004-373X(2008)06-168-03
A Certain Missile Unit testing Simulated Training System Design
BAI Weibing LI Jimin2,YU Hao3
(1.Ordance N.C.O Academy of PLA,Wuhan,430075,China;
2.Department of Optical Electronic Engineering,Ordnance Engineering College,Shijiazhuang,050003,China;3.Army 63856,Jilin,137000,China)
Abstract:For the supporting simulated training devices of a certain missile unit testing device,a set of simulated training devices are designed based on software and hardware.The status of switches and buttons is detected by CPU,and results are given in nixie tubes and LEDs by software.The key hardware techniques such as band-switch detecting and voice operation,and the key software techniques such as flow data stand-alone and menu control are discussed in this paper.The software flow charts are also given.
Keywords:missile;simulated training;singlechip;unit testing
由于某型導(dǎo)彈單元測試設(shè)備沒有配套的模擬訓(xùn)練設(shè)備,部隊(duì)裝備保障人員的訓(xùn)練一直都是在實(shí)裝上進(jìn)行的。使用實(shí)裝進(jìn)行訓(xùn)練,增大了實(shí)裝的設(shè)備磨損,縮短了其使用壽命,而且操作人員的誤操作很有可能對裝備造成損害,甚至造成重大裝備事故。為了解決這個問題,這里研制了某型導(dǎo)彈單元測試模擬訓(xùn)練系統(tǒng)。一般的模擬訓(xùn)練系統(tǒng)分為3種:完全使用硬件,完全使用軟件及硬件結(jié)合軟件。完全使用硬件的方案不夠靈活,而完全使用軟件的方案又不能給人實(shí)際操作的感覺。因此,采用最后一種方案,由單片機(jī)檢測外部開關(guān)、按鈕等元件狀態(tài),然后再由軟件來判斷結(jié)果,在數(shù)碼管和指示燈上進(jìn)行顯示。
1 總體方案
軟硬結(jié)合模擬方案是在單片機(jī)硬件電路的基礎(chǔ)上,使用軟件模擬原測試儀的測試流程。操作面板各個波段開關(guān)、撥動開關(guān)和按鈕等元件的狀態(tài)都讀入單片機(jī),然后由單片機(jī)根據(jù)程序存儲的流程信息控制數(shù)碼管、指示燈等顯示元件給出相應(yīng)反饋信息。整個系統(tǒng)的組成框圖如圖1所示。
單片機(jī)采用具有20 k程序存儲器和256 B RAM的89C55;由于面板上波段開關(guān)比較多,為了節(jié)約I/O資源,采用A/D讀取波段開關(guān)檔位的方法;語音電路用來在系統(tǒng)訓(xùn)練模式時播放操作提示信息,在系統(tǒng)考核模式時播放考核成績;液晶顯示用于顯示操作提示信息和系統(tǒng)工作狀態(tài);鍵盤顯示控制采用鍵盤顯示控制芯片8279管理面板上的數(shù)碼管、指示燈、測試按鈕和用來控制系統(tǒng)工作模式的控制按鈕。
2 硬件設(shè)計
某型導(dǎo)彈單元測試儀上使用了大量的波段開關(guān)和撥動開關(guān)。波段開關(guān)和撥動開關(guān)有很多個節(jié)點(diǎn),要單片機(jī)去讀取每一個節(jié)點(diǎn),單片機(jī)的I/O資源就會嚴(yán)重短缺。為了解決這個矛盾,系統(tǒng)采用了電阻分壓A/D檢測的方法。波段開關(guān)電阻分壓的原理圖如圖2所示。
在圖2中,0腳連接GND;10腳連接VCC;11腳連接到A/D的輸入通道。當(dāng)波段開關(guān)打到檔位n時,A/D測到的電壓為(n/10)VCC。這樣,一個波段開關(guān)只需一根線即可檢測其所在檔位。撥動開關(guān)的連接方式與波段開關(guān)類似。
系統(tǒng)的A/D芯片采用了美國MAXIM公司的串行A/D芯片MAX1038。MAX1038是一款8位的ADC芯片,采用5 V單電源供電,12個通道,I2C串行接口,最大采樣速率188 ks/s,內(nèi)部集成時鐘和一個4.096 V的參考電壓源[1]。MAX1038和輸入的連接電路圖如圖3所示。
為了增強(qiáng)模擬訓(xùn)練的效果,增加訓(xùn)練模式下的操作提示功能,在系統(tǒng)中設(shè)計了語音發(fā)聲電路。語音電路的核心部分采用的是ISD4004-08單片語音錄放芯片。ISD4004-08是美國ISD公司開發(fā)的,片內(nèi)集成了振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動靜噪及高密度多電平閃爍存貯陣列等。內(nèi)部的E2PROM存儲器,可以反復(fù)擦寫。采用所謂模擬存儲技術(shù),聲音無需A/D轉(zhuǎn)換和壓縮就可以直接存儲,沒有A/D轉(zhuǎn)換誤差,在一個記錄位(bit)可以存儲多達(dá)250級聲音信號,相當(dāng)于通常A/D技術(shù)記錄量的8倍,很好地實(shí)現(xiàn)了語音還原效果,而且能錄能放,控制簡單靈活,單片錄放時間為8 min。其次,將快速閃存作為存儲介質(zhì),無需電源即可保存數(shù)據(jù)長達(dá)100年,重復(fù)記錄10 000次以上。同時,接口簡單,開發(fā)時所需外圍電路簡單。ISD4004-08的連接電路圖如圖4所示。
3 軟件設(shè)計
系統(tǒng)軟件根據(jù)功能劃分為軟件“引擎”、系統(tǒng)初始化、液晶控制、鍵盤管理、顯示控制、語音播放控制、開關(guān)讀取和流程數(shù)據(jù)8個模塊。軟件結(jié)構(gòu)圖如圖5所示。
軟件“引擎”其實(shí)是系統(tǒng)軟件的一個主循環(huán)結(jié)構(gòu),由他檢測各種狀態(tài)條件,然后根據(jù)狀態(tài)條件調(diào)用執(zhí)行相應(yīng)模塊。軟件“引擎”的概念把流程數(shù)據(jù)和程序執(zhí)行代碼分離,流程的改變不需改動代碼,從而提高了編程效率,方便了代碼的修改和移植。
模擬訓(xùn)練系統(tǒng)的工作模式分為訓(xùn)練模式和考核模式。在訓(xùn)練模式情況下,系統(tǒng)要給出操作步驟名稱和操作方法提示,幫助使用者正確操作??己四J絼t在使用者經(jīng)過一段時間訓(xùn)練以后檢驗(yàn)其訓(xùn)練效果。因此,考核模式下就不再給出操作步驟名稱和操作方法提示,并且當(dāng)要對操作過程進(jìn)行計時,最后給定操作者考核成績。訓(xùn)練模式的流程圖如圖6所示??己四J降牧鞒虉D如圖7所示。
為了提高編程的效率,提高程序的可靠性,降低代碼量,在系統(tǒng)設(shè)計時使用將流程數(shù)據(jù)和控制代碼分離的辦法。將流程數(shù)據(jù)和控制代碼分離的辦法在工控機(jī)測試軟件的編寫中早已被廣泛應(yīng)用。由于工控機(jī)有操作系統(tǒng)和數(shù)據(jù)庫的支持,所以技術(shù)上實(shí)現(xiàn)起來非常容易。而單片機(jī)沒有操作系統(tǒng)和數(shù)據(jù)庫的支持,并且單片機(jī)可利用的資源非常有限,因此從技術(shù)上實(shí)現(xiàn)將流程數(shù)據(jù)和控制代碼分離比較困難。該技術(shù)的關(guān)鍵在于使用合適的數(shù)據(jù)結(jié)構(gòu)來表達(dá)流程數(shù)據(jù)。
以配電器測試為例說明這種數(shù)據(jù)結(jié)構(gòu)。很明顯在這個數(shù)據(jù)結(jié)構(gòu)里,必須包含步驟名稱、開關(guān)按鈕狀態(tài)、提示聲音、結(jié)果數(shù)據(jù)和流程順序等信息。首先定義每個步驟的數(shù)據(jù)類型,代碼如下:
typedef struct
{
uchar ProcName[26]; //步驟名稱
uchar BodongState;//撥動開關(guān)和按鈕狀態(tài)
//0位為S2,1位為S5,2位為S6,3位為S11,1為上,0為下
//4位為S3,5位為S13,6位為S12,1為按,0為不按
uchar S7State;//波段開關(guān)S7狀態(tài)
uchar S8State;//波段開關(guān)S8狀態(tài)
uchar S9State;//波段開關(guān)S9狀態(tài)
uchar S10State;//波段開關(guān)S10狀態(tài)
uchar LedDisp;//指示燈字段碼
uchar VoltDisp[5];//電壓表字段碼
uchar SecDisp[5]; //毫秒表字段碼
uint VolFirstMaster;//提示聲1主語位置
uint VolFirstAction;//提示聲1動作位置
uint VolSecondMaster;//提示聲2主語位置
uint VolSecondAction;//提示聲2動作位置
uint VolThirdMaster;//提示聲3主語位置
uint VolThirdAction;//提示聲3動作位置
} ProcStruct;
然后,要使用數(shù)組來表達(dá)各個步驟地順序結(jié)構(gòu)。自檢流程部分的數(shù)據(jù)聲明如下所示:
//自檢流程表
ProcStruct code SelfTestFlow[Info_SelfTestFlow]=
{
…
};
由于系統(tǒng)使用了一塊128×64的點(diǎn)陣液晶來顯示系統(tǒng)狀態(tài)和提示信息,所以就具備了采用菜單技術(shù)控制系統(tǒng)工作模式的硬件條件。以配電器模擬訓(xùn)練系統(tǒng)為例,其工作模式分為考核模式和訓(xùn)練模式,測試種類包括自檢、配電器測試和副配電器測試。其控制菜單結(jié)構(gòu)如圖8所示。
控制按鍵總共設(shè)向上、向下、確認(rèn)和取消4個按鍵。同級之間的菜單選項(xiàng)轉(zhuǎn)換通過向上、向下2個鍵來現(xiàn)。按下確認(rèn)鍵,進(jìn)入下級菜單。按下取消鍵,回到上級菜單。為了用數(shù)據(jù)結(jié)構(gòu)來表征菜單,首先要建立一個表達(dá)菜單選項(xiàng)的數(shù)據(jù)類型。菜單選項(xiàng)數(shù)據(jù)類型聲明如下:
typedef struct //菜單定義的數(shù)據(jù)結(jié)構(gòu)
{
uchar KeyStateIndex;//當(dāng)前狀態(tài)索引號
uchar KeyDnState;//按下\"向下\"鍵時轉(zhuǎn)向的狀態(tài)索引號
uchar KeyUpState;//按下\"向上\"鍵時轉(zhuǎn)向的狀態(tài)索引號
uchar KeyCrState;//按下\"回車\"鍵時轉(zhuǎn)向的狀態(tài)索引號
uchar KeyEscState;//按下\"返回\"鍵時轉(zhuǎn)向的狀態(tài)索引號
void (*CurrentOperate)();//當(dāng)前狀態(tài)應(yīng)該執(zhí)行的功能操作
} KbdTabStruct;
然后要聲明一個數(shù)組表示菜單的結(jié)構(gòu):
KbdTabStruct code KeyTab[SIZE_OF_KEYBD_MENU]=
{
{0,7,14,1,0,(*TrainModeMenu)},//訓(xùn)練模式菜單
{1,3,5,2,0,(*TrainSelfTestMenu)},//訓(xùn)練模式自檢菜單
{2,2,2,2,2,(*TrainSelfTestFun)}, //訓(xùn)練模式自檢執(zhí)行函數(shù)
{3,5,1,4,0,(*TrainPeiTestMenu)},//訓(xùn)練模式配電器測試菜單
{4,4,4,4,4,(*TrainPeiTestFun)},
//訓(xùn)練模式配電器測試執(zhí)行函數(shù)
{5,1,3,6,0,(*TrainFuPeiTestMenu)}, //訓(xùn)練模式副配電器測試菜單
{6,6,6,6,6,(*TrainFuPeiTestFun)},//訓(xùn)練模式副配電器測試執(zhí)行函數(shù)
{7,14,0,8,7,(*TestModeMenu)},//考核模式菜單
{8,10,12,9,7,(*TestSelfTestMenu)},//考核模式自檢菜單
{9,9,9,9,9,(*TestSelfTestFun)},//考核模式自檢執(zhí)行函數(shù)
{10,12,8,11,7,(*TestPeiTestMenu)},//考核模式配電器測試菜單
{11,11,11,11,11,(*TestPeiTestFun)},//考核模式配電器測試執(zhí)行函數(shù)
{12,8,10,13,7,(*TestFuPeiTestMenu)},//考核模式副配電器測試菜單
{13,13,13,13,13,(*TestFuPeiTestFun)},//考核模式副配電器測試執(zhí)行函數(shù)
{14,0,7,15,14,(*AboutMenu)}, //關(guān)于菜單
{15,15,15,15,15,(*AboutFun)},//關(guān)于執(zhí)行函數(shù)
};
4 結(jié) 語
用硬件模擬裝備外部操作元件,用軟件來模擬裝備內(nèi)部功能的模擬訓(xùn)練系統(tǒng)設(shè)計方案即可以完全實(shí)現(xiàn)裝備操作的模擬,給操作者實(shí)際的操作感受,又可以方便地增加輔助功能,增強(qiáng)訓(xùn)練效果。本文設(shè)計的某型導(dǎo)彈單元測試模擬訓(xùn)練系統(tǒng)已經(jīng)在院校教學(xué)和部隊(duì)訓(xùn)練中進(jìn)行試用,收到了良好的效果。
參考文獻(xiàn)
[1]MAX1038 Datasheet.Maxim Integrated Products Inc.2003.
[2]馬忠梅,籍順心,張凱,等.單片機(jī)的C語言應(yīng)用程序設(shè)計\\[M\\].北京:北京航空航天大學(xué)出版社,2003.
[3]韓兆福,徐偉勤,王乃慶,等.某型飛機(jī)導(dǎo)彈模擬訓(xùn)練器的設(shè)計與實(shí)現(xiàn)\\[J\\].儀表技術(shù),2005(6):38-39.
作者簡介 擺衛(wèi)兵 男,1979年出生,河南許昌人,助教,碩士。主要研究方向?yàn)楸靼l(fā)射理論與技術(shù)。