当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]一种实时数据采集与存储系统的实现方法

 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.。[!--empirenews.page--]

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

 

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

[!--empirenews.page--]

 

  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机,所以开发成本较低。另外文中对实现过程中应注意的问题作了详细说明并给出核心编程部分,使读者很容易在较短时间内开发出满足自己需要的系统。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

如今汽车正逐渐成为“车轮上的数据中心”,而先进功能和计算架构的创新也使得这一称号愈加贴切。例如,智能汽车是目前最复杂的由软件驱动的机器,运行约一亿行代码,随着 AI 在汽车中的兴起,这一数字预计很快将攀升至 10 亿行。...

关键字: SSD 智能汽车 存储系统

上海2023年9月20日 /美通社/ -- 第六届中国国际进口博览会即将如约而至。作为共享中国市场大机遇的重要窗口,进博会持续释放开放“溢出效应”,逐步成长为中国推进高水平对外开放、高质量发展的重要平台。武田作为进博会的...

关键字: 数字化 DAS EDA SPARK

昆明2023年8月30日 /美通社/ -- 8月25日晚间,沃森生物发布2023年半年报。报告显示,2023年上半年公司实现营业收入21.68亿元,归属于上市公司股东净利润4.55亿元,同比增长8.13%;报告期内,公司...

关键字: HP AC 管线 DAS

北京2023年8月8日 /美通社/ -- 冬瓜哥上次学习AI和ML,还是在2019年初。当时其实是卷积神经网络和深度神经网络蓬勃发展期,其主要目的是分类识别。当时冬瓜哥还做了一个4小时的视频,那真是我见过的最小白的白也能...

关键字: 模型 存储系统 生成式AI 人工智能

上海2023年2月9日 /美通社/ -- 近日,灵犀医疗和零假设信息科技(以下简称"零假设")在2022年武田中国创新挑战赛(以下简称"挑战赛")"黑客松"闭门...

关键字: DAS EDA 智能化 SPARK

北京2023年1月9日 /美通社/ -- 近日,Gartner发布2022三季度全球存储市场报告。报告显示,全球存储市场实现稳健增长,全球销售额5590.7M$,同比增长5.5%;装机容量14172PB,同比增...

关键字: SSD IO 分布式 存储系统

北京2022年12月13日 /美通社/ -- 存储系统是由控制器、背板、结构件、硬盘、内存等部件构成的多个子系统组成,其中任何单一元器件故障都可能导致存储系统出现问题。因此,系统可靠运行的基础,离不开元器件、部件以及整个...

关键字: 数据存储 系统级 元器件 存储系统

(全球TMT2022年11月9日讯)亚马逊云科技宣布,在第五届进博会期间,亚马逊云科技与武田(中国)投资有限公司、埃森哲(中国)有限公司签署了创新战略合作协议,并共同启动 "TakedaSpark+" 2022年武田中...

关键字: DAS EDA 亚马逊 SPARK

在第五届进博会期间,亚马逊云科技与武田(中国)投资有限公司、埃森哲(中国)有限公司签署了创新战略合作协议,并共同启动“TakedaSpark+”2022年武田中国创新挑战赛。通过升级后的TakedaSpark+,武田中国...

关键字: 亚马逊 DAS EDA SPARK

上海2022年11月8日 /美通社/ -- 第五届中国国际进口博览会上,阿迪达斯带来“全球首秀”产品 -- 中国著名当代艺术家韩美林先生参与设计的阿迪达斯2023十二生肖新春特别系列,并同时首展“万物寻宗”系列第一篇章【...

关键字: ADI DAS ORIGINAL GEN
关闭
关闭