2 系统结构设计
整个系统由计算机、采集卡、实时记录系统和连续采集存储回放软件四大部分组成(如图1所示)。实时记录系统由UltraSCSI-320实时记录控制器和UltraSCSI-320盘阵两大部分组成,可以根据用户不同的存储时间决定存储容量的大小。信号回放时,根据用户不同的要求可以任意选择回放数据的起始位置和结束位置。
一般IDE硬盘的数据传输率比较低,为了实现实时高速的数据存储,选用希捷转速为10 Krpm的SCSI硬盘;相应的SCSI硬盘控制器选用Adapetec公司的Ultra320-SCSI硬盘控制器,用以上硬件组建RAIDO磁盘阵列结构实现80 MB/s连续采集存储速度。
在要求高速、实时、连续采集和存储的情况下,一方面要求系统不间断的进行信号采集,同时还要进行数据的实时存储,否则将会丢失数据,造成数据不完整。我们在系统结构设计中中通过采集卡驱动提供的事件通知回调模式,完成数据采集和数据存储工作。采用双缓冲区模式,当采集到的数据写入第一缓冲区开始时,在事件回调函数中把第二缓冲区的数据存入SCSI硬盘;当数据写入第二缓冲区时,在事件回调函数中把第一缓冲区的数据存入SCSI硬盘,如此循环。另外通过实际实验测试Ultra320-SCSI硬盘控制器配合希捷公司出品的ST3146707LC SCSI硬盘组成的RAIDO磁盘阵列,持续写入速率能达到200MB/s。远大于80 MB/s的采集速率。因此当数据采集线程写满其中一个缓冲区之前,数据存储线程已经把另一个缓冲区里的数据存储入SC-SI硬盘。所以这种方法能保证数据的实时性、完整性和连续性。
在测试中发现:数据稳定传输的速率与缓冲区设置大小及SCSI磁盘的个数有密切关系。同时内存申请方式采用虚拟分配,使内存页面对齐,提高传输速率。
3 软件结构设计
3.1 软件功能模块设计
系统由采集卡控制模块、显示模块、连续采集控制模块以及回放控制模块组成,如图2所示。
CAcqCard类:实现对采集卡的控制。包括采集卡参数配置、单次采集、连续采集、连续存储、连续回放等功能。
CCurveShow类:实现信号的时域显示、幅度轴缩放、时间轴缩放、信号大小标定、信号色彩选择等。
CStreamDisk类:实现连续采集存储的参数设定。
CShowStream类:实现连续回放的参数设定。
3.2 控制界面
基于VC平台开发的高速高分辨率信号采集存储回放系统具有良好的人机界面,易于用户操作,如图3所示。
3.3 软件核心模块设计原理
我们按照双缓冲区的原理,开发了基于PCI总线的驱动软件包及专门用于高速信号采集的API函数,实现对数据的实时、高速、连续的采集存储与回放。
双缓冲区模式在工程上称为“乒乓”缓冲区模式。工作原理是:在内存里开辟两块容量相等的缓冲区作为连续数据输入的缓冲区。开始采集时,信号采集卡首先将数据写入第一缓冲区中,当信号采集卡开始把数据写入第二缓冲区的同时,用户程序可以根据自身需要取出第一缓冲区中的数据做特定的处理。当第二缓冲区被写满后,信号采集卡回到第一缓冲区的起始处,以覆盖旧数据的方式,把新数据写入第一缓冲区中;与此同时用和程序取出第二缓冲区的数据。整个数据采集处理过程可以如此不断的循环进行下去。
双缓冲区模式的优点是,它可以使用较小容量的内存,不间断的缓冲几乎无限量的数据(输入与输出端需协同工作)。软件核心模块流程如图4所示。
3.4 软件核心模块代码
(1)连续采集控制部分
4 性能评估及未来展望
为了验证该系统的性能,我们对其所能达到的采集和存储速率及数据正确率进行了测试和分析。在测试中使用加拿大著名GAGE公司生产的CG4300高速信号产生卡设计特殊信号源(如图5所示)。同时设计了查看信号完整性的程序。
经过测试发现:当内存缓冲区设置合适的时候,可以稳定持续地以80 MB/s的速度连续采集存储;当缓冲区设置过小时,连续采集存储会发生中断。
由于数据采集和存储过程双向占用PCI总线带宽,在32位/33 MHz PCI总线上,实现了48 MB/s的连续采集存储回放速度;64位/66 MHz PCI总线带宽典型的输出数据吞吐量为528 MB/s,80 MB/s(100%正确率)的采集和存储速度相当于占用160MB的总线带宽,同时磁盘阵列写入速度稳定在200 MB/s,远高于数据采集的速度,因此在数据采集方面还有很大的提高空间,目前我们正在研究开发200 MB/s的高速高分辨率信号连续采集存储与回放系统。