摘 要: 雷达中继级设备是连接雷达设备与管制中心的关键设备,但目前对该类设备的故障检测还没有行之有效的方法。针对这一问题,提出了一种可以快速定位中继级设备故障的解决方案。重点阐述了方案中设备的数据流模型、用户空间软件设计以及底层驱动程序设计三个方面的内容。试验结果表明,该设备可以帮助技术人员有效提高雷达中继级设备故障检测效率。 关键词: ;;;信号检测
电子技术和计算机技术的迅速发展推动了雷达技术的发展。雷达凭借其发现目标距离远、测定目标坐标速度快、能全天候工作等优良特性在警戒、引导、武器控制、侦察等方面得到广泛应用,成为现代战争中的重要电子装备[1]。但雷达中继设备一旦发生故障将使这些优良特性受到严重影响,据统计,中继故障设备占所有故障设备的70%左右,而中继设备维修的基础建设还很薄弱,缺乏集成、高效的故障检测手段。然而,中继级设备具有雷达数据转发、信号模拟、接口协议分析、链路质量检测等功能,可以满足中继设备维修的要求。 Z85230是Zilog公司生产的比较成熟的串行通信控制芯片,支持的协议丰富、操作方便,是该设备的关键部件。嵌入式处理器本身集成了丰富的外设,成本低、体积小、功能强,是中继信号检测设备的控制器[2-4]。 1 设备的功能要求 中继信号检测设备(以下简称检测设备)具有以下功能: (1)3个10/100 Mb/s对外网口,方便参数配置和接入雷达服务器主机; (2)4个串行接口,同时支持HDLC/BSC/ASYNC,可接入不同的雷达或中继设备,接口最高速率达115 200 b/s; (3)支持网口到串口、串口到网口的双向数据转发; (4)能够检测雷达设备的接口协议; (5)能够检测中继级设备的链路质量。 2 硬件平台 维修平台采用C/S设计模式,如图1所示。在硬件方面采用ARM处理器AT91RM9200作为检测设备的控制器,是控制模块的核心器件;Z85230构成检测设备的串口模块。
3 嵌入式软件设计与实现 3.1 数据流模型及其分析 根据设备的功能要求将检测设备的数据流分为两大类:(1)航空管制中心用户对设备的配置数据流,双方按照约定的通信协议发送配置和响应信息;(2)雷达信息数据流,可由雷达数据服务器主机发起,也可以由雷达中继级设备发起。前者属于雷达数据的回放过程,雷达数据从雷达主机经检测设备回放出来;后者属于雷达数据的录制过程,数据经检测设备最后转发给雷达数据分析软件。如图2所示。
3.2 软件模块划分及其实现 按照功能将检测设备的软件部分划分为通信模块、配置模块、转发模块、协议分析模块、IP地址搜索模块和底层驱动模块。其中IP地址搜索模块属于单独的模块,与其他模块没有关系。模块间关系如图3所示。
3.2.1 通信模块 该模块的主要功能包括:(1)侦听来自配置管理软件的连接请求;(2)接收来自配置管理软件的配置命令;(3)接收来自网口的雷达数据;(4)将配置命令的执行结果以及协议分析模块的分析结果发送给配置管理软件;(5)设备关闭或重启时对内存进行清理。 配置命令通过以太网传输,延迟相对较大。为降低配置命令的发送延迟和接收延迟,设置发送器直接从用户空间获取数据,接收器直接将数据交付给用户空间缓存,而不经过中间缓存。 3.2.2 配置模块 配置模块用于解析和执行配置命令,并将执行结果交付给通信模块最终发送给配置管理软件。串口配置命令是该模块中最重要的命令,该命令用于对串口参数进行配置,直接影响到串口能否正常工作。该命令将串口配置参数传输给底层驱动,数据量相对较大,不能使用get_user()和put_user()等少量数据传输函数。本文采用ioctl命令配合copy_from_user()和copy_to_user()函数实现用户空间与内核空间之间的大量数据交换。串口配置命令的关键代码如下: //用户空间关键代码 int SerialPortConf(int fd_sock,Conf_cmd *cmd){ …… sprintf(dev_name,"%s%d",devbaseName,index); fd_serial=open(dev,O_RDWR); ioctl(fd_serial,TIOCCONFIG,cfg_data);//调用ioctl close(fd_serial); ……} //内核空间关键代码 int z85230_ioctl(struct tty_struct *tty,struct file * file, unsigned int cmd,unsigned long arg){ …… switch(cmd){ case TIOCCONFIG: copy_from_user(confBuf,(void __user*)arg,CONFIG_SIZE); //拷贝数据到内核空间 z85230_config_format(info->pChannel,confBuf,regTable); //格式化配置信息 //根据配置信息配置Z85230 z85230_config(info->pChannel,regTable); break; ……}} 3.2.3 转发模块 转发模块按照雷达中继检测设备的数据流模型将数据转发到网口或者串口,其中转发到网口的数据流按照转发表的设置进行,转发到串口的数据流按照数据帧标示进行。本文中为每一个串口建立两个线程,分别负责发送、接收和封装成帧的工作。 3.2.4 协议分析模块 在配置管理软件的配合下,该模块实现从未知雷达协议的串行链路中推断出雷达协议。一则便于对未知雷达协议的串行链路进行故障诊断;二则便于对中继设备的参数进行配置。本项目中使用两片CPLD对各串口各引脚的状态进行采集,并将采集结果发送给配置管理软件,由配置管理软件对采集结果进行分析推断,最后再将推断的结果发送给检测设备作为协议分析的基参数,检测设备在此基础上重新采集各引脚的状态,重复以上过程即可逐渐接近雷达协议。 3.2.5 IP地址搜索模块 航空管制中心的中继设备一般以IP地址作区分,随着规模的不断扩大,人工管理将逐渐变得异常困难且效率低下。该模块通过响应配置管理软件的地址搜索指令,将设备的基本信息发送给配置管理软件,因此在未知设备IP地址的前提下也能对设备进行配置管理。本项目中,在检测设备端启动一个进程负责侦听来自网络的地址搜索指令,当识别到搜索指令后该进程将设备的基本信息以广播的形式发送出去。 3.2.6 底层驱动模块 检测设备要求同时支持多种链路控制协议,这是驱动程序设计的关键。本项目采用Linux下tty设备驱动程序框架结构[5],该结构封装了通用的设备访问接口,只需编写链路规程和硬件驱动即可方便地对设备进行控制。以下是Z85230的中断处理和tty驱动程序的设计。 (1)中断处理函数的设计 Z85230芯片的每个通道都有3个中断源,按照中断优先级由高到低分别为:接收中断、发送中断、外部/状态中断。另外A通道中断源优先级高于B通道。中断处理流程如图4所示。
(2)构建tty驱动程序 tty驱动程序最重要的数据结构是tty_driver,它用于向tty核心注册和注销驱动程序,该结构提供了tty驱动程序最重要的信息。为获得tty_driver对象,首先调用alloc_tty_driver(),该函数向tty核心申请并返回指向tty_ driver对象的指针。 初始化tty_driver对象之后,调用函数tty_register_driver(driver),并传递初始化的tty_driver对象,即可向tty核心注册该驱动。 最后一步是注册中断服务程序,本项目中两片Z85230分别连接在两条不同的中断线上,因此需将中断处理函数注册到不同的中断号上。调用Linux内核中断注册函数request_irq()即可完成中断注册过程。 request_irq(z85230_irqs,z85230_interrupt,SA_INTERRUPT,"Z85230_SERIAL",&z85230_devs); 注意:z85230_devs为触发中断的设备;z85230_irqs为中断号,两芯片需单独注册;z85230_interrupt为中断处理函数。 4 设备功能测试 4.1 转发功能测试 测试过程:首先使用配置管理软件对设备的串口进行配置,参数如表1所示。
4.2 协议分析功能测试 测试过程:将串口1连接到雷达情报服务器的输出端口,启动协议分析功能,对情报服务器的输出端口的数据协议进行分析,协议分析过程如图6所示。