实时高速数据采集与存储系统的一种实现方法

发布者:SparklingEyes最新更新时间:2007-04-23 来源: 微计算机信息关键字:通信  数字  I/O 手机看文章 扫描二维码
随时随地手机看文章

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进行手动配置。最后Windows 2000 Service Pack 2 (SP2) 及早期版本不支持大于137GB容量的硬盘。须要先安装Service Pack 3,再在注册表(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters)里添加一个REG_DWORD类型的参数EnableBigLba,并把值设成0x1。这样146GB的硬盘才能工作正常。

3、软件设计

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

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

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

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

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

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

33 VisualC++开发环境的设置

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

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

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

35软件实现

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

BOOLEAN BufferID=0;//缓冲区的ID;1第一缓冲区,0:第二缓冲区。

BOOLEAN Stop=0;//停止数据采集与存储,1:停止,0:继续。

U32 Buffer1 [data_size], Buffer2 [data_size];

//开辟块缓冲区。

FILE *fp;//存储数据的目录。

UINT SampleThreadProc (LPVOID pParam)

{BOOLEAN HalfReady=0;//缓冲被写满标志

do {HalfReady=0;

do(DI_AsyncMultiBufferNextReady(card,&HalfReady,&viewidx))://等待驱动程序报告缓
//有冲区被写满。

}while(!HalfReady);//如果HalfReady!=0,

//明有缓冲区被写满。

BufferID = ! BufferID;

AfxBeginThread(StorageThreadProc,NULL);

//启动数据存储线程

关键字:通信  数字  I/O 引用地址:实时高速数据采集与存储系统的一种实现方法

上一篇:USB海量存储类设备功能在ARM系统中的应用
下一篇:AT45DB081B在数据采集系统中的应用

推荐阅读最新更新时间:2024-05-13 18:35

数字视频监控后现代潮流的追求
    数字视频监控市场十多年来高速发展、高歌猛进,完全是现代化节奏和声势。只要看看公共场所无处不在的摄像头密度,就能知道监控在多大程度上影响到人们工作、学习和生活的方方面面。在数字安防监控市场上,“高清智能”已成为人们耳熟能详的热点和卖点,便无疑成为视频监控现代化的象征。然而,视频监控所带给人们的视觉体验和即时操控是否已经足够完美?还能留给后现代发展多大空间? 这正是本文所试图回答的问题。作为资深安防人,处于后现代的视频监控阶段,仍然关注追求更高境界。为此,通过回顾安防视频监控的渊源和历史,分析和阐述技术创新在数字视频监控产业发展的重要作用,希望对有益于未来提高视觉效果和智能体验的核心技术走向有所关注和展望。   1 视频监控渊
[安防电子]
AVR单片机与CPLD的通信设计
项目中需要使用CPLD完成一部分算法设计,参数由AVR给出,因此需要完成AVR和CPLD的通信。因此写了一个测试程序。CPLD挂在AVR的数据和地址总线上,AVR使用ATmega128,在CPLD中设置几个寄存器,通过AVR读写寄存器来实现两者之间的通信。 Mega128的外部存储空间从0X1100开始,因此只需要配置相应的寄存器后读取或者写入相应的地址就可以,程序比较简单,注释中都有说明,仅供参考。 功能:测试AVR与CPLD的通信,将数据写入CPLD中配置的寄存器,然后读出,通过串口输出做比较。 /#include“avr/io.h” #include“avr/interrupt.h” #include“util/
[单片机]
AVR单片机与CPLD的<font color='red'>通信</font>设计
网络通信 开辟报警无线传输新时代
    早期的安防报警系统,主要是在案情发生后,利用有线电话系统报案。公安部门派人赶赴现场,调差、分析研究案情组织破案,这种工作程序基本上多为事后处理。由于当时有线电话系统不发达,时常会发生"占线"现象,因此也耽误了不少破案的最佳时间。      二十世纪初,随着无线电定位技术和计算机管理技术以及通讯技术的发展,在国际上推出一种采用低频无线电信息塔网定位并且将信息传输给计算机处理的联网报警系统。因为此报警系统,能在案发第一时间快速确定案发位置,及基本案情性质,为预防和提前制止案情的扩大发展,争取到了宝贵的时间。所以在市场上广为流行。      报警系统都由前端探测器、探测信号传输和报警主机三部分组成,到现在把探测器和报警主机合并看成
[安防电子]
多量程真有效值数字电压/电平表
AD636配以单片A/D 转换器 ,可构成真有效值数字电压/电平表。AD636的管脚排列及 选择DB测量模式时,S3应拨“DB”挡。此时电路作如下改动:1、IN1端经R12接COM;2、IN-端接AD636的第五脚,从IN-端输入电平信号UDB;3、ICL7116片内的+2.8V基准电压源经R8、RP1、R9接IN-端,可为COM与IN-端之间提供一个补偿电压。上述改动的目前是令A/D转换器在测量过程中自动完成减法运算,从UDB中扣除0DB所对应的电压值(即补偿电压),仪表直接显示DB值。RP1为0DB校准电位器,RP3是校准分贝刻度因数的电位器。利用VD3可对电平挡的刻度因数进行温度补偿。
[模拟电子]
多量程真有效值<font color='red'>数字</font>电压/电平表
是德科技参与中国移动下一代5G无线通信系统技术演示
今日,是德科技有限公司 (NYSE: KEYS) 在2015巴塞罗那移动通信展上宣布将参与中国移动研究院的下一代5G无线通信系统技术演示,这也是是德科技和中国移动共同致力于5G研究合作项目的一部份。中国移动是目前世界上最大的移动运营商,是3G/LTE无线通信网络和下一代无线技术的领导者。 2014年6月,是德科技和中国移动研究院共同签署了合作备忘录,双方达成战略合作协议,将共同致力于发展于下一代移动通信(5G)技术的研究。自此,是德科技和中国移动的开发团队在5G的关键技术领域中紧密合作,并且取得了相应的进展。 在2015年巴塞罗那移动通信展上,是德科技将参与中国移动研究院的下一代5G无线通信系统中基于SmarTile
[网络通信]
瑞萨推出第二代多相数字控制器和智能功率级单元模块
全球半导体解决方案供应商瑞萨电子集团宣布推出15款第二代新型多相数字控制器和6款SPS,可支持10A至1000A以上的负载电流,适用于先进的CPU、FPGA、GPU和面向物联网基础设施系统的人工智能(AI)ASIC。ISL6822x、ISL6823x、RAA2282xx多相数字控制器和ISL993xx、RAA2213xx SPS将瑞萨业界领先的数字多相平台扩展到41种设备。这些解决方案超越了数据中心服务器、存储、光传输、路由器、交换机以及计算类应用和5G无线基础设施设备中快速增长的功率密度。 瑞萨电子移动、基础设施及物联网电源事业部副总裁Andrew Cowell表示:“瑞萨电子为客户打造了业界广泛的数字多相产品系列,是唯一可
[嵌入式]
瑞萨推出第二代多相<font color='red'>数字</font>控制器和智能功率级单元模块
基于CAN控制器的对等式单片机多机系统的通信
    摘要: 针对单片机多机系统主从式通信的缺点,提也了利用CAN控制器实现单片机多机系统对等式通信,并对其硬件组成原理、通信程序的设计做了详细的分析。     关键词: 单片机多机系统 “对等式”通信 控制器局域网(CAN) 关于单片机的多机通信,许多文章及相关书籍都有介绍,但就其多机通信的方式而言大多为“主从式”,这一通信方式限制了单片机功能的发挥及广泛的应用。虽然文献 利用巧秒的硬件手段实现了单片机多机之间的“对等式”通信,但其通信方式实质上仍是“主从式”。本文介绍了一种基于CAN控制器的单片机多机系统,从本质上实现了任意两机之间直接相互通信,从而克服了“主从式”多机通信的缺点。 1 CAN技术简
[工业控制]
基于DS1075的8051高速单片机串行通信的时钟新配置
1引言 在当今许多实时监测系统与通信系统中,经常需要进行远距离的数据传送,为此,如何实现高速、可靠及低成本的数据传输是前级机或发送级8051单片机迫切需要解决的新技术。据此,笔者采用Dallas Semiconductor公司生产的DS1075芯片-EconOscillator(高效型振荡器)为8051系列高速单片机DS87C520提供时钟的配置设计方案,从而实现了单片机DS87C520串行通信的高速波特率。 与众不同的Econ Oscillator(高效型振荡器)DS1075内含一个振荡器,可用于产生一个基本频率;同时它还内置了一个分频链,可以将基本频率降低到需要的频率。每种Econ Oscillator均可提供四种基本频率
[单片机]
基于DS1075的8051高速单片机串行<font color='red'>通信</font>的时钟新配置
小广播
最新应用文章
换一换 更多 相关热搜器件

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