基于VB与单片机的模拟训练系统设计∗
2020-10-30张浩宇吕晓峰
张浩宇 张 旭 胡 慧 吕晓峰
(1.山东旅游职业学院 济南 250200)(2.海军航空大学 烟台 264001)
1 引言
导弹装备操作人员技能培训,具有人员多、训练强度大、设备利用率高等突出特点,在操作过程中通常需引入突发故障,以训练人员的应急处置能力。实际的导弹装备结构复杂、造价高,使用次数和寿命都有严格要求,且很难产生和复现各种故障现象。因此,利用实装进行操作人员技能培训,既不经济也不现实,无法取得应有的培训效果。本文介绍一种基于VB与单片机的模拟训练系统,可很好满足导弹装备高强度培训的需求。
2 系统硬件组成
系统采用上位机(主控计算机)模块和下位机(STC单片机)模块两级结构形式。模拟训练系统组成框图如图1所示。
上位机模块由PC机、故障设置导演台及打印机三个部分组成。其中,PC机为中心显示控制单元,用于人机对话操作,实现虚拟面板操作控制及测试数据动态显示;故障设置导演台主要用于设置操作故障,并实时监控受训人员的操作状态和过程;操作数据形成报表,由打印机进行输出。
图1 模拟训练系统组成框图
下位机模块由 STC89C52单片机[1]核心板、系统自检、交直流供电组合、模拟VXI机箱、综合适配单元、继电器控制单元、数据采集及变换板、模拟信号发生器、面板操作状态指示单元等组成。其中,单片机核心板作为上位机命令的执行单元,由STC89C52单片机和外围电路组成,通过USB(转RS232)接口,与上位PC机相连接,接收上位机控制指令,控制其他功能单元,并将数据及状态回传[2];系统自检单元提供原始参量(如电阻值、开关状态值)用于全系统自检;交直流供电组合则为全系统工作提供交、直流电源;模拟VXI机箱用于产生VXI自检信号,以完成机箱自检过程;综合适配用于实现采集模拟量的调理;继电器控制单元用于信号及数据的输入输出控制;数据采集及变换板用于各路输入数据的信号调理及变换处理;模拟信号发生器用于产生开关量、数字量及模拟量等输出信号;面板操作及状态指示单元,用于监视面板开关及按键信息,并控制面板状态指示灯及蜂鸣器动作,以实时显示系统工作状态。
3 系统软件设计
在基于VB与单片机的模拟训练系统中,软件设计是重要的组成部分,包括下位机单片机控制程序模块和上位PC机操作程序模块。下位机与上位机之间采用RS232串行通信方式。
3.1 单片机控制程序模块
上位PC机内配有RS-232串行标准接口,可依据RS-232串行协议,与下位单片机(采用TTL电平)进行点对点串行通信。由于两者之间存在逻辑电平差异,本文采用MAX232芯片完成电平转换。单片机与PC的通信接口电路如图2所示[3]。
图2 单片机与PC串行通信接口电路
单片机控制程序模块主要由串行初始化和串行中断处理两部分组成。
1)串口初始化
串口选择方式1,即10位异步通信方式,设置SM0=0,SM1=1。
选择T1为波特发生器,并使其工作在方式2,故设置TMOD=0×20。系统采用11.0592MHz晶振,为获得9600波特率,TH1、TL1均设为0xFD。
初始化程序如下:
2)串行中断处理
单片机共有5个中断源,其中串口中断为inter⁃rupt4[4]。当上位PC机经串行口发出控制指令后,下位单片机启动中断处理子程序:首先关闭串行口接收中断标志位RI,即RI=0;然后将串行输入数据传递给Rdat,即Rdat=SBUF;最后对Rdat进行判读,控制下位机进入对应的工作状态。判读值与工作状态对应关系如下:
如果下位单片机单向接收上位机控制指令,则其main()函数仅需要执行初始化子程序即可,表述如下:
3.2 PC机操作程序模块
上位机操作程序模块采用了面向对象的设计方法,模块结构如图3所示。
图3 PC机操作程序模块结构图
本文着重介绍两个主要程序模块设计。
1)串行通信模块
系统采用Mscomm控件,通过事件驱动方式[5],实现与下位机的串行通信。当控件检测到下位机有事件发生时,即执行相应的控制程序,完成双机通信任务。控制程序主要代码如下:
2)报表及打印模块
(1)报表生成
通过获取Excel2003句柄,控制Excel的操作过程[6]。
①获取Excel句柄
引用Microsoft Excel 11.0 object Library,如图4所示。
建立Excel对象,获得句柄:
②打开Excel工作簿
③创建表单
④填写表单
图4 引用Microsoft Excel类型库
⑤保存工作薄
“cslj”意为测试路径,用于建立存放测试报表的文件夹,由窗口输入值确定。该文件夹与每位操作人员的每一次操作相对应,具有唯一性。
⑥交还Excel控制句柄
(2)报表打印
报表打印是通过引入CommonDialog函数完成[7]。
①打开表格文件
VB提供一组基于Windows的标准对话框界面,用户可利用对话框工具在窗体上创建包括打开(Open)在内的六种对话框。对话框不是标准控件,须在“工程”菜单中“部件”对话栏中选定Micro⁃soft Common Dialog Control 6.0,将该标准控件加入窗体,并通过对工具条编程实现打印设置[8]。
②打印设置
利用CommonDialog部件的打印对话框进行打印设置[9]。
③打印
通过对工具条编程实现打印[10]。
4 故障设置
系统可以工作在故障设置模式,依据上位机输入的故障码不同,可以对每一项测试内容可以进行故障设置,当运行到故障点时,会弹出相应的故障提示信息[11]。操作人员可点击“继续”完成后续内容测试,也可以点击“终止”按钮,退出当前操作。故障状态显示如图5所示。
图5 故障状态显示界面
1)设置全局变量
设置全局变量用于工作模式的选择。每一个测试单元工作时,会首先判断各自对应的全局变量值,以决定进入“故障模式”还是“正常模式”[12]。
'测试故障标志
2)故障设置
通过串口由上位机接收故障代码[13]。
5 结语
本文从操作人员技能培训实际需求出发,以实际装备为模拟对象,遵循“外观一致、接口一致、操作流程一致”的基本原则,研制了基于VB与单片机的智能化导弹操作模拟训练系统。同时,在系统中增加了故障设定、特情处置及训练效能评估等一系列实装所不具备的辅助训练功能,构成一套功能完备、造价低廉、可高强度使用的模拟训练系统。较好地实现了控制培训成本、扩大培训规模的设计要求,大幅度缩短了培训时间,显著提高了培训效率,起到了“事半功倍”的良好效果。