1 引 言
随着列车全面提速以及铁路部门客货运输量不断增大,铁路线路负荷不断加重,铁路安全问题日益突出。目前铁道检测部门主要采用铁轨检查车检测铁轨质量,但是由于铁轨检查车价格昂贵,各机务段配备的数量有限,不能满足铁路检测部门对铁轨质量数据连续检测和积累的要求。因此铁道检测部门迫切需要一种可靠性高,实时性强的小型智能系统作为铁轨检查车的补充。针对这种情况,本文设计了一种新型铁路线路质量远程实时监测系统。本系统综合利用移动通信和嵌入式系统设计等技术,实现了铁轨数据的实时采集、分析、传输,以及自动评估和报警。
ARM技术是嵌入式系统方面的主流技术。目前市场上ARM芯片速度可达几百兆,以此为主控芯片可在硬件上实现高速、高精度且具有一定处理能力的数据采集处理通信系统。本系统采用的Samsung公司的S3C2410处理器,结合Windows CE操作系统来实现其功能。S3C2410处理器是一款低价、低功耗、高性能的16/32位系统微处理器,在嵌入式应用领域有着良好的表现。S3C2410具有丰富的接口资源,能够满足本系统的设计需求。Windows CE操作系统是专门为掌上型电脑设计的电脑环境,它将便携式技术和现有的Windows技术相结合,并提供了丰富的驱动资源。本系统在设计中采用了CMDA模块和USB接口。原始数据可通过USB接口取出,进一步进行事后处理。本系统通过CDMA模块连接无线网络,将处理完毕的数据实时地送到客户端,以实现特定信息查询和告警功能。
2 系统工作原理
系统分为ARM处理器模块、协处理器FPGA模块、A/D模块、传感器模块和外部通信模块5部分,基本结构如图1所示。ARM处理器和现场可编程门阵列(FPGA)共同组成监控系统的核心处理单元。传感器模块采集的模拟信号经A/D模块量化后,存入FPGA生成的FIFO中;ARM处理器通过FPGA产生的中断信号来读取FIFO中的数据;数据处理完毕后ARM处理器通过FGPA控制CDMA模块建立TCP/IP连接,连接一旦建立则通过无线网络将数据传回客户端。
图1 系统结构框图
2.1 协处理器FPGA模块
本系统的协处理器采用Xilinx公司的FPGA,型号为SPARTANIIE XC2S100E。该芯片共有2700个逻辑单元,10万个逻辑门,片内块RAM为40 KB。协处理器内部结构见图2。其具体实现以下功能:
A/D模块读/写时序控制;
生成3个FIFO,其主要功能是存储经A/D编码的数据;
提供ARM处理器控制信号。
FPGA芯片分4部分来实现上述功能:
(1) 内部控制信号产生器
FPGA对50 MHz时钟分频产生A/D芯片采样时钟Sampleclk和ARM处理器外部时钟Sysclk;Sysclk经锁相环电路(PLL)后产生ARM处理器工作所需的时钟信号。
(2) ARM控制器
提供ARM处理器正常工作所必须的各种控制信号;实现ARM处理器地址总线、数据总线和外部中断信号接入。
(3) A/D控制器
控制A/D模块的数据转换。产生A/D转换起始信号(/HOLD),检测数据转换完成信号(/EOC),产生FIFO写入信号,实现数据转换通道选择。
(4) FIFO存储器
生成3个16位、数据深度为511的FIFO,完成A/D转换数据的存储。
2.2 ARM处理器模块
ARM处理器模块由FLASH、SDRAM和S3C2410共同构建。本系统选配用Samsung公司的K9F1208U0A构建8位FLASH存储器系统。K9F1208U0A单片容量为64 MB;选用两片单片容量为32 MB,数据宽度为16位的HY57V561620CT,并联构建32位SDRAM存储器系统,共64 MB的SDRAM空间可以满足嵌入式操作系统和各种复杂算法的运行要求。ARM处理器对各模块的控制则是通过底层驱动控制协处理器FPGA产生各种控制信号来实现。
图2 协处理器内部结构图
2.3 A/D模块
A/D转换芯片采用TI公司的ADS8364芯片,它具有以下性能:
6个独立数据输出通道;
模拟信号差分输入;
6个独立的16位ADC;
采样频率最高为250 MHz;
采样精度到最后两位,且抗噪性能好。
通过FPGA内产生的采样时钟信号控制A/D模块的采样频率。FPGA输出宽度为一个时钟周期的低电平脉冲到/HOLD_X引脚,A/D转换开始,经16.5个时钟周期后A/D转换完成。A/D模块根据FPGA内产生的读信号和通道选择信号选择相应的FIFO存储数据。
2.4 传感器模块
传感器模块可以根据所须采集的数据来选择。本系统主要运用于火车机车车体震动测量,所以采用3个使用ADXL105高精度单轴加速度传感器芯片制作的加速度测量模块。测量模块分别安置于车体底部的垂直方向和水平方向,用于测量车体在X、Y、Z方向上的加速度。测量数据以差分信号的形式输入到精密放大器中,经比较放大后直接送到A/D模块中。
2.5 外部通信模块
外部通信模块由两部分组成: 485通信模块和CDMA模块。
485通信接口采用的是MAXIM公司的MAX1490芯片。这是一款完全隔离的485数据接口芯片,单工工作方式,传输波特率最大可达2.5 Mbps。其输出引脚直接与ARM处理器的串口2(UART2)相连;ARM处理器通过串口2读取时间和坐标等相关数据的广播信息。ARM处理器串口0(UART0)与AnyData DTGS800 CDMA模块相连;监测数据经预处理后通过CDMA模块发送到地面服务器。
3 软件设计
软件设计主要使用Embedded Visual C++语言和VHDL语言。VHDL语言用于编写FPGA程序;ARM处理器的调试则使用C语言。
系统开始工作后ARM处理器和FPGA协处理器中的FIFO开始初始化。经A/D转换后的数据存入3个数据输出通道对应的FIFO中。FIFO中的数据容量达到一定限度即产生中断,ARM处理器中的主程序产生中断等待线程;一旦中断产生则进入中断服务程序,读取数据。数据经检测程序进行预处理后通过CDMA模块发送出去。图3为系统工作流程图。
图3 系统工作流程图
3.1 系统的同步处理
因为A/D模块与FPGA协处理器上电即开始工作而ARM处理器完成系统加载,端口初始化大概需要10 s左右的时间。在这个过程中FIFO中存储的数据已经被写满。如果ARM处理器在程序加载完成后直接使用这部分数据则会产生检测结果与广播信息不匹配的问题。为防止系统因各模块工作时序混乱而出现的数据检测错误的情况。在ARM完成Windows CE系统加载并进入检测主程序后产生一个清零信号用于清除3个FIFO中的数据。实现系统的同步工作。
3.2 中断的产生及处理
在本系统中如果对A/D转换数据采用实时读取的方式,则必然导致ARM处理器工作效率较低,所以在电路设计时采用了中断方式。A/D模块输出数据以循环方式分别写入3个FIFO中。一旦FIFO中可使用数据容量减小到一定限度则产生中断,ARM处理器进入中断服务程序并读取FIFO中的数据。
3.3 列车广播信息读取
火车机车广播信息通过监控设备不断地发送广播信息。信息传输以标准的RS485传输协议进行,通信波特率为9600 bps,采用10位异步通信方式:1位起始位+8位数据位+1位停止位。每组数据包由17字节数据组成,包括月日时分秒、时速、公里标、交路号和车次。数据格式为:起始位+数据位+停止位+BCC校验。其中:起始位为1字节,固定为0x02;数据位为14字节;停止位为1字节,固定为0x03;BBC校验为1字节,是前面15字节的“异或”校验。
软件实现:接收广播信息程序的实现主要是利用了Windows的消息机制。首先初始化S3C2410芯片的UART2口,包括设置波特率为9600 bps,配置端口,并将端口与事件绑定。然后启动线程不断侦听端口。如果有数据输入则会产生读取事件,此时线程读取一个字节的数据,并由串口将数据发送至主线程。最后,主线程通过相应函数接收数据,数据接收完毕则对数据进行长度检测和异或校验。如果检验通过则将数据转存入二级缓存(一级缓存继续存放数据),并通知上级模块读出数据;然后清空二级缓存,等待下次数据进入。广播信息读取程序界面见图4。
3.4 加速度数据获取
数据采集是通过应用程序与驱动程序的交互来完成的。实现交互的方式有很多,例如可以利用callback函数(回调函数)或将函数应用程序中的数据处理函数指针传给驱动,以及使用SETEVENT等来实现。考虑到软件的升级,本系统采用的是SETEVENT方法。Windows CE系统与PC上的系统存在很大差异。一旦系统的某些模块有所改动,必须重新编译Windows CE系统和烧写FLASH,工作量较大。使用SETEVENT的方法可在不改动驱动的情况下对应用程序进行调试,从而避免了反复烧写FLASH。
软件设计思路:数据采集软件启动后必须对FIFO中数据进行复位。因为从Windows CE系统启动到数据采集软件开始工作需要15 s,但 A/D模块及FIFO模块在系统上电后即开始工作,因此如果使用这部分数据就会造成数据与列车广播信息的不匹配。驱动程序在响应中断后通过SETEVENT机制通知应用程序,此时数据读取控制权就完全交给了顶层用户。用户可以根据自己的需要来控制数据的读取及处理。数据采集程序界面见图5。
4 结束语
本文所研制的系统综合利用了移动通信和嵌入式系统设计等技术,与传统检测设备相比,大大提高了线路监测的实时性及系统性。同时,该系统注重监测数据处理和检测方法的研究,并在实际系统中加以应用。
本系统在设计时充分考虑了电路的灵活性和通用性,可根据不同的功能要求编写相应的VHDL语言程序。系统所使用的Windows CE操作系统可以任意裁剪,这对于功能的转换很有帮助。本系统已研制完毕,现处于现场实验阶段。
图4 广播信息读取程序 图5 数据采集程序