張浩宇 張 旭 胡 慧 呂曉峰
(1.山東旅游職業(yè)學(xué)院 濟(jì)南 250200)(2.海軍航空大學(xué) 煙臺 264001)
導(dǎo)彈裝備操作人員技能培訓(xùn),具有人員多、訓(xùn)練強(qiáng)度大、設(shè)備利用率高等突出特點,在操作過程中通常需引入突發(fā)故障,以訓(xùn)練人員的應(yīng)急處置能力。實際的導(dǎo)彈裝備結(jié)構(gòu)復(fù)雜、造價高,使用次數(shù)和壽命都有嚴(yán)格要求,且很難產(chǎn)生和復(fù)現(xiàn)各種故障現(xiàn)象。因此,利用實裝進(jìn)行操作人員技能培訓(xùn),既不經(jīng)濟(jì)也不現(xiàn)實,無法取得應(yīng)有的培訓(xùn)效果。本文介紹一種基于VB與單片機(jī)的模擬訓(xùn)練系統(tǒng),可很好滿足導(dǎo)彈裝備高強(qiáng)度培訓(xùn)的需求。
系統(tǒng)采用上位機(jī)(主控計算機(jī))模塊和下位機(jī)(STC單片機(jī))模塊兩級結(jié)構(gòu)形式。模擬訓(xùn)練系統(tǒng)組成框圖如圖1所示。
上位機(jī)模塊由PC機(jī)、故障設(shè)置導(dǎo)演臺及打印機(jī)三個部分組成。其中,PC機(jī)為中心顯示控制單元,用于人機(jī)對話操作,實現(xiàn)虛擬面板操作控制及測試數(shù)據(jù)動態(tài)顯示;故障設(shè)置導(dǎo)演臺主要用于設(shè)置操作故障,并實時監(jiān)控受訓(xùn)人員的操作狀態(tài)和過程;操作數(shù)據(jù)形成報表,由打印機(jī)進(jìn)行輸出。
圖1 模擬訓(xùn)練系統(tǒng)組成框圖
下位機(jī)模塊由 STC89C52單片機(jī)[1]核心板、系統(tǒng)自檢、交直流供電組合、模擬VXI機(jī)箱、綜合適配單元、繼電器控制單元、數(shù)據(jù)采集及變換板、模擬信號發(fā)生器、面板操作狀態(tài)指示單元等組成。其中,單片機(jī)核心板作為上位機(jī)命令的執(zhí)行單元,由STC89C52單片機(jī)和外圍電路組成,通過USB(轉(zhuǎn)RS232)接口,與上位PC機(jī)相連接,接收上位機(jī)控制指令,控制其他功能單元,并將數(shù)據(jù)及狀態(tài)回傳[2];系統(tǒng)自檢單元提供原始參量(如電阻值、開關(guān)狀態(tài)值)用于全系統(tǒng)自檢;交直流供電組合則為全系統(tǒng)工作提供交、直流電源;模擬VXI機(jī)箱用于產(chǎn)生VXI自檢信號,以完成機(jī)箱自檢過程;綜合適配用于實現(xiàn)采集模擬量的調(diào)理;繼電器控制單元用于信號及數(shù)據(jù)的輸入輸出控制;數(shù)據(jù)采集及變換板用于各路輸入數(shù)據(jù)的信號調(diào)理及變換處理;模擬信號發(fā)生器用于產(chǎn)生開關(guān)量、數(shù)字量及模擬量等輸出信號;面板操作及狀態(tài)指示單元,用于監(jiān)視面板開關(guān)及按鍵信息,并控制面板狀態(tài)指示燈及蜂鳴器動作,以實時顯示系統(tǒng)工作狀態(tài)。
在基于VB與單片機(jī)的模擬訓(xùn)練系統(tǒng)中,軟件設(shè)計是重要的組成部分,包括下位機(jī)單片機(jī)控制程序模塊和上位PC機(jī)操作程序模塊。下位機(jī)與上位機(jī)之間采用RS232串行通信方式。
上位PC機(jī)內(nèi)配有RS-232串行標(biāo)準(zhǔn)接口,可依據(jù)RS-232串行協(xié)議,與下位單片機(jī)(采用TTL電平)進(jìn)行點對點串行通信。由于兩者之間存在邏輯電平差異,本文采用MAX232芯片完成電平轉(zhuǎn)換。單片機(jī)與PC的通信接口電路如圖2所示[3]。
圖2 單片機(jī)與PC串行通信接口電路
單片機(jī)控制程序模塊主要由串行初始化和串行中斷處理兩部分組成。
1)串口初始化
串口選擇方式1,即10位異步通信方式,設(shè)置SM0=0,SM1=1。
選擇T1為波特發(fā)生器,并使其工作在方式2,故設(shè)置TMOD=0×20。系統(tǒng)采用11.0592MHz晶振,為獲得9600波特率,TH1、TL1均設(shè)為0xFD。
初始化程序如下:
2)串行中斷處理
單片機(jī)共有5個中斷源,其中串口中斷為inter?rupt4[4]。當(dāng)上位PC機(jī)經(jīng)串行口發(fā)出控制指令后,下位單片機(jī)啟動中斷處理子程序:首先關(guān)閉串行口接收中斷標(biāo)志位RI,即RI=0;然后將串行輸入數(shù)據(jù)傳遞給Rdat,即Rdat=SBUF;最后對Rdat進(jìn)行判讀,控制下位機(jī)進(jìn)入對應(yīng)的工作狀態(tài)。判讀值與工作狀態(tài)對應(yīng)關(guān)系如下:
如果下位單片機(jī)單向接收上位機(jī)控制指令,則其main()函數(shù)僅需要執(zhí)行初始化子程序即可,表述如下:
上位機(jī)操作程序模塊采用了面向?qū)ο蟮脑O(shè)計方法,模塊結(jié)構(gòu)如圖3所示。
圖3 PC機(jī)操作程序模塊結(jié)構(gòu)圖
本文著重介紹兩個主要程序模塊設(shè)計。
1)串行通信模塊
系統(tǒng)采用Mscomm控件,通過事件驅(qū)動方式[5],實現(xiàn)與下位機(jī)的串行通信。當(dāng)控件檢測到下位機(jī)有事件發(fā)生時,即執(zhí)行相應(yīng)的控制程序,完成雙機(jī)通信任務(wù)??刂瞥绦蛑饕a如下:
2)報表及打印模塊
(1)報表生成
通過獲取Excel2003句柄,控制Excel的操作過程[6]。
①獲取Excel句柄
引用Microsoft Excel 11.0 object Library,如圖4所示。
建立Excel對象,獲得句柄:
②打開Excel工作簿
③創(chuàng)建表單
④填寫表單
圖4 引用Microsoft Excel類型庫
⑤保存工作薄
“cslj”意為測試路徑,用于建立存放測試報表的文件夾,由窗口輸入值確定。該文件夾與每位操作人員的每一次操作相對應(yīng),具有唯一性。
⑥交還Excel控制句柄
(2)報表打印
報表打印是通過引入CommonDialog函數(shù)完成[7]。
①打開表格文件
VB提供一組基于Windows的標(biāo)準(zhǔn)對話框界面,用戶可利用對話框工具在窗體上創(chuàng)建包括打開(Open)在內(nèi)的六種對話框。對話框不是標(biāo)準(zhǔn)控件,須在“工程”菜單中“部件”對話欄中選定Micro?soft Common Dialog Control 6.0,將該標(biāo)準(zhǔn)控件加入窗體,并通過對工具條編程實現(xiàn)打印設(shè)置[8]。
②打印設(shè)置
利用CommonDialog部件的打印對話框進(jìn)行打印設(shè)置[9]。
③打印
通過對工具條編程實現(xiàn)打印[10]。
系統(tǒng)可以工作在故障設(shè)置模式,依據(jù)上位機(jī)輸入的故障碼不同,可以對每一項測試內(nèi)容可以進(jìn)行故障設(shè)置,當(dāng)運(yùn)行到故障點時,會彈出相應(yīng)的故障提示信息[11]。操作人員可點擊“繼續(xù)”完成后續(xù)內(nèi)容測試,也可以點擊“終止”按鈕,退出當(dāng)前操作。故障狀態(tài)顯示如圖5所示。
圖5 故障狀態(tài)顯示界面
1)設(shè)置全局變量
設(shè)置全局變量用于工作模式的選擇。每一個測試單元工作時,會首先判斷各自對應(yīng)的全局變量值,以決定進(jìn)入“故障模式”還是“正常模式”[12]。
'測試故障標(biāo)志
2)故障設(shè)置
通過串口由上位機(jī)接收故障代碼[13]。
本文從操作人員技能培訓(xùn)實際需求出發(fā),以實際裝備為模擬對象,遵循“外觀一致、接口一致、操作流程一致”的基本原則,研制了基于VB與單片機(jī)的智能化導(dǎo)彈操作模擬訓(xùn)練系統(tǒng)。同時,在系統(tǒng)中增加了故障設(shè)定、特情處置及訓(xùn)練效能評估等一系列實裝所不具備的輔助訓(xùn)練功能,構(gòu)成一套功能完備、造價低廉、可高強(qiáng)度使用的模擬訓(xùn)練系統(tǒng)。較好地實現(xiàn)了控制培訓(xùn)成本、擴(kuò)大培訓(xùn)規(guī)模的設(shè)計要求,大幅度縮短了培訓(xùn)時間,顯著提高了培訓(xùn)效率,起到了“事半功倍”的良好效果。