摘 要:為了給某型導彈單元測試設備配套的模擬訓練設備,采用硬件結合軟件的方法實現模擬訓練系統的設計。硬件結合軟件的方法是由單片機檢測外部開關、按鈕等元件狀態,再由軟件來判斷結果,在數碼管和指示燈上進行顯示。詳細介紹波段開關讀取、語音控制等關鍵的硬件技術、軟件流程、流程數據分離技術和菜單技術等關鍵的軟件技術在系統中的應用。
關鍵詞:導彈;模擬訓練;單片機;單元測試
中圖分類號:TP207 文獻標識碼: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
由于某型導彈單元測試設備沒有配套的模擬訓練設備,部隊裝備保障人員的訓練一直都是在實裝上進行的。使用實裝進行訓練,增大了實裝的設備磨損,縮短了其使用壽命,而且操作人員的誤操作很有可能對裝備造成損害,甚至造成重大裝備事故。為了解決這個問題,這里研制了某型導彈單元測試模擬訓練系統。一般的模擬訓練系統分為3種:完全使用硬件,完全使用軟件及硬件結合軟件。完全使用硬件的方案不夠靈活,而完全使用軟件的方案又不能給人實際操作的感覺。因此,采用最后一種方案,由單片機檢測外部開關、按鈕等元件狀態,然后再由軟件來判斷結果,在數碼管和指示燈上進行顯示。
1 總體方案
軟硬結合模擬方案是在單片機硬件電路的基礎上,使用軟件模擬原測試儀的測試流程。操作面板各個波段開關、撥動開關和按鈕等元件的狀態都讀入單片機,然后由單片機根據程序存儲的流程信息控制數碼管、指示燈等顯示元件給出相應反饋信息。整個系統的組成框圖如圖1所示。

單片機采用具有20 k程序存儲器和256 B RAM的89C55;由于面板上波段開關比較多,為了節約I/O資源,采用A/D讀取波段開關檔位的方法;語音電路用來在系統訓練模式時播放操作提示信息,在系統考核模式時播放考核成績;液晶顯示用于顯示操作提示信息和系統工作狀態;鍵盤顯示控制采用鍵盤顯示控制芯片8279管理面板上的數碼管、指示燈、測試按鈕和用來控制系統工作模式的控制按鈕。
2 硬件設計
某型導彈單元測試儀上使用了大量的波段開關和撥動開關。波段開關和撥動開關有很多個節點,要單片機去讀取每一個節點,單片機的I/O資源就會嚴重短缺。為了解決這個矛盾,系統采用了電阻分壓A/D檢測的方法。波段開關電阻分壓的原理圖如圖2所示。

在圖2中,0腳連接GND;10腳連接VCC;11腳連接到A/D的輸入通道。當波段開關打到檔位n時,A/D測到的電壓為(n/10)VCC。這樣,一個波段開關只需一根線即可檢測其所在檔位。撥動開關的連接方式與波段開關類似。
系統的A/D芯片采用了美國MAXIM公司的串行A/D芯片MAX1038。MAX1038是一款8位的ADC芯片,采用5 V單電源供電,12個通道,I2C串行接口,最大采樣速率188 ks/s,內部集成時鐘和一個4.096 V的參考電壓源[1]。MAX1038和輸入的連接電路圖如圖3所示。

為了增強模擬訓練的效果,增加訓練模式下的操作提示功能,在系統中設計了語音發聲電路。語音電路的核心部分采用的是ISD4004-08單片語音錄放芯片。ISD4004-08是美國ISD公司開發的,片內集成了振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動靜噪及高密度多電平閃爍存貯陣列等。內部的E2PROM存儲器,可以反復擦寫。采用所謂模擬存儲技術,聲音無需A/D轉換和壓縮就可以直接存儲,沒有A/D轉換誤差,在一個記錄位(bit)可以存儲多達250級聲音信號,相當于通常A/D技術記錄量的8倍,很好地實現了語音還原效果,而且能錄能放,控制簡單靈活,單片錄放時間為8 min。其次,將快速閃存作為存儲介質,無需電源即可保存數據長達100年,重復記錄10 000次以上。同時,接口簡單,開發時所需外圍電路簡單。ISD4004-08的連接電路圖如圖4所示。

3 軟件設計
系統軟件根據功能劃分為軟件“引擎”、系統初始化、液晶控制、鍵盤管理、顯示控制、語音播放控制、開關讀取和流程數據8個模塊。軟件結構圖如圖5所示。

軟件“引擎”其實是系統軟件的一個主循環結構,由他檢測各種狀態條件,然后根據狀態條件調用執行相應模塊。軟件“引擎”的概念把流程數據和程序執行代碼分離,流程的改變不需改動代碼,從而提高了編程效率,方便了代碼的修改和移植。
模擬訓練系統的工作模式分為訓練模式和考核模式。在訓練模式情況下,系統要給出操作步驟名稱和操作方法提示,幫助使用者正確操作。考核模式則在使用者經過一段時間訓練以后檢驗其訓練效果。因此,考核模式下就不再給出操作步驟名稱和操作方法提示,并且當要對操作過程進行計時,最后給定操作者考核成績。訓練模式的流程圖如圖6所示。考核模式的流程圖如圖7所示。
為了提高編程的效率,提高程序的可靠性,降低代碼量,在系統設計時使用將流程數據和控制代碼分離的辦法。將流程數據和控制代碼分離的辦法在工控機測試軟件的編寫中早已被廣泛應用。由于工控機有操作系統和數據庫的支持,所以技術上實現起來非常容易。而單片機沒有操作系統和數據庫的支持,并且單片機可利用的資源非常有限,因此從技術上實現將流程數據和控制代碼分離比較困難。該技術的關鍵在于使用合適的數據結構來表達流程數據。


以配電器測試為例說明這種數據結構。很明顯在這個數據結構里,必須包含步驟名稱、開關按鈕狀態、提示聲音、結果數據和流程順序等信息。首先定義每個步驟的數據類型,代碼如下:
typedef struct
{
uchar ProcName[26]; //步驟名稱
uchar BodongState;//撥動開關和按鈕狀態
//0位為S2,1位為S5,2位為S6,3位為S11,1為上,0為下
//4位為S3,5位為S13,6位為S12,1為按,0為不按
uchar S7State;//波段開關S7狀態
uchar S8State;//波段開關S8狀態
uchar S9State;//波段開關S9狀態
uchar S10State;//波段開關S10狀態
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;
然后,要使用數組來表達各個步驟地順序結構。自檢流程部分的數據聲明如下所示:
//自檢流程表
ProcStruct code SelfTestFlow[Info_SelfTestFlow]=
{
…
};
由于系統使用了一塊128×64的點陣液晶來顯示系統狀態和提示信息,所以就具備了采用菜單技術控制系統工作模式的硬件條件。以配電器模擬訓練系統為例,其工作模式分為考核模式和訓練模式,測試種類包括自檢、配電器測試和副配電器測試。其控制菜單結構如圖8所示。

控制按鍵總共設向上、向下、確認和取消4個按鍵。同級之間的菜單選項轉換通過向上、向下2個鍵來現。按下確認鍵,進入下級菜單。按下取消鍵,回到上級菜單。為了用數據結構來表征菜單,首先要建立一個表達菜單選項的數據類型。菜單選項數據類型聲明如下:
typedef struct //菜單定義的數據結構
{
uchar KeyStateIndex;//當前狀態索引號
uchar KeyDnState;//按下\"向下\"鍵時轉向的狀態索引號
uchar KeyUpState;//按下\"向上\"鍵時轉向的狀態索引號
uchar KeyCrState;//按下\"回車\"鍵時轉向的狀態索引號
uchar KeyEscState;//按下\"返回\"鍵時轉向的狀態索引號
void (*CurrentOperate)();//當前狀態應該執行的功能操作
} KbdTabStruct;
然后要聲明一個數組表示菜單的結構:
KbdTabStruct code KeyTab[SIZE_OF_KEYBD_MENU]=
{
{0,7,14,1,0,(*TrainModeMenu)},//訓練模式菜單
{1,3,5,2,0,(*TrainSelfTestMenu)},//訓練模式自檢菜單
{2,2,2,2,2,(*TrainSelfTestFun)}, //訓練模式自檢執行函數
{3,5,1,4,0,(*TrainPeiTestMenu)},//訓練模式配電器測試菜單
{4,4,4,4,4,(*TrainPeiTestFun)},
//訓練模式配電器測試執行函數
{5,1,3,6,0,(*TrainFuPeiTestMenu)}, //訓練模式副配電器測試菜單
{6,6,6,6,6,(*TrainFuPeiTestFun)},//訓練模式副配電器測試執行函數
{7,14,0,8,7,(*TestModeMenu)},//考核模式菜單
{8,10,12,9,7,(*TestSelfTestMenu)},//考核模式自檢菜單
{9,9,9,9,9,(*TestSelfTestFun)},//考核模式自檢執行函數
{10,12,8,11,7,(*TestPeiTestMenu)},//考核模式配電器測試菜單
{11,11,11,11,11,(*TestPeiTestFun)},//考核模式配電器測試執行函數
{12,8,10,13,7,(*TestFuPeiTestMenu)},//考核模式副配電器測試菜單
{13,13,13,13,13,(*TestFuPeiTestFun)},//考核模式副配電器測試執行函數
{14,0,7,15,14,(*AboutMenu)}, //關于菜單
{15,15,15,15,15,(*AboutFun)},//關于執行函數
};
4 結 語
用硬件模擬裝備外部操作元件,用軟件來模擬裝備內部功能的模擬訓練系統設計方案即可以完全實現裝備操作的模擬,給操作者實際的操作感受,又可以方便地增加輔助功能,增強訓練效果。本文設計的某型導彈單元測試模擬訓練系統已經在院校教學和部隊訓練中進行試用,收到了良好的效果。
參考文獻
[1]MAX1038 Datasheet.Maxim Integrated Products Inc.2003.
[2]馬忠梅,籍順心,張凱,等.單片機的C語言應用程序設計\\[M\\].北京:北京航空航天大學出版社,2003.
[3]韓兆福,徐偉勤,王乃慶,等.某型飛機導彈模擬訓練器的設計與實現\\[J\\].儀表技術,2005(6):38-39.
作者簡介 擺衛兵 男,1979年出生,河南許昌人,助教,碩士。主要研究方向為兵器發射理論與技術。