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

最新更新时间:2012-02-16来源: 互联网关键字:数据采集  存储系统 手机看文章 扫描二维码
随时随地手机看文章

1 引言

  随着信息科学的飞速发展,数据采集和存储技术已经是数字信号处理中非常重要的环节,将决定整个系统的性能。它广泛应用于雷达,通信,遥测遥感等领域。它己经成为人们获得外界信息的重要手段。基于总线的数据采集与存储系统,由于可靠且易于实现、经济等优点,得到了广泛的应用。但当数据传输率很高时,保持高速数据存储过程的可靠性、实时性将会成为一个比较棘手的问题。为此一些厂商提供了双总线技术、64位/66MHzPCI总线系统来解决这问题。但这些技术较为昂贵,且忽略了现有的硬件设备。经过实验与探索,我们选用ADLINK公司的PCI-7300A_RevB超高速数字I/O卡,利用现有的单(32位/33MHz)PCI总线的计算机系统构成低成本的硬件平台,并利用自己开发的软件系统,最终实现了高速(45Mbytes/sec)持续的数据采集于存储。

  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.。

3.4 多线程的实时数据存储软件设计

  在要求高速、实时和连续采集和存储的情况下,一方面要求系统不间断地进行数据采集,同时还要进行数据实时地存储,否则将会丢失数据,造成数据不完整。为了解决这个问题,我们在软件实现中,引入了Windows的多任务处理技术(multitasking)。在程序里创建两个工作线程分别完成数据采集和数据存储工作。缓冲方式采用上面所说双缓冲区模式,当数据采集线程(SampleThreadProc)把采集到的数据写入第一缓冲区时,数据存储线程(StorageThreadProc)把第二缓冲区的数据存入SCSI硬盘;当数据采集线程把数据写入第二缓冲区时,数据存储线程把第一缓冲区的数据存入SCSI硬盘;如此循环。另外通过实际实验测试Adaptec19160Ultra160-SCSI硬盘控制器,配合希捷公司出品的ST3146707LCSCSI硬盘,持续写入速率能达到80Mbytes/sec。远大于45Mbytes/sec的采集速率。所以当数据采集线程写满其中一个缓冲区之前,数据存储线程已经把另一个缓冲区里的数据存储入SCSI硬盘。所以这种方法能保证数据的实时性、完整性和连续性。其程序流程图如图1。

  

 

  3.5 软件实现

  由于篇幅所限,下面仅给出程序中核心的代码:

  

 

  

4 性能评估

  为了验证该系统的性能,我们对其所能达到的采集和存储速率、以及数据正确率进行了测试和分析。

  在测试中我们使用了自己设计的数据源,它能以任意速率发送32位的线性数字信号。另外编写了一个数据检测程序,可给出存储的数据的正确率和显示数据错误的地方。经过长时间的测试,得到结果是:数据源发送速率为45Mbytes/sec时,存储的数据能达到100%的正确率。当数据源发送速率为50Mbytes/sec时,数据有错误。

  经分析原因出在数据采集过程,当有很多位发生进位时(如FFFFFFFF→00000000)采集卡不能正确地采样数据。实际上经过特殊处理后,这样的数据还是可以使用的。

  计算机32位/33MHzPCI总线带宽典型的输出数据吞吐量为100Mbytes/sec,输入数据吞吐量为120Mbytes/sec,而系统中其他的PCI设备也需要占用一定的带宽,并且数据采集和存储过程都要占用PCI总线带宽;因此,45Mbytes/sec(100%正确率)的采集和存储速率已经接近系统和硬件的极限。

  5 结语

  本文介绍的实现方法易于实现,且充分挖掘了硬件的性能,可满足对数据采集与实时存储速率要求较高(≤45Mbytes/sec)的应用。由于使用的硬件平台是普通的奔四级PC机,所以开发成本较低。另外文中对实现过程中应注意的问题作了详细说明并给出核心编程部分,使读者很容易在较短时间内开发出满足自己需要的系统。

关键字:数据采集  存储系统 编辑:神话 引用地址:实时数据采集与存储系统的实现方法

上一篇:一种DDS的优化设计
下一篇:应用于倍频电路的预置可逆分频器设计

推荐阅读最新更新时间:2023-10-13 10:56

基于ARM的蓝牙实时数据采集系统的设计
  1 引言   随着计算机技术的发展,尤其是无线技术广泛深入到人们生活的各个方面,使人们的生活发生了深刻的变化。就工业数据采集、测量领域来讲,由于测量种类多、数据量大,且存在许多条件恶劣、人们不易到达或不能时刻停留的地方偶尔采集一些现场数据,因而不但需要花费大量的人力、物力和财力进行设备的维护,同时给采集带来很多不必要的麻烦。   为了解决上述问题,本文提出了一种基于ARM 的蓝牙实时数据采集系统。采用嵌入式 操作系统Windows CE,对通过蓝牙无线传输方式集中的传感器采集数据,进行控制、显示、处理,实现工业实时数据的采集。ARM 技术为内核的微控制器指令周期短,处理能力强,接口丰富,能成功运行操作系统,为控制系
[单片机]
研华推出全新系列的高密度PCI Express数据采集
研华科技,2013年4月 ——全球领先的创新嵌入式产业电脑&自动化解决方案提供厂商研华科技推出使用 PCI Express 接口的全新系列高密度隔离式数字量输入/输出高速数据采集卡。此系列数据采集卡包括PCIE-1752(64 个数字量输出通道)、PCIE-1754(64 个数字量输入通道)和 PCIE-1756(32 个数字量输入/32 个数字量输出通道),均拥有更快速的数据传输速率,超越标准的 PCI 卡,提供高达 64 个通道,无需特殊的开发软件,最高输出电流可达每通道 500mA。 研华高密度PCI Express数据采集卡PCIE-1752 采用拥有 64 个高密度隔离式数字量输入/输出通道的数据采集卡,
[嵌入式]
研华推出全新系列的高密度PCI Express<font color='red'>数据采集</font>卡
s3c2440 存储系统和I/O空间 认识
用友善之臂的板子已经有一段时间了.对于存储系统和I/O空间的认识也渐渐淡忘了,原因是在做其他开发时,一直用着自带的启动代码,从不关心板子的储存空间配置.最近在做网卡驱动,突然间就不知道网卡的地址是什么了,于是花点时间总结一下.废话少说.开始吧. 1,板上的存储资源 两个32M的SDRAM. 一个2M的NOR FLASH 一个128M(有些是64M)的NAND FLASH 以上这些资源看原理图便知. 2,板上的I/O资源 这块板子上(准确的说是S3C2440)的I/O空间是用存储映射的方法映射到存储空间上的,也就说I/O空间是要占用存储空间的. 3,各种存储器的区别与各自的用途
[单片机]
s3c2440 <font color='red'>存储系统</font>和I/O空间 认识
基于SPI总线的多路数据采集系统的设计
    随着微处理器的发展及其在各领域的广泛应用,人们对电子测量技术和电子仪器系统提出越来越高的要求,对测试速度和精确度的要求也与日俱增。测试系统主要包括对实时数据的高速采集、现场显示和分析处理3部分,其中最重要的一环就是实时数据高速采集,因为它关系到能否真实反映被测对象的状态和性能。根据实际项目需要,文中基于80C51F040单片机的SPI总线和AD7891芯片,设计实现了多路数据的高速采集。文中给出了系统的主要硬件电路和对时序控制的软件编程。 1 系统的硬件实现     本数据采集系统功能是能对多路电压和电流进行高速采集和分析处理,其要求精度高,线性度好,采集电压要求以1 mV为单位,模拟信号输入范围为-10~+10 V。
[单片机]
基于SPI总线的多路<font color='red'>数据采集</font>系统的设计
智能传感器接口在数据采集中的优势
大多数模拟测量系统的系统架构都相对比较直接。这种架构的核心通常是主机处理器,用于控制并检索来自一个或多个 ADC 的数据。在信号链一端向 ADC 馈送数据的是主机控制的传感器。对上述系统进行分析,并明确在不影响性能的情况下需进行哪些优化,其实对我们来说可做的事情并不多。要确定功能块中需要集成哪些功能并不容易,很难直接控制传感器前端。此外,我们通常要根据一系列其他要求预先确定主机处理器,这主要是由存储器大小、CPU 速度等软件要求决定的。 对负责系统后端的模拟设计人员而言,通常只能对 ADC 进行优化。不过,这时数字接口基本已经不能变更了,这主要也是由主机处理器的要求决定的。当然,目前非常多的主机处理器都能实现极高的性能且具备灵活的
[测试测量]
智能传感器接口在<font color='red'>数据采集</font>中的优势
浅析嵌入式存储系统设计方法
嵌入式存储系统由嵌入式硬件和固化在硬件平台中的嵌入式存储系统软件组成。传统的小规模嵌入式存储系统,软件多采用前后台的方法,通常应用于实时性要求不高的简单场合;对于复杂的应用场合,较为普遍的做法是给系统配上嵌入式存储系统实时操作系统(RTOS),这样不仅能够使系统具有良好的实时性能,降低软件编制的工作量,还可以提高整个系统的稳定性。此外,为了简化用户程序,系统通常要提供一些必要的库函数供用户调用。同前后台系统相比,这种实时嵌入式系统增加了系统存储空间的开销。Intel 8051系列及各种兼容的单片机因其极高的性价比、丰富的库函数和长期的技术积累等背景而被广泛应用于各种嵌入式领域中。受传统单片机寻址空间的限制,嵌入式应用中经常需
[嵌入式]
浅析嵌入式<font color='red'>存储系统</font>设计方法
高精度微功耗数据采集系统设计与应用
对于水下弱磁信号的检测和处理,需要一个能连续工作几个月甚至一年以上的采样精度很高的数据采集处理系统,这就要求该系统必须具有高精度微功耗的功能。本文所介绍的就是能满足这一要求的数据采集系统,它在笔者的工作中已经得到了充分的应用和试验。该系统采用ADS1212作为模/数转换器,它是一个具有高精度、宽动态特性的Δ-∑型A/D芯片。下面先对该芯片的主要特点和用法进行简要介绍,随后介绍ADS1212与微功耗单片机PIC16F84A的接口电路及程序设计。 1 ADS1212/B简介 1.1 特点及结构 ADS1212特点如下: (1)Δ-∑型A/D转换器。 (2)采样数据输出速率在10Hz时有效分辨率可达到20位,采
[单片机]
ZigBee无线传感器网络的振动数据采集系统设计
数据采集技术是获取信息的主要手段和方法,它是以传感器技术、测试技术、电子技术和计算机技术等为基础的一门综合应用技术。常用的数据采集多采用传感器,经过一定的数据变换与计算机通过串口或USB接口相连,由计算机读取传感器数值。随着相关基础技术的发展,以嵌入式计算机为核心的数据采集系统逐步形成,并占据了测控领域的统治地位 。振动量是测控应用中常要采集的一类数据,如机器的运行状态、动物的运动量等,都可以通过振动量反应出来。在实际应用中,有线检测往往出现布线困难、扩展性移植性差等问题,因此,无线检测系统逐渐进入了工程人员视野,最值得期待的便是ZigBee无线网络的应用。ZigBee技术主要应用在短距离小范围内以及数据传输速率不高(20~250
[网络通信]
小广播
最新电源管理文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关:

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved