2 目标自动跟踪系统的硬件电路设计
在基于 VxWorks嵌入式系统下,根据坦克目标自动跟踪系统的总体技术要求,需要完成 I/O板硬件结构电路的设计;PCI9054的配置;接口驱动程序的编写以及系统主程序的设计,实现目标自动跟踪计算机与坦克火控系统之间的数据通信。
下面就坦克目标自动跟踪系统总体设计进行论述。坦克目标自动跟踪系统包括通用视频跟踪器的所有功能,系统硬件由跟踪器主机、瞄准线功率驱动模块、视场图像及相关信息显示器、前端图像采集系统和连接电缆等几部分组成。跟踪器主机由主机板、 DSP板、图像图形板、I/O板、电源板和机箱、无源底板、插接件组成,主要完成图像采集、处理并输出控制;瞄准线驱动控制模块主要对跟踪器主机输出的控制信号进行功率放大来驱动瞄准线;显示器用于显示视野图像及相关信息;前端图像采集系统主要指火控系统光学改造部件及图像采集器 CCD;连接电缆用于实现目标自动跟踪系统各部件的信号连接。坦克目标自动跟踪系统组成如图1:
从图 1中可知,系统通信与控制模块(亦称 I/O板)是通用型的目标自动跟踪器与火控系统相连接的桥梁,在目标自动跟踪火控系统中具有极其重要的作用。它要求实时处理 DSP板传送的目标现在点和瞄准线中心的偏差量,最终转化为对瞄准线的控制量。将瞄准线控制量传送给瞄准线驱动控制模块,实现高精度控制瞄准线,使之始终对准目标。
3 在 VxWorks下的驱动程序设计
3.1设备驱动程序的设计与实现
应用程序必须通过驱动程序才能与硬件进行数据通信,而驱动程序的编写与操作系统密切相关。在 VxWorks操作系统中, BSP板级支持包向 VxWorks提供与硬件环境的接口,负责完成加电时的硬件初始化、为 VxWorks访问硬件驱动程序提供支持、将 VxWorks中与硬件有关以及与硬件无关的软件进行集成。因此在 VxWorks下编写驱动程序时首先要对 BSP进行修改配置。根据本系统的实际情况需要修改 config.h头文件:
#define DEFAULT_BOOT_LINE \ "fei(0,0)host: VxWorks h=172.16.21.100 e=172.16.21.253 u=chb pw=123456"在 VxWorks中,设备驱动程序有查询方式和中断方式二种。无论采用哪一种方式,设备驱动程序的基本流程都是相同的,如图 2:
从图 2中可以看出,编写设备驱动程序的第一步是获取硬件接口参数,包括内存映射地 址、I/O端口和系统中断控制器的输入(IRQ)。获取这些参数的方法由硬件的接口方式决定。例如,PCI总线作为一种即插即用的总线结构,在 BIOS和操作系统的支持下,能够自动为设备分配合适的硬件接口参数。其部分程序代码如下:
1) 定义常量和全局变量 #define PCI9054_DEVICE_ID 0x9054 #define PCI9054_VENDOR_ID 0x10B5 #define PCI9054_MEMSIZE 0x00001000 #define PCI9054_INIT_STATE_MASK (VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE) #define PCI9054_INIT_STATE (VM_STATE_ VALID | VM_STATE_ WRITABLE | VM_STATE_ CACHEABLE_NOT) Typedef struct pci9054Info { UNIT pciBus,pciDevice,pciFunc; Char irq; }PCI9054_INFO; LOCAL PCI9054_INFO pci9054InfoTable={-1,-1,-1,-1};
2)获取硬件接口参数 Void sysPci9054Init(void) {int pciBus, pciDevice, pciFunc; Int intdex = 0; UINT32 membaseCsr; Char irq; PCI9054_INFO pciRes; pciRes = &pci9054InfoTable; //利用供应商标识和设备标识确定设备的总线号、设备号和功能号,在系统中查找设备 pciFindDevice(VENDER_ID, DEVICE_ID, 0, &pciBus, &pciDevice, &pciFunc) == DDRESS_1, &membaseCsr); //确定映射到系统中的设备基地址 membaseCsr&= PCI_MEMBASE_MASK; //获得设备的 IRQ pciConfigInByte (pciBus, pciDevice, pciFunc,PCI_CFG_DEV_INT_LINE, &irq); //将设备映射到内存中 sysMmuMapAdd((void)membaseCsr, PCI9054_MEMSIZE , (UINT)PCI9054_INIT_STATE_MASK, (UINT) PCI9054_INIT_STATE); //保存总线号、设备号、功能号和 IRQ pciRes->pciBus = pciBus; pciRes->pciDevice = pciDevice; pciRes->pciFunc = pciFunc; pciRes->irq = irq; //配置设备的 PCI命令寄存器以控制设备 pciConfigOutWord(pciBus,pciDevice,pciFunc,PCI_CFG_COMMAND,PCI_CMD_MEM_ENAB LE|PCI_CMD_MASTER_ENABLE|PCI_CMD_PERR_ENABLE|PCI_CMD_SERR_ENABLE); }
3)设置硬件寄存器 Void setPci9054Reg() {……… }
4) 实现接口函数 Void sysPci9054Intr(int pci9054IntPara) {……… }
5) 启动设备 Void startPci9054() {……… }
3.2 系统主程序的设计
坦克目标自动跟踪系统的主程序设计流程如图 3所示:
目标自动跟踪系统的主程序的工作原理是:当炮长瞄准目标并测距后,测距指令同时作为自动跟踪指令启动自动跟踪。自动跟踪器根据 CCD摄像机视频信号逐帧进行图像处理,求出瞄准线与目标的失调量,驱动瞄准线自动跟踪目标。瞄准镜输出目标距离、目标角速度和火炮位置给火控计算机。火控计算机根据目标距离、目标角速度、横风速度等解算弹道并通过炮控装定火炮的射击诸元。当火炮装定到位时,计算机给出允许射击信号接通击发电路,此时若炮长按下射击按钮,火炮即可发射。火炮发射后退出自动跟踪,由炮长操纵瞄准镜。
4 结论
在基于 VxWorks的嵌入式系统下开发的国产某新型坦克的目标自动跟踪系统满足了目标自动跟踪系统的实时性要求,能够对机动目标状态信息进行处理,主要达到的性能和技术指标如下:在 3000m有效射程内,能实时、准确地实现对单个机动目标的捕获和跟踪,跟踪丢失率≤ 10%;在目标被遮蔽后,具备预测跟踪能力。跟踪精度(包括火控系统误差在内)为 0.6mil。由以上结论可以看出,本系统已经具备了初步智能化目标自动识别、跟踪及较好的抗干扰能力,实时性达到系统要求,并且有进一步提高的基础,具有广泛的应用前景。本文作者创新点:首次在VxWorks嵌入式操作系统下开发设计了目标自动跟踪系统,提高了坦克火控系统对单个机动目标的捕获和自动跟踪能力。