实时数据采集与存储系统的实现方法

实时数据采集与存储系统的实现方法,第1张

 

  1 引言

  2 硬件组成及注意事项

  为了利用现有的硬件设备,降低成本;我们采用ADLINK公司出品的PCI-7300A_RevB超高速数字I/O卡作为数据采集部分。该卡的主要特性如下:

  ·32位数字I/O通道

  ·32位PCI总线

  ·通过触发信号控制数据采集 *** 作的开始。

  ·100针SCSI连接器

  ·分散/聚拢方式的DMA

  ·最高传输速率80Mbytes/sec

  要实现实时高速的数据存储,使用的一般的硬盘是不行的。所以我们选用希捷公司出品的型号为ST3146707LC的SCSI硬盘,该硬盘的容量是146GB,能满足记录大量数据的需要,其转速为10Krpm。相应的SCSI硬盘控制器,选用Adaptec公司出品的型号为Adaptec19160的Ultra160-SCSI硬盘控制器。

  在搭建硬件平台的过程中有些问题是必须注意的,否则系统不能正常工作。首先,PCI-7300A_RevB卡虽然采用分散/聚拢方式的DMA,但它对CPU资源的占用率是非常高的。经过实验证明,要保证整个数据采集与存储系统正常工作,只能使用奔四1.7G以上的计算机系统。其次,Windows系统允许多个设备共享一个中断请求号(IRQ)。为了保证存储过程的实时性,必须确保SCSI硬盘控制器和PCI-7300A_RevB卡使用不同的IRQ。可以在主板BIOS里把Pnp(即插即用)/PCI设备的IRQ进行手动配置。最后Windows2000ServicePack2(SP2)及早期版本不支持大于137GB容量的硬盘。须要先安装ServicePack3,再在注册表(HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAtapiParameters)里添加一个REG_DWORD类型的参数EnableBigLba,并把值设成0x1。这样146GB的硬盘才能工作正常。

  3 软件设计

  软件设计直接决定硬件是否能正常工作,以及能否充分发挥硬件的性能。

  3.1 PCIS-DASK及双缓冲区模式的工作原理

  PCIS-DASK是ADLINK公司为自己的产品提供的驱动程序包,提供了专门用于实现高速数据采集的连续多缓冲区 *** 作的一组API函数。通过这组API函数,我们可以按照双缓冲区的原理,非常方便地实现对数据的实时、高速、连续的采集与存储。

  双缓冲区模式,在工程上称为“乒乓”缓冲区模式。跟常用的单缓冲区模式相比双缓冲区模式的优点是,它可以使用较小容量的内存,不间断地缓冲几乎无限量的数据(输入与输出端需协同工作)。这种缓冲区模式的工作原理是:在内存里开辟两块容量相等的缓冲区(以下将分别它们称为第一缓冲区和第二缓冲区)作为连续数据输入的缓冲区。工作开始时,数据采集卡首先将数据写入第一缓冲区中,在数据采集卡开始把数据写入第二缓冲区的同时,用户程序可以根据自身需要取出第一缓冲区中的数据做特定的处理。当第二缓冲区被写满后,数据采集卡回到第一缓冲区的起始处,以覆盖旧数据的方式,把新数据写入第一缓冲区中;与此同时用户程序取出第二缓冲区中的数据。整个数据采集处理过程可以如此不断地循环进行下去。

  3.2 板卡驱动设置及注意的问题

  对板卡驱动的深刻理解是编写好数据采集于存储程序的前提。在连续数据输入模式下,板卡驱动程序需要在系统内存里开辟一块缓冲区做为二级缓存,用户可以设置该缓冲区的大小。方法是:从菜单开始/程序/PCI-DASK/NuDAQPCIconfiguraTIonUTIlity打开DASK2000DeviceDriverConfiguraTIon对话框,从CardType组合框中选择Pci7300A_RevB项,在DI栏输入你想要开辟的缓冲区容量,点击OK按钮完成设置。需要注意的是板卡驱动设置的缓冲区(简称驱动缓冲区)容量与用户程序开辟的缓冲区(用户缓冲区)容量存在着一定关系。经过我们多次实验,得出驱动缓冲区容量大约是用户缓冲区的3倍;因此,当驱动缓冲区过小,而用户缓冲区较大时,会出现错误。

  过小,而用户缓冲区较大时,会出现错误。

  3.3 VisualC++++开发环境的设置

  为了使用PCIS-DASK提供的实现连续多缓冲区 *** 作的API函数,以及初始化板卡、设置板卡工作方式的API函数;需要VisualC++连接PCI-DASK提供的动态连接库(Pci-dask.lib)。具体方法是:打开工程,从菜单Project/SetTIng…打开ProjectSetting对话框,切换到Link选项卡,在Object/librarymodules拦中添加Pci-dask.lib,点击OK按钮完成设置。最后在工程中加入头文件Dask.h.。

  

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2491201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存