探测器阵列数据实时采集算法设计_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、探测器阵列数据实时采集算法设计探测器阵列(detector arrays)测量系统中,为了精确测量一些光强信号,通常需要对传感 器输出信号举行高速、高辨别率采样,并要求采集图像实时显示。从硬件要求来看,采纳 的a/d 器件速率在800 mhz 以上,可实现数据的高速采集。同时,数据存储技术也正在不 断完美和提高,存储容量越来越大,在市场上已浮现容量达1t byte 左右的硬盘。已有的 数据采集系统大多数采纳基于pci 的结构34,但在对数据牢靠性要求很高的状况下, 基于pci 总线的数据采集系统的牢靠性不能满足要求。保证数据的牢靠性与完整性的同时, 实现数据的高速传输与实时显示成为设计该数据采

2、集系统的关键所在。目前对数据采集的讨论较多,但对高速数据采集的算法相对较少,也有一些对高速、高 辨别率数据采集的算法56,但这些算法大多实行数据压缩法,普通很难保证数据的完整性。 为此,本文在算法设计中提出了一种既能保证数据完整性与牢靠性,又能实现高速大批量数 据的实时采集算法,从而解决此问题。2 系统描述在激光大气传输试验中,光强测量系统由多探测阵列构成。传感器探测阵列共有1024 个探测单元。对于每个模块,信号通过模拟开关送入数据采集卡,由计算机举行处理。 在激光大气传输试验中,对测量系统的稳定性与牢靠性要求极高。对数据采集软件的性能及 指标要求是:保证100hz 帧频下,数据采集不丢帧,

3、图像完整,无乱码。从技术角度看,目前pci 总线最大数据传输速率可达133mb/s ,相对较高,但基于pci 总线的数据采集系统的牢靠性不能满足要求,且100hz 帧频在现有的数据采集系统中已不 算高。为此,试验中采纳一种特地为控制而定义的工业控制总线pc104 总线。此 总线以“针”和“孔”形式层叠衔接,即pc104 总线模块之间总线的衔接是通过上层的针和下层 的孔互相咬和相连,这种层叠封装有极好的抗震性。此总线虽满足了牢靠性的要求,然而它 的传输速率相对于pci 总线却大打折扣,造成pc104 总线与pc 机之间的传输速率受到限制。3 数据采集算法设计针对以上状况,本着在试验中数据采集具有

4、实时性和不行重复性,假如浮现临时性溢出, 应优先保证数据的整体完整性的原则。本数据采集软件在设计中提出了缓冲区半满存储算法。此算法和现有数据采集系统中的 缓冲区算法、数据压缩算法相比,其最大优势在于采到的数据不易走失,更能保证数据的完 整性,且大大提高了pc104 总线与pc 机之间的传输速率。同时软件设计中用法实时多任务控制方式,并将采集到的数据以二进制的形式挺直保存 进文件。这就不仅达到存储量大、数据传输效率高的目的,而且满足了图像实时传送的要求。3.1 缓冲区半满存储算法所谓缓冲区半满存储算法,就是在数据采集进程中,设置一个数据hfifo 缓冲区指针。 缓冲区大小设置为8192 个字节。

5、当pc104 总线上浮现数据时,总线板中首先将接收到的数 据帧放入hfifo 缓冲区。当hfifo 达到半满时,就读出低位的4096 个字节的数据,读出 数据的同时,为hfifo 腾出了空间,而总线板中接收到的数据帧继续放入hfifo 缓冲区。 详细操作如下:首先,将缓冲区别为以下 5 种状态:状态 0 表hfifo 空状态1 表hfifo 非空但不到半满状态2 表hfifo 达到或超过半满,但未到全满状态3 表hfifo 全满状态4 其他数值 表未知状态,不应当浮现第二,对hfifo 的状态举行推断:a当数据未达到缓冲区大小的一半时(即状态0 或状态1):此时返回,举行数据采 集。b当数据达

6、到或超过缓冲区大小的一半但未到全满(即状态2):进程将先推断一下 hfifo 状态,若为半满,就一次读出全部的4096 个字节的数据;若超过半满,但未全满, 此时只将低位4096 个字节的数据读出,原高位的数据前移,占领hfifo 低位。再将读出的 全部数据挺直保存到二进制文件中。这里特殊提出:因为多传感器探测系统采集时光较长或不受时光限制,软件设计中将采 集到的数据挺直保存进文件,这就在存储工程中节约了大量的时光。另外,数据保存在二进 制文件中,能实现图像的实时显示。c当hfifo 全满(即状态3):此时数据采集进程只要读空hfifo 或达到用户指定的 个数就可返回。读数时分两批,先将低位的

7、4096 个字节的数据读出,保存到二进制文件中;再将高位的数据所有读出,即读空hfifo,紧接着前面的数据写入文件中。分两批读数的优点在于以下两方面:1)缩短了一次读数的时光;2)低字节的数据读完 后,为hfifo 腾出了空间,以便总线板中接收到的数据帧继续放入hfifo 缓冲区,数据不 易走失,保证了数据的完整性。d其他数值:表未知状态,不应当浮现。在此不再详述。3.2 多线程控制因为测试系统是由多个探测模块构成传感器探测阵列。要对多路参数举行检测和控制, 为了降低囫囵系统的复杂度,实现图像实时传送,满足采集过程的高速要求和中断要求。还 要保证帧频达到或超过100hz,需要数据采集控制软件具

8、有多任务并行的能力,即设计多个 线程,并且因为完成的任务不同,各线程的设计也不尽相同。软件共设计包括数据采集线 程、控制线程、绘图线程,程序运行中最多时会浮现几个线程并行运行的可能。为保证大量 数据的完整性以及纠错复原功能,数据采集线程优先级高于控制线程。软件结构简图见图1。1 所示,hfifo 缓冲区在状态2 时进入绘图线程1。绘图线程 1:在绘图时要求先推断一下hfifo 状态,若为半满,就读前4 帧即低位的 4096 个像素,然后立即返回,举行绘图,绘图时只绘出第一帧,最后保存数据。 hfifo 缓冲区在状态3 时进入绘图线程2。绘图线程 2:读分两次读满8 帧即8192 个像素,然后立

9、即返回,举行绘图,绘图时也 只绘出第一帧,最后保存数据。绘图线程2 所示。4 数据采集算法实现本系统软件平台采纳 micro 公司的microsoft visual c 2005,该平台具有界面友好、功 能强大、资源丰盛等优点,彻低面对对象的编程和消息处理。在典型的microsoft visual c 2005 多线程程序中,用法主线程创建、显示并运行用户界面,在次线程中运行其它的对时 间要求很高的操作(如daq)。microsoft visual c 2005 平台提供了两种在 windows 的次线 程中运行代码的高级机制,分离是线程池(thread pools)和异步定时器(asynch

10、ronous timers)。线程池适用于需要延续地执行多次或在循环中执行的任务,而异步定时器适用于在固定 时光间隔内执行的任务。因为实验中参数的采集和总线数据的收发是首要的任务,需要延续 地执行。因此,编程时采纳线程池技术,在程序的主线程(数据采集线程)中创建线程池,控制线程、绘图线程都在线程池创建的次线程中运行。详细程序中设置了数据采集线程函数 datathread(),获得状态函数gethfifostatus()。在获 取hfifo 状态中,用了4 个“case: break;”语句来推断状态,从而举行循环。 当进入状态 2 和3 时,大事返回后便进入绘图线程,软件只设置gatherdata()为绘图线 程函数。线程空闲时则举行图象的播放,数据优先保存,savedata()为数据保存函数。savedata()函数中将采集到的数据以二进制形式挺直保存到路径为:e.filename 的文件中。 程序设计时采纳挺直指针方式,提高了传输数据的效率。5 结语本软件采纳 microsoft visual c 2005 开发平台,具有友好的用户界面,操作容易便利, 易于维护。该算法编程容易、计算量小、易于硬件实现,而且稳定性高;在用法过程中体现 了极强的有用性,满足了探测器阵

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论