实时数据采集处理

2024-09-20

实时数据采集处理(共12篇)

实时数据采集处理 篇1

1 引言

伴随着科技的发展和数据采集系统的应用, 对数据采集与信号采集系统的各项指标提出了越来越多的要求, 它广泛应用于雷达、通信、遥测遥感等领域。传统方法通常采用单片机或者DSP作为核心芯片, 由于单片机的时钟频率相对较低, 运行软件的时间占采用时间很大的比例, 很难适应高速采集系统的要求。DSP运行速度虽然快, 但是不能够完成外围的硬件逻辑控制。FPGA时钟频率相对比较高, 延时小, FPGA采用IP内核技术, 可以集成外围控制和接口电路。该系统主要应用于基于激发荧光和激光多普勒技术的浮游植物粒径分布现场在线监测系统中的数据采集部分, 具有较强信号处理能力和较大数据吞吐量, 在信号捕获, 测量, 分析系统中具有广泛实用性。

2 系统硬件结构

FPGA芯片采用Xilinx公司的Spartan3E系列中的XC3S1200EFG320, 为实现高速双通道采用采用了TI公司的具有Ref引脚和伪双极全差动输入的16位2MSPS并行ADS8412。该系统大体分为数据采集单元, 数据处理单元, 逻辑时序控制单元, 主机通信单元, 以及电源模块。系统总体结构框图如下:

该系统可完成两路中频信号的采样处理, 单路信号加入到到模数转换器中, ADS1605将模拟信号转换为16bit的数字信号。通过FP-GA的地址译码分时选通AD1和AD2实现双通道的由AD到FPGA内部RAM和FIFO模块的。相应的信号处理算法在FPGA内部模块中实现。系统总体结构框图如下:

3 模拟ADC设计

ADS8412是德州仪器公司推出的一款2Msps采样速率的16位逐次逼近 (SAR) 模数转换器 (ADC) 。采用P8/P16并行输出, 带有内部时钟和基准电压源, 无丢失码, 2MHz采样频率时的功耗为175mW, SNR为90dB。ADS8412是单极单端输入范围, 有16位和8位可选择接口, 零等待时间, 高速并行接口, 8位/16位总线传输, 48引脚TQFP封装, 转换时钟由芯片内部产生, 360ms的转换时间可保护2MHz的数据吞吐, 模拟输入信号由+IN和-I两个引脚提供, 本设计采用16位的总线输出

4 FPGA以及外围芯片电路设计

Spartan-3E型FPGA, 是Xilinx在SP3基础上, 针对用户针对用户对更低成本的需要推出的低成本优化FPGA, 主要满足要求有效逻辑和大量资源的逻辑集成、DSP协处理器和嵌入式控制等应用。该系统大约需要500K空间的存储, 因此选择XC3S1200E这一款的芯片, 芯片的各个内核时钟信号均是利用DCM来实现的配置方式采用主并行配置方式, FPGA驱动PROM CLK, 这种配置方式需要分别设置FPGA中M0、M1、M2管脚为“0”、“1”、“0”, 采用128Mbit的NOR型的并行Flash, 配置方式通过CPLD XC2C64控制来实现的。

5 PCI接口电路部分

PCI接口接口电路可以采用PCI专用的接口芯片, 也可利用PCI软核, 该系统利用Xilinx提供的PCI core来完成PCI总线控制器的设计。这样不需要考虑PCI控制器的内部时序, 缩短设计周期。

6 数据流程

由于本系统应用中要求对两个通道中的数据采取不同处理方式。AD1采集荧光信号, AD2采集多普勒信号。当系统启动后两个通道都开始采样进行2K的数据循环采样, 于此同时对一通道中的数据进行50个数据累加检测, 当发现50个数据的和大于事先计算好的触发门限时, 两个通道都开始进行6K的采样, 由于保存了触发前的两个通道的2K数据, 所以最后两个通道中的数据都为8K, 最后对一通道的8K采样信号求最大值和最小值, 计算出中间值, 通过对一通道中的数据进行搜索, 与中间值进行比较得到其下标地址, 从而得出脉冲的两个中值之间的宽度。在第二个通道中对采集的8K数据进行快速傅里叶变换得到第二通道的频谱, 最后将以上计算后得到的数据上传到主机进行显示。

7 状态机结构图

8 结束语

本文主要介绍了基于芯片FPGA XC3S1200E的数据采集PCI卡, 通过了以上工作开发了适用于中频速度的具有广泛适应性的数据采集卡。本文的创新点在于利用FPGA内部模块来实现数据处理的设计, 采用Verilog生成的状态机分别控制各个模块有序的连接, 在实际应用中根据执行任务不同可以随时更换软核模块, 增强了系统的灵活性

参考文献

[1]朱冰莲, 刘学刚.FPGA实现流水线结构的FFT处理器, 重庆大学学报。2004 (9) :33-36

[2]Fast Fourier Transform Data Sheet.Xilinx.Inc.2003.

[3]吴德鸣, 陆达.高速通信中基于FPGA的PCI总线接口研究与设计, 计算机应用。2005.7.

[4]周俊容.高速数据采集系统, 电子工程师2005.5.

[5]连冰, 宫丰奎, 张力等.基于FPGA的快速傅里叶变换, 国外电子元器件, 2003 (12) :26-28.

[6]薛小刚, 葛毅敏.Xilinx ISE9.X FPGA/CPLD设计指南。人民邮电出版社。2007年8月.

实时数据采集处理 篇2

这儿涉及到数据如何合并的问题。前面我们讨论了查询函数的Monoid性质,如果查询函数满足Monoid性质,即满足结合率,只需要简单的合并Batch View和Realtime View中的结果数据集即可。否则的话,可以把查询函数转换成多个满足Monoid性质的查询函数的运算,单独对每个满足Monoid性质的查询函数进行Batch View和Realtime View中的结果数据集合并,然后再计算得到最终的结果数据集。另外也可以根据业务自身的特性,运用业务自身的规则来对Batch View和Realtime View中的结果数据集合并。

5.Big Picture

上面分别讨论了Lambda架构的三层:Batch Layer,Speed Layer和Serving Layer。下图给出了Lambda架构的一个完整视图和流程。

电能量数据实时采集的研究与实践 篇3

【关键词】电能量;数据实时采集;研究;实践

有多种方法能够实现电能量数据的实时采集,比如专用通道的解决方法,这种方法实时性特别强,能够应用在对电能量数据采集要求特别高的场所,但是其成本过高;除此之外,还可以选择共用远动通道的方法,这种方法能够节约投资以及运行成本,完全可以尝试着使用。

1.电能量数据实时采集的必要性

目前我国的电能量数据已经实现了实时采集,这是一场中国电力事业的变革,这场变革之后,我国电力部门的工作人员工作量大大减轻,但是其工作质量却大幅度提高,因此电能量的数据采集对电力企业来说,意义重大,电能量数据能够实现实时采集的却非常必要。但是除此之外,其必要性还体现在如下几方面:

首先,有利于缩短电费结算的时间,传统的电能量数据的结算需要人工抄表,存在误差暂且不说,其需要耗费大量的人力物力,其电费结算周期非常长,但是如果电能量实现数据实时采集之后,可以随时抄表记录,随时结算,十分方便,工作人员只要做好相应的操作工作即可;其次,有利于对电网进行集中控制,促进电网资源得到合理的优化配置,以使其供需得到平衡,这对用电用户以及电力产业来说都十分重要;最后,能够为用户提供更加优质的用电服务,电能量数据实现实时采集之后,用户可以上网查询自己的用电信息,也可以上网缴费十分方便。

2.电能量数据采集通道的解决方案

2.1专用通道

这种解决方案主要是专用通道和供电企业中厂站端中的采集装置进行衔接,进而完成电能量的数据采集工作。该种解决方案最大优势就是实时性强,而且因其实时性高,因此能够在要求非常高的场合来使用。我国某大型电厂,使用的就这种专用通道方法,不仅解决了传统的电能量采集的麻烦,结算的也不是十分复杂,该种方法可以将统计、记录以及相关的结算进行有机结合。但是专用通道方案虽然应用效果非常好,但是需要花费大量的成本,而且对维护的要求非常高,再加之,还需要设计很多种专用的数据采集端口,如果系统需要多个通道,还需要安装前置机。因此在选择专门通道的方案之前,应该做好相关的准备工作。

2.2共用远动通道

在调度中心,各个系统中存在着多个计量关口,这种关口几乎都具备远动通道的功能,完全可以实现共用,这样不仅节省大量的投资,同时运行费用也能够得到有效的控制。该种解决方案的优势主要体现在以下两方面:

一是远动装置具备含电能量的作用,现代世界各国几乎都使用了微机远动装置,其能够遥测电能量,主要是以脉冲的形式进入到该装置中,这样无论是电能量数据,还是其他形式的数据都能够及时的传送到主站中。从技术角度来讲,远动装置还应该具备采集电能量的功能,可以实现电能量的实时传送,但是需要做好的是管理工作。因为电能量是长时间累积的一个过程,因此设备在运行过程中,不能随意停止。但是远动装置的应用,必须要对其进行检查或者扩容,因此不可避免的会中断工作,为了保证数据一致,在检查结束之后,人工应该设置相关数据,能够保证电能表两者之间读书相同,不会出现误差。

二是专用电能量采集装置与远动装置共用通道为满足生产管理和电网调度的需求,可以采用远动设备实时采集传送电能量数据,但是采用独立的电能量数据采集装置,与远动装置相互独立,这样便于管理,也更能满足各方用户独立监管的要求。该装置除了可提供通信接口连接专用通道和拨号通道外,还可以提供通信接口与远动装置通信口并接,共用远动通道向主站传送数据,以满足调度中心的实时要求。

3.主站前置机的通道接入方案

某省电网调度自动化系统采用电力自动化研究院研制的SD—6000系统。为了取得高的运行率和可靠性,前置部分采用冗余结构。电能量采集备有电话拨号方式作为备用通道。接入前置机的通道有2种:点对点的远动实时通道和电话拨号通道。电能量数据采集以前者为主,后者为辅。前置机利用远动通道与远动装置通信,采集远动数据和对厂站进行控制的同时,按设定的周期插入电能量采集的有关命令:

3.1查询电能量采集装置内部状态

该命令可获得电能量采集装置的内部配置情况和运行状态。如容量配置、交直流供电电源状态、故障信息、事件记录、实时时钟以及软件版本等。

3.2时间同步

采集装置可以利用站端GPS同步,也可以由主站同步。采用后者时,主站以设定的同步周期,对采集装置进行周期性同步;同时,采集装置在返回的数据帧中,除带有数据抄录日期、时间外,还在帧末附上当前实时时间。

3.3索取电能量数据

索取电能量数据有多种命令供选择:“读冻结电量”、“读当前电量”、“读某电量某段时间历史数据”、“读若干电量某时刻数据”或“总查询”命令等。前置机通常可以用“读若干电量某时刻数据”或“总查询”命令向采集装置索取数据。前者读取一帧特定日期、时间的若干电能表读数;后者读取从某一时刻开始相隔规定时间(步长)的若干帧数据。当实时通道中断,用拨号通道采集数据时,常用“总查询”命令可以获得较快的速度。前置机对“最近成功采集电量时间”每分钟进行一次检查,与当前时间相比较,若差值达到或超过规定步长,则在远动信息序列中插入电能量查询命令。

3.4补采电能量数据

前置机对“最近成功采集电量时间”每分钟进行一次检查,与当前时间相比较,若差值超过规定的若干倍步长(因远动通道故障引起),除了实时通道恢复后予以补采电能量外,同时启动电话通道用“总查询”命令补采电能量,直到到达当前该采集的时间點为止。

4.结语

综上所述,可知对电能量数据实时采集进行研究非常必要,因为这是电力事业发展的必要选择,尽管电能量的数据采集完全的实现实时性还有一定的困难,但是随着电力技术的发展,科学研究的深入,定会在全国范围内使用,待到完全实现实时性数据采集时,电力企业能够为客户提供更多更优质的服务,用电安全也能够得到有效的保证,这对提高我国电力事业在世界市场上的竞争力有着重大的意义。 [科]

【参考文献】

[1]宋浩彬,李彦波.误差率与更正率在补退电能量中的应用[J].农村电工,2005(07).

[2]玉光,刘海民.“预购电能量”收费理念上的改革[J].农村电工,2005(02).

[3]李双言,王宪春,李育发.浑江发电公司电能量考核管理系统[J].吉林电力,2006(05).

实时数据采集处理 篇4

在工业生产中,要维护大量共享数据和控制数据;又需要实时处理来支持其任务与数据的定时限制[1]。传统的实时系统虽然支持任务的定时限制,但它针对的是结构与关系很简单、稳定不变和可预报的数据,不涉及维护大量共享数据及它们的完整性和一致性[2]。实时数据库需要对一系列的概念、理论、技术、方法和机制进行研究,并对各个功能模块做详细周到的设计[3,4]。

历史数据处理作为工业实时数据库系统的一个核心功能,其主要作用是保存实时数据的历史记录。由于先进控制应用和实时优化的需要,有一部分历史数据被访问的频率可能很高,为了减小磁盘的读写负担,需要在内存中保存部分近期的历史数据,称之为内存历史数据。另外,对于超过一定时限陈旧的数据,需从内存中清除,并做一定的处理,然后转存到磁盘文件上。

1.1内存历史数据库

有部分历史数据是保存在内存里的。因为某些先进控制软件和实时优化软件等需要频繁访问这些数据,而内存的存取速度快的特点可以充分满足这些软件的实时访问需求。根据需要可以将某些历史数据有选择性地保存到磁盘历史数据库中[5]。

1.2 磁盘历史数据库

磁盘历史数据库主要以磁盘文件的形式存储历史数据。这种以磁盘文件为介质的形式适宜于存储长时间、大量的历史数据。同时便于转移、备份历史数据。为了使磁盘历史数据库具有快速、稳定的存储、读取性能,历史数据文件的结构、数据缓冲区的设置及使用的压缩算法等设计都是至关重要的。

目前,实时数据库市场主要为国外的 PI(PlantInformation system)、Industrial SQL Server 等几大品牌所占据。这几个实时数据库在技术性能、功能扩展等方面是比较先进成熟的。

PI 采用了独到的压缩算法和二次过滤技术,这使得 PI 成为实时数据库中压缩性能最为优越的一个。根据计算通过 PI 的数据压缩技术的处理,104点/s 数据存储一年,仅需4 G 空间。性能优越、使用简单等优点使得 PI 成为应用最广泛的实时数据库产品[6]。

IP21(InfoPlus.21)用于集成生产过程信息与高层次应用程序的基础数据平台,它使用户可以访问和集成来自整个工厂范围内 DCS 及 PLC 的数据,它通过功能极强的分析工具、历史数据管理、图形化的用户界面和大量的过程接口来访问和集成数据。IP21是一个智能化实用化的信息管理系统,它可以提供给用户最需要的东西:合适的实时应用支持、多线程、客户机/服务器结构。先进的过程数据服务器和历史数据管理在应用的任何地方都是可行的,特别是其灵活的数据结构可以根据应用的需要重新定义以适合自己的应用系统的需要。

Industrial SQL Server 是由数据采集、数据压缩、生产动态浏览和历史数据归档等功能构成一个完整的实时数据库系统,实时数据和历史数据用专门的文件保存[7];数据库服务器内嵌 MS SQL Server,使其具备关系型数据库特性,增强了复制功能,集成了 Mail 和Internet。它是第一个可满足工厂对数据采集速度、存储量要求的实时关系型数据库,是常规关系型数据库的数据采集速度、存储量的数百倍;它扩展了 SQL 语句,使其具有了时间特性。

上述几大实时数据库虽然在很多方面都很先进,但也存在一些不足之处需要改进。首先,现今几大实时数据库的历史数据查询性能有待提高。影响到查询性能一个很重要的因素是历史数据的文件结构,尤其是索引结构。另外,各实时数据库生产商在历史数据的压缩处理这方面下了很大的功夫,尤其是 PI 在这方面做得很好,但是历史数据的压缩效率还有提升的空间。

2 历史数据存储过程

实时数据库通过接口软件从下层采集数据,这些数据同时被写入到内存历史数据库和磁盘历史数据库中。某个测点在内存数据库中保存的历史数据长度,在测点组态时就已确定。当保存的内存数据长度超过这个值时,相对陈旧的数据将会被新采集到的数据替换。而将写入到磁盘的历史数据,只要磁盘空间足够大,一般是没有长度限制的。整个工厂的过程数据存储量是巨大的,不进行相应的压缩处理必将浪费大量的存储空间。因此,数据压缩是历史数据写入到磁盘之前的重要处理环节。

如图1所示,实时数据库通过接口软件从下层设备采集数据,采集方式可以是多种多样的。当今比较通用的是用 OPC(OLE for Process Control)通信方式获取数据,此时接口软件即相当于一个 OPC 客户端,通过网络获取 OPC 服务器提供的数据。接口软件获取的数据有2份拷贝,一份传至内存数据库,替换掉内存数据库内原有的陈旧数据;另外一份则通过调用磁盘历史数据库模块做一些相关处理,将数据写入到磁盘文件。其中,历史数据库的历史数据存取模块是提供对历史数据读取操作的相关接口。工厂过程数据如不经过任何处理全部存入磁盘文件,占用的空间将会是相当庞大的。因此,过程数据在存入磁盘之前需要经过相关的压缩处理。各种数据类型所采用的压缩方式有可能是不一样的,压缩算法在本文后面章节有详细描述。此外,为防止频繁进行磁盘写操作,内存中开辟了历史数据缓冲区,需要存入磁盘的过程数据首先放在缓冲区,当缓冲区中积累了一定数量的历史数据时再一次性地写入到磁盘历史数据库文件中。

3 内存历史数据库管理

在实时数据库中可能有一部分测点的近期数据将有可能被频繁访问,若每次访问这些测点数据都从磁盘上临时读取,这对磁盘将会是一个很大负担。内存历史数据库即是用作存放这些数据的。

在测点组态时,可根据需要设置各个测点要保存的内存历史数据长度。内存数据库根据组态信息预分配数据空间。进入内存数据库的数据都是经过压缩处理的,过程数据源源不断地通过接口软件采集而来,填入到内存数据库的数据区。当数据区填满时,陈旧数据从数据区中被淘汰掉,取而代之的是新采集来的数据,以保持测点数据的实时性。

4 磁盘历史数据库管理

各位号的磁盘历史数据是以磁盘文件的形式存在的。所设计的磁盘历史数据库中存在2种文件:历史数据文件和管理信息文件。一个实时数据库项目通常有一个管理信息文件及多个历史数据文件。历史数据文件主要存放位号历史数据及相关的索引信息;而历史数据管理文件保存了实时数据库中所有历史数据文件的信息及文件间的时间索引,以便快速定位某时间段对应的历史数据文件。

4.1磁盘历史库的文件描述

4.1.1 历史数据文件

历史数据文件采用的是页面存储管理方式,这样可以提高存储和访问效率。页面大小设置为多少最合适,可以根据相关性能方面的测试获取,历史数据文件结构如图2所示。

历史数据文件一般都有一个文件头页,这个页面记录了本数据文件的首个空页、空索引页的位置、页总数及页尺寸等信息。文件头页为整个文件的起始页,文件头页后紧跟着的是大量的数据页。数据页分为历史数据页和索引数据页2种类型。

历史数据页中存放位号的历史数据。一个位号的历史数据可存放在多个页面上,但一个页面不可存放多个位号的历史数据。同一个位号的历史数据可能分散在不连续的数据页内,这些不连续的数据页通过时间索引链接在一块,于是形成同一位号的历史数据链。历史数据链中的数据是以时间顺序排列的。时间索引页为测点历史数据建立一段顺序时间索引,为了提高查询速度,一个时间索引页中保存多个时间索引。每个时间索引都对应着本文件内一个历史数据页。同一时间索引页中存放的均为相同位号数据页的索引,同位号诸多索引页之间通过某种机制前后链接在一起形成索引链。并且这个索引链是跨文件的。如此通过对索引链的前后查找,就可以定位到某待查询时间的历史数据所在的页,然后再通过二分查找或者顺序查找的方式,定位到该数据页中那个要查找的历史数据。

4.1.2 管理信息文件

历史数据库的管理信息文件主要记录那些正在被实时数据库使用的历史数据文件。其主要目的是快速定位到某时间段对应的历史数据文件。一个实时数据库项目中一般有一个管理信息文件,另外还有很多个历史数据文件。管理信息文件与历史数据文件如图3所示是一对多的关系,但并非每一个历史数据文件都在管理信息文件中有记录。

4.2磁盘历史数据缓冲区

磁盘历史数据缓冲区是为了防止频繁地写磁盘而开辟的一块内存区。将要写入到磁盘的历史数据,首先放在缓冲区中,当缓冲区中累积了一定数量的历史数据时再一次性写入历史数据文件中[8,9]。

系统中配置有系统参数作为存盘时间。当存盘时间到达后,一次写入磁盘历史数据库。系统结束运行时,要将历史数据缓冲区的历史数据写入历史数据文件。用户访问历史数据时,系统首先检查历史数据缓冲区是否有用户需要的历史数据,然后再查历史数据库文件中是否有用户需要的历史数据。

用户通过系统参数可以设置历史数据库缓冲区的大小,历史数据缓冲区设置得比较大可以加快查找近期历史数据的速度,但同时内存开销也加大。最好根据本机物理内存的容量,动态设置缓冲区大小。

5 磁盘历史数据库实现

磁盘历史数据库是实时数据库的一个子模块,它主要是由实时调度模块来驱动。本课题中是以动态链接库的形式实现的。

5.1磁盘历史数据库的总体架构

磁盘历史数据库主要是为实时模块提供了对磁盘历史数据进行操作的功能。该模块主要针对上面所提到的2种文件:管理信息文件和历史数据文件。其内部大体框架以及调用流程如图4所示。

其中,接口模块负责为外部调用模块提供接口函数。通过这些接口,磁盘历史库的功能暴露给外部模块。读写操作模块是整个历史库的核心模块,提供了最为核心的读写功能,其上层接口模块中一些主要的功能函数,实际上都是在对读写模块进行封装。由于写数据的实现相对比较复杂,在此将其提出来做详细描述。写数据函数实现大致如下:

pLastData = GetLast(pCompress);

if ( pLastData == NULL )

{

//追加模式

return Append(pCompress,pData, nCount);

}

if (IsTimeLessThan(pLastData, pStartData) )

{

return Append(pCompress, pData, nCount);

}

if (IsTimeLessThan(pEndData, pLastData) )

{

//插入模式

return Insert(pCompress, pData, nCount);

}

//中间插入模式

return MidAppend(pCompress,pData,nCount);

首先,从存放在磁盘上的压缩结构中获取历史数据文件中某测点的最后一个数据。如果不存在该数据,则表示系统刚初始化,就直接追加数据。同样,如果待存入这批数据的起始时间在磁盘最末历史数据之后,依然采用的是追加模式。

除此之外,还有另外2种情况:一是待写入这批数据的结束时间在磁盘最末历史数据之前;二是待写入这批数据的起始时间在磁盘最末历史数据之前,但结束时间在磁盘最末历史数据之后。对于这2种情况,前者采用插入模式写入数据,而后者采用中间插入模式写入数据。所谓的中间插入是在删除部分已有数据的前提下进行的一种特殊追加方式。 由于篇幅问题,上述几种数据写入模式的具体流程在此不再做详细描述。

另外,数据页模块负责对缓冲区的数据页面进行解析,其调用了压缩模块的功能。管理信息文件访问模块和历史数据文件访问模块,分别提供了对管理信息文件和历史数据文件的访问功能。

5.2磁盘历史库重要功能模块详述

5.2.1 读写操作功能模块

读写子模块主要是提供了对历史数据的读写操作功能。通过该模块可以读取到某一段时间内的所有数据。写操作方面,该模块对传入的数据做相关的压缩处理,然后调用下层的一些模块将数据写入到历史数据文件。

读历史数据函数的大致形式如下:

int GetData(Time *pStart,Time *pEnd,HisData *pData )

要获取数据的时间段通过 pStart、pEnd 这2个输入参数传入,而 pData 作为一个输入/输出参数,传入的是要获取的测点标识号等相关信息,而得到的是对应时间段的历史数据。

写历史数据函数的大致形式如下:

int WriteData( HisData *pHisData)

待写入的历史数据列表由 pHisData 参数传入,在函数内部根据时间属性判断进行的是追加操作还是插入操作,从而往磁盘文件新增历史数据。读写模块给历史库提供了最核心的功能,因此,它是最为关键的一个模块。在本历史库中的源码中该模块占据了5 000行左右的代码,是一个很大的模块。

5.2.2 压缩模块

在工业控制过程中,测点将产生大量实时数据,由此产生的历史数据是海量的,如不做任何处理直接存储到磁盘历史库,将占用大量空间[10,11,12]。因此,压缩处理是磁盘历史库中一个很重要的功能。

磁盘历史库中压缩处理分为有损压缩和无损压缩2种。这里所指的有损压缩实际上就是一个筛选数据的过程,通过有损压缩过程,磁盘历史库从大量数据中筛选出哪些是需要保存到历史数据文件的,哪些是可以丢弃的。而无损压缩则是将原始数据以某种编码方式来存储,以达到节省存储空间的目的,这种压缩方式是可以通过解压缩来恢复数据原貌的[13,14,15]。磁盘历史库对不同数据类型采用的压缩方式是不尽相同的。主要分为浮点型数、开关量数以及字符串数这3种来进行处理。

a. 浮点型数据的压缩方式。本磁盘历史库中针对浮点型数据采用了旋转门压缩算法。在进行数据压缩时,旋转门压缩算法将比较新的实时数据点和前一个被保留的数据点之间的偏移,如果新的数据点和前一个被保留的数据点所构成的压缩偏移覆盖区的区域可以覆盖前面所有的数据点时,将没有任何数据点被保存。反之如果有任何一个数据点落在压缩偏移覆盖区外,则新数据点的前一个点将被保留,同时整个压缩偏移覆盖区将被重置,并且以新数据点的前一个点作为新的起点。而上面所说的压缩偏移覆盖区实际上是一个平行四边形,其起点是前一个被保留的数据点,终点是最新的一个数据点。平行四边形垂直方向的边长是压缩偏移量的2倍,压缩偏移量由测点组态决定,可以为每个测点指定其合适的压缩偏移量。图5说明了旋转门压缩算法的原理(y 为值坐标,t 为时间坐标)。

浮点型数据压缩处理的实现,即逐个判断所有的历史数据点,哪些是需要写入到磁盘文件,哪些是可以丢弃的这样一个过程。在下列这几种情况下,数据是需要写入到磁盘文件的:当前点为本测点的第1个数据时;当前点质量戳与前一点质量戳不一致时;当前点未通过旋转门压缩检测时。

b. 开关量数据的压缩方式。开关量数据采用的是变化即保存方式,这也是一种无损压缩方式,但其原理和实现都比浮点数所使用的旋转门压缩算法更简单。压缩模块在处理每个原始开关量数据时,都会与历史数据库中相同测点的最后一个历史数据记录做比较。如果当前开关量数据和最后历史数据记录的值相同则滤过该数据,不将其保存进历史数据文件;反之,则保存进历史数据文件,并将该数据设为最后历史数据记录。如一串原始开关量数据为11101001,经过开关量压缩处理,最后得到的要存入到磁盘文件上的数据就为10101。

c. 字符串数据的压缩方式。字符串数据是一种比较特殊的数据类型,单个数据的长度可能比较长。因此,有可能需要进行2次压缩。针对原始的字符串数据,首先通过有损压缩筛选出需要保存的字符串历史数据。然后再根据需要保存的字符串历史数据的具体情况选择性地做无损压缩处理。并非所有的字符串历史数据都需要做无损压缩,只有针对那些比较长的字符串,无损压缩才有意义。当然,经过无损压缩的历史数据从磁盘文件读出来时,必须做相应的解压缩操作,以恢复数据原貌。字符串数据的压缩过程实现大致如下:

if(strcmp(pData->Value,(pCompress->pLastSave)->strValue)==0)

{

//与上一记录数据内容相同,则不保存

return;

}

//记录最后保存数据信息

Copy(GetLastSaveData(pCompress),pData);

if(pData->Length>=20)

{

//执行无损压缩

ExecuteZlibCompress(&ComprData,pData);

//保存历史数据

AppendData(pWriteInfo,&ComprData);

return;

}

//保存历史数据

AppendData(pWriteInfo,pData);

return;

待处理数据进入之后首先与磁盘上记录的上一次保存数据进行比较,如果值相同则不进行任何存储操作。反之,值不相同,则需要将该数据保存至磁盘历史文件,并再对最后保存数据信息做修改。另外,如果待保存字符串数据过长,进行无损压缩处理是有必要的。至于如何衡量字符串是否过长,这与采用的无损压缩算法有关,需要通过相关测试获取。本文中所描述的历史库采用了 zlib 无损压缩。通过测试表明,采用20字节作为字符串长短衡量标准是比较合适的。

压缩模块有大约1 000行的代码。在这个模块中根据不同的数据类型进行不同的压缩操作,这是本历史库的一个特点。实际上,本历史库中数据的压缩效率也是很高的。

5.2.3 数据页存取模块

历史数据文件采用页面存储,数据页存取模块的主要功能是对这些页面进行操作。其中,页面分为历史数据页和数据索引页2种,这2种页面的大小不一定相同,页面结构也不相同。因此,对这2种页面的解析方式是不一样的。数据页存取模块代码量约2 000行,这部分主要负责解析这2种页面。

6 结语

历史数据处理是实时数据库中一个至关重要的功能。文中论述了实时数据库系统历史数据处理的详细过程,以及磁盘历史数据库的实现技术。

摘要:实时数据库(RTDB)是传统数据库技术与实时系统相结合的产物,是厂级信息监控系统(SIS)的核心。历史数据是系统定时从实时数据库中采样,保存到历史数据库中的数据,用户需要时可随时从历史数据库中访问历史数据。历史数据库包含内存历史数据库和磁盘历史数据库。内存历史数据库关注的是测点近期数据的组织方式;磁盘历史数据库管理的对象是历史数据文件和管理信息文件。对磁盘历史数据库的文件结构、缓冲区进行了描述,并详细阐述了其总体架构及重要功能模块(读/写操作、压缩、数据页存取)的实现技术。

实时数据采集处理 篇5

实时数据采集与处理是测量系统中的一个关键问题.采用Matlab语言的serial函数实现了计算机与专业测量仪器的`通信,并利用Matlab自带的工具箱进行了数据处理.

作 者:何学明 陈学东 冯仰平王华民 作者单位:何学明(华中科技大学,武汉,430074;公安海警高等专科学校,宁波,315801)

陈学东(华中科技大学,武汉,430074)

冯仰平,王华民(公安海警高等专科学校,宁波,315801)

实时数据采集处理 篇6

关键词: 图像采集; 图像缓存; LVDS接口; LUPA13002

中图分类号: TN 274文献标识码: Adoi: 10.3969/j.issn.10055630.2013.02.011

引言高帧频相机是研究物体的高速运动或瞬态流逝现象的有效工具,广泛应用于航空、航天以及武器系统等领域,研究高速运动物体的运动规律,在武器试验领域可对舰载、机载导弹发射姿态进行实时记录与跟踪,对其性能进行分析等,为武器系统试验验证提供决策依据。长期以来,中国的高帧频相机主要依赖于进口,尽管进口相机的帧频达到了1 000 fps,可分辨率很低,且使用条件仅限于民用,所采用的技术不对外公开,可借鉴的文献极少。国内目前研究高帧频相机的单位极少,长春光机所在2008年研制的高帧频互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)实时图像采集系统能够满足高速图像数据的采集与处理,且画面清晰,但该系统采用Camera Link接口实现数据的传输,通过PCI图像采集卡将数据采集到计算机上进行处理及显示,系统体积较大,不符合机载相机体积小的要求[1]。本文所研究的高帧频图像采集系统的分辨率为1 024×1 280,采集帧频为500 fps,对实时图像采集和数据处理的要求很高。采用Cypress公司130万像数的LUPA13002型CMOS图像传感器捕获图像信息,以现场可编程门阵列(fieldprogrammable gate array,FPGA)为核心处理单元来完成500 fps的图像数据采集及实时显示,对图像数据的采集,色彩复原,先入先出队列(first in first out,FIFO)缓存,同步动态随机存储器(synchronous dynamic random access memory,SDRAM)存贮及VGA显示进行的研究,可满足机载、舰载和车载环境下高机动性、小型一体化的需求。1图像采集系统的总体方案分析由于要对高速运动物体的瞬态图像进行拍摄,如爆炸瞬间,导弹发射瞬间等,需要较高的分辨率及帧频,为满足需求,所研究的500 fps图像采集与实时显示系统的主要技术参数有:拍摄帧频:500 fps;采集像素数:1 024×1 280;数据位宽:10 bit。由系统的主要技术参数可以计算出高帧频数字图像传感器的图像信息输出速度为781.25 MB/s,并且LUPA13002图像传感器输出格式为Bayer格式,需要转化为RGB格式,格式转化后在FPGA内部的传输速度为2343.75 MB/s[2]。由此可见,系统的数据处理量很大,对FPGA、缓存器件的性能及数据处理算法的要求很高。由于帧频很高,不需要人眼实时观察全过程,仅观察变化规律即可,因此在实时显示环节,采用抽帧显示的方式,可以减小系统的数据处理负担,增加系统的稳定性。光学仪器第35卷

第2期侯宏录,等:500 fps图像采集及实时显示关键技术研究

本文选用Altera公司的Cyclone II系列EP2C35型号的FPGA芯片作为核心处理单元,系统有低压差分信号(lowvoltage differential signaling,LVDS)支持,接收端最高805 Mbit/s数据速率,支持SDRAM、DDR2 SDRAM器件,使系统的硬件结构更为简单。系统的总体框图如图1所示。

系统工作时首先通过键盘启动数字图像传感器LUPA13002,FPGA通过串行外设接口(serial peripheral interface,SPI)总线将默认参数传输到LUPA13002,如曝光时间、像素数、开窗区域等,并对整个系统进行初始化设置。系统启动完成后由LUPA13002捕获高速运动目标的瞬态图像信息,通过高速LVDS接口将Bayer格式的图像传输到图像采集模块,由色彩复原模块对完成图像色彩重建,转化为RGB格式图像。图像抽帧模块每20帧抽取一帧图像,且通过FIFO1缓存存储到SDRAM中,由FIFO2读取SDRAM中暂存的图像信息并传输到VGA接口,最终在LCD上实时显示[3]。2图像采集模块设计图像采集模块对LVDS信号进行串行数据解析,得到同步信息码,还原出正常的图像同步信息。如行有效信号,场有效信号等,最终完成对图像信息的采集。LUPA13002是Cypress 公司推出的针对机器视觉和运动分析的高性能的CMOS图像传感器,它能够提供无失真图像并执行快速读出。LUPA13002在1 024×1 280分辨率下可实现500 fps的图像采集,利用视窗或子采样读取模式可以达到更高的帧速率;采用12路10位ADC的LVDS以DDR方式输出,每通道像素率最大为630 Mbit/s;采用管线化全局同步快门成像,可有效避免拍摄高速运动所产生的影像模糊和图像畸变;通过SPI接口对 CMOS 传感器内部寄存器配置,控制传感器的工作状态,控制方式简单、灵活;输出图像格式为Bayer格式,要在传感器外部完成色彩重建[4]。

2.1LUPA13002工作时序LUPA13002 的工作流程分为如下几步:初始化复位、训练模式、配置片内寄存器、像素光积分、图像信号放大和量化输出。LUPA13002在工作时首先通过RESET_N 对传感器的片载序列发生器、内部寄存器和时序电路进行复位;复位完成后启动训练模式,确保读出图像数据的正确性;然后通过SPI总线对片内寄存器进行配置,主要包括传感器的帧频、曝光时间、开窗、光积分模式等;寄存器配置完成后开始对图像进行捕获、图像信号放大、LVDS量化输出。

nlc202309011223

2.2SPI总线时序驱动FPGA通过SPI总线对LUPA13002内部105个寄存器进行配置,以使传感器能够正常工作。SPI总线有CS、CLK、IN、OUT四条信号线。CLK提供接口同步时钟,最高速率为主时钟的三十分之一。每组数据有16位,第1位为读写控制命令位,第2~8位为内部寄存器的地址位,第9~16位为数据位,对应于传感器的寄存器配置参数。其中SPI读时序的仿真图如图2所示。

2.3LVDS信号接收LUPA13002输出的图像数据通过LVDS接口以DDR方式输出,每24个像数为一个核单元,每一行总共有54个核单元。每个核单元按照一定的次序,分2次在12个通路中,以双倍数据速率串行输出。先输出第0、2、4…22个像数,再输出第1、3、5…23个像数,接着再输出47、45、43…25个像数,再输出第46、44、42…24个像数,以此类推,直至输出1行的所有像数数据[5]。数据通道与像素时钟的相位关系如图3所示。FPGA在接收到LUPA13002的图像数据后,进过串行数据解析和像素重组,得到场标识信号iFVAL,行标识信号 iLVAL和像素信号[11:0]iDATA,复位信号iRST,开始信号iSTART和结束信号iEND,然后通过对这些信号的时序控制,接收到正确的图像数据。最终在ModelSim中仿真得到图像采集仿真图如图4所示。图3数据通道与像素时钟的相位关系

3SDRAM缓存设计在实时显示图像信息时,尽管进行了抽帧,但数据处理量仍然很大,仅靠FPGA内部的存储空间无法满足需求,需要高速、大容量的存储器来缓存图像数据,采用SDRAM对图像进行缓存。但FPGA的时钟,SDRAM的时钟及VGA的时钟均不相同,需要采用FIFO将两个工作频率不同的器件进行数据的交互。 FIFO是一种先进先出的数据缓存器,分为同步FIFO和异步FIFO两种,异步FIFO是跨时钟域系统设计中比较常见的模块组成,它的主要作用是使2个工作频率不同的器件在进行数据交互时实现数据的平稳传输[6]。人眼的极限分辨时间为1/24 s,每20帧抽取一帧,抽帧后帧频为25 fps,此时RGB格式图像的传输速率为117.187 5 MB/s。为满足实时性需求,SDRAM缓存时,采用乒乓交替读入和写出完成数据的缓存,每个SDRAM的容量需大于一帧图像的大小,即4.687 5 MB,存一帧数据需要的时间为0.04 s。因此,选用的SDRAM的容量应大于4.687 5 MB,读写速度应大于117.187 5 MB/s。设计中选用的2片SDRAM,型号为IS42S16320B,容量为64 MB,读写速度为286 MB/s。SDRAM在上电时,首先要进行初始化,包括200 μs的输入稳定期,LBank预充电,8次自刷新,模式寄存器设置。初始化完成后进入工作状态,其工作时序为空闲状态→行有效状态→行有效等待状态→读/写数据准备状态→读等待潜伏期→读/写数据状态→读/写完后预充电等待状态→空闲状态[7]。用ModelSim对其读/写时序进行仿真,读操作与写操作的仿真图如图5和图6所示。图5SDRAM读操作时序图

4实时显示系统设计VGA时序控制模块的作用是将缓存于SDRAM中的图像数据在VGA显示器上实时显示。VGA工作时采用逐行扫描的方式,扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描。每扫完一行,用行同步信号进行行同步,电子束对显示器进行消隐,并使其回到屏幕下一行的起始位置。当扫描完所有行时,用场同步信号进行场同步,使扫描回到屏幕左上方扫描起始位置。同时进行场消隐,并预备下一帧的扫描[89],图7所示为用ModelSim所做的VGA显示时序仿真图。

在此时序图中,有VGA时钟vga_clk,行有效信号hsync和帧有效信号vsync,在其都为高电平并且在VGA时钟的上升沿输出图像颜色信息vga_r,vga_g,vga_b。图8静态图像采集

Fig.8Stationary image acquisition5系统测试为了验证系统设计的正确性,依据总体设计方案制作了采集、记录与显示电路,设计了采集软件,对运动目标进行实际拍摄。在满分辨率条件下对静态物体(花盆)进行实时图像采集与显示,如图8所示,能够很清晰地将物体图像显示在显示器上。以电动小车为目标,移动速度约为4.5 km/h,在一段时间内对小车的移动过程进行拍摄,选取其中连续的6幅图像进行分析,如图9所示。通过图9可以看出,本文所论述的500 fps图像采集及实时显示系统能够完成对高速运动的目标进行高速的图像采集并实时显示,满足现场实时性的需求。

图9连续图像采集

Fig.9Continuous image acquisition

6结论本文对分辨率为1 024×1 280的500 fps高帧频图像采集及实时显示的关键技术进行了研究,提出了实现该技术的基本方案。在设计过程中对各模块进行仿真,验证其可行性,最终设计完成后对整个系统进行性能测试,实现了对视频图像的实时采集、缓存与显示,满足国防与科研试验中对高速视频采集与记录显示的需求。参考文献:

[1]杜鹃.基于FPGA的高帧频CMOS相机数据传输系统设计[D].西安:西安工业大学,2011:2-3.

[2]杨莉珺,刘铁根,朱均超,等.基于CMOS图像传感器的嵌入式图像采集与格式转化[J].电子产品世界,2008(6):96-98.

[3]侯宏录,杜鹃.基于乒乓操作的千兆MAC中的FIFO设计[J].光学仪器,2011,33(1):36-42.

[4]杨会伟.高帧频CMOS相机图像采集系统研究[D].西安:西安工业大学,2009:10-13.

[5]郭文豹.高速CMOS智能相机研究[D].长春:长春光学精密机械与物理研究所,2010:13-21.

[6]张涛.高帧频CMOS相机实时压缩与传输关键技术究[D].西安:西安工业大学,2012:24-25.

[7]张文芳.基于FPGA的SDRAM控制器设计方案[J].兵工自动化,2012,31(2):57-60.

[8]孙艳,孙爱良,王紫婷.基于FPGA的VGA显示控制器的实现[J].自动化与仪器仪表,2008,6(7):106-107.

[9]董兵,朱齐丹,文睿.基于FPGA的VGA图像控制器的设计与实现[J].应用科技,2006,33(10):42-45.

实时数据采集处理 篇7

飞行试验是航空研究的四大技术手段之一, 它贯穿于研究、设计、鉴定、生产和使用的全过程, 是最直接、最准确、最终的试验手段[1], 具有技术综合性强、风险性大、耗资大、周期长等特点[2]。遥测数据实时处理软件系统为各类试飞的测试数据进行实时和事后处理提供了手段和平台, 该系统自投入使用以来, 已成功完成了多个型号的实时监控任务, 为试飞指挥、工程技术人员及时提供了必要的数据依据, 也为试飞安全提供了重要保障。本文介绍了一种基于TCP和UDP协议的遥测数据实时处理软件系统, 实际应用表明整个系统运行稳定、可靠, 满足飞行试验实时监控任务要求。

1系统的组成及功能

遥测数据实时处理软件系统在结构上由三部分组成:前端服务程序、视图驱动程序和图形显示程序, 如图1所示。

前端服务程序运行于服务器上, 主要完成对解调后的遥测PCM数据进行采集、原始数据存盘, 根据预先提供的带头文件完成对PCM数据的取位、拼接、工程量转换等操作, 并根据总监控参数名文件将所需要的参数数据通过网络发送到局域网各监控计算机, 供视图驱动程序和图形显示程序使用原始数据存盘是以逻辑数据帧的形式保存在本地磁盘上, 其数据结构如图2所示, 横排数据称为子帧, 竖排数据称为副帧, 两者的最小单位是PCM字, 根据带头文件经过相应处理之后即为具有实际意义的遥测参数数据。对于感兴趣的飞行数据还可实现现场再现, 完成指定时间段的数据回放。而且在前端服务程序中可完成具体参数的简单事后处理工作。

视图驱动程序位于前端服务程序和图形显示程序之间, 运行于各监控计算机上, 完成网络数据流的接收、查看和存储工作, 并在和图形显示程序的通信过程中完成各监控画面所需数据的分配与传输。同时, 视图驱动程序可对各型号飞机的图形显示程序进行集中分类管理, 简化了图形显示程序的维护与管理工作。视图驱动程序的最大特点是它大大提高了图形显示程序的开发效率, 各图形显示程序只需简单地将所需要的参数传递给视图驱动程序即可获得相应的数据, 而不必关心该参数在网络数据流中的具体位置。

图形显示程序由不同的监控画面程序组成, 运行于各监控计算机上, 供试飞指挥和工程技术人员使用。主要完成监控参数的图形显示, 包括数字、时间历程曲线、飞机平显、飞机三维姿态和地图等图形显示形式。

2 系统的网络通信及工作流程

本系统的网络通信基于TCP和UDP协议的, 并采用WinSock的网络编程接口实现了其网络通信功能。TCP (Transmission Control Protocol, 传输控制协议) 是一种面向连接的协议, 允许从一台计算机发出的字节流无差错地发往网络上的其他计算机。

在两个TCP主机之间可以交换数据之前, 必须先相互建立会话, 通过确认和按顺序传递数据来确保数据的可靠传输。TCP一般应用在要求数据传输具有较高可靠性的场合。UDP (User Datagram Protocol, 用户数据报协议) 提供尽量传递的无连接数据服务, 它不能确保或确认数据传递或数据顺序, 由使用UDP的程序负责提供传输数据所需的可靠性。对同一个局域网来说, 使用UDP能够获得良好的性能, 它能够满足数据传输量不太大、数据实时性较高的应用场合, 在这种情况下, UDP的低开销和多播能力比TCP更合适[3,4]。

充分考虑TCP和UDP协议的各自特点, 本系统采用了TCP和UDP相结合的通信方式以满足试飞实时监控的实时性和数据可靠性的要求。在实时性方面, 前端服务程序采用UDP的通信方式, 将遥测数据广播给局域网中各监控计算机, 以降低系统的资源开销, 获得较高的数据传输效率。在数据可靠性方面, 一是前端服务程序采用TCP的通信方式, 在和各视图驱动程序的一次通信连接中, 将总监控参数名可靠地传输给视图驱动程序。二是视图驱动程序和图形显示程序之间只采用TCP的通信方式, 以使视图驱动程序可靠地获取各监控画面所要求的参数名, 并结合总监控参数名从前端服务程序发送的UDP数据流中筛选出相应的数据, 然后可靠地传输给各个监控画面, 完成数据的图形显示。该系统在实时状态下的网络通信及工作流程如图3所示。

前端服务程序首先需要完成系统状态检测, 加载型号飞机的带头文件和总监控参数表文件。带头文件包含了同步字、位速率、帧长、字长, 起止帧号等信息, 用于对PCM采集卡的设置。同时, 利用WinSock提供的套接字函数 (socket函数) 创建好流式套接字 (TCP通信) 和数据报套接字 (UDP通信) 。对于TCP的通信部分, 首先将流式套接字置入监听 (listen函数) 模式, 当有视图驱动程序的连接请求 (connect函数) 时, 接受 (accept函数) 请求并向请求方发送 (send函数) 监控总参数表, 最后断开 (closesocket函数) 与该视图驱动程序之间的TCP连接, 以减少系统资源的占用。在本系统中, 视图驱动程序采用定时器定时向前端服务程序发送连接请求, 当连接成功后则关闭定时器。这样, 可避免因前端服务程序于视图驱动程序后启动而造成无法连接的情况。当解调后的PCM遥测数据经过位、帧同步之后, 前端服务程序便可进行实时采集。采集的原始数据一方面进行存盘, 另一方面则根据带头文件的ICD定义, 将码值转换成具有实际意义的参数数据, 然后以UDP的形式将数据广播到局域网。

视图驱动程序收到 (recv函数) 总监控参数表和UDP数据包后, 一方面将数据包的时间和总监控 参数表显示在面板上, 以判断网络通信是否正常;另一方面和试飞指挥员和工程技术人员选择的监控画面程序建立TCP通信连接, 其过程和前端服务程序与视图驱动程序之间的TCP通信部分相似, 只不过这里的TCP连接直到试飞监控结束后或监控画面关闭时才断开。对于多画面的显示, 视图驱动程序则需要完成多个套接字的连接, 分别接收来自不同监控画面程序的监控参数表, 并找出它们与总监控参数表的位置的对应关系, 然后按照该对应关系从UDP数据包中筛选出数据并存放在相应的缓冲区中, 最后将缓冲区中的数据发送给各个监控画面程序。

图形显示程序的通信部分比较简单, 主要完成与视图驱动程序的TCP连接。需要注意的是采用WinSock提供recv函数有时并不能从连接的套接字中一次返回所有的数据, 这种情况下, 可根据监控参数名数目和数据类型为recv函数指定接收的字节数, 并从recv函数的返回值中判断实际接收的字节数, 如果少于指定的字节数, 则需要再次接收剩下的字节数, 直至接收完为止。相对应的send函数也存在此种问题, 可采用相同的方法处理。

从系统各个组成部分之间的相互作用关系看, 整个系统构成了两级Server-Client模式, 即作为中间层的视图驱动程序相对于前端服务程序为Client端, 而相对于图形显示程序则为Server端, 如图3中两个虚线框所示。

3 实际应用

本系统集实时数据采集、存储、预处理、网络传输、图形显示、数据回放等众多功能于一体。采用两级Server-Client模式, 既满足试飞实时监控的实时性要求, 又保证了系统具有较高的数据可靠性, 同时大大提高了图形显示程序的开发效率。该系统已成功完成了多个型号飞机的实时监控任务, 图4和图5是某型号飞机的实际应用效果, 分别为平显画面显示和三维姿态画面显示。整个系统操作简单、运行稳定流畅, 易于管理和维护。

4 总结

遥测数据实时处理软件系统实现了飞行试验遥测数据的采集、存储、预处理、网络传输、多形式的图形显示和数据回放等功能。采用基于UDP和TCP 协议相结合的方式, 满足了试飞监控的实时性 和数据传输的可靠性要求。在结构上灵活地运用了处于中间级的视图驱动程序, 使图形显示程序不必关心其参数在UDP数据流中的具体位置, 数据的筛选工作由视图驱动程序负责完成, 大大提高了图形显示程序的开发效率, 也便于系统的扩展和维护。该系统已得到成功应用, 为试飞实时监控提供了强有力的手段。

参考文献

[1]朱铁夫, 尹春铭, 邓建华.飞行试验图形监视系统设计与仿真.计算机仿真, 2003;20 (6) :71—73

[2]张建林.试飞监控系统及其应用.飞行试验, 2004;20 (3) :35—39

[3]陈锡辉, 张银鸿.LabVIEW8.20程序设计从入门到精通.北京:清华大学出版社, 2007

大批量并发数据实时处理技术探讨 篇8

关键词:自动采集系统,并发数据,实时处理

0 引言

随着信息数据采集站快速增多, 加之信息数据采集站点对所采集信息必须进行同步上传, 大量的数据浪涌需要进行快速的处理。因此设计一种快速、准确的数据处理技术成为必须迫在眉睫的问题。

1 简析数据功能的需求

前期各个地区的信息数据采集站点的数量不多, 软件对于数据处理的速度没有太大的需求。由于各个区域的自动站点的数量不断增加, 各个站点间的密度也不断增大, 如果依照我国信息数据采集站发布的相关规定对采集站点进行建设, 区域内站点的数量就会急剧增加, 如果在运用原有的数据接收和处理的方法, 很明显以往的中心处理软件不能快速的对数据进行接收和处理, 满足不了各个机构的需要并会导致数据丢失的情况。业务性的软件对于系统在运行过程中是否稳定、可靠有很大的要求, 下文简述的软件设计重点针对这些问题给予一定的解决方案。

2 系统总体结构的设计

2.1 应用数据缓存技术

数据的缓存技术就是指运用应用程序把一些经常访问的数据或者需要消耗很长的时间才能创建的数据都存储到内存中, 以此来改善系统的整体性能。系统的核心模块可以完整的体现系统的整体性能它可以为各个自动站观测数据腾出足够的缓存地带, 促使管理机制由数据接收和数据处理并发读写数据缓存的形成。由于原来的无人值守信息数据采集站比较少, 不运用缓存技术数据也可以正常的进行处理, 传统的数据接收处理的流程如下:

把Zdz (1) 、Zdz (2) …Zdz (n) 表示为n个自动信息数据采集站, Zdzdata (1) 、Zdzdata (2) …Zdzdata (n) 表示为n个的自动站的采集数据。由于各地的信息数据采集站数量的不断增多, 随着而来的是大批量的并发数据产生, 假如这个时候数据处理模块不能及时的进行处理, 就有可能导致数据的丢失, 致使对于所传来资料的接收和处理没有一定的可靠性。缓存技术的应用可以把数据的接收和处理划分为两个互相独立的工作流程, 缓存模块则相当于一个中介, 在进行数据的接收和处理的时候只要和中介进行联系, 确保了接收和处理出现时域上的冲撞。在图1中, 用Buffer (1) 、Buffer (2) …Buffer (n) 表示拥有第n个缓存的空间。例如:在对数据Zdzdata (i) 进行接收存储的过程时, 其余的自动站的接收数据的线程不用非要排队等待存储, 这时的缓存就像一个较大的蓄水池, 当数量较大的水涌入之时, 该蓄水池还可以吧没能及时流出去的水暂存在蓄水池中。当出现正进行处理的数据正好读取这个数据的缓存区域Buffer (i) , 为了对这个缓存的数据进行读取必须得把相关的存储步骤释放Buffer (i) 锁之后才可以进行, 确保全部的数据可以快速及时处理缓存区域的过程中不会出现数据丢失的情况。

2.2 缓存模块和数据的接收交互

把数据的接收线程个缓存模块进行交互的目的就是实现对数据的存储。第一步, 要找到一个比较大的存储位置, 依照数据的先后顺序存储到缓存的位置, 等候数据处理线程对数据进行提取。这个线程运用VB语言设置的源代码如下;

Clobal databuf (9999) 所找寻缓存空间的大小是10000; Clobal WtPointerAt把握整体的变量, 在指针中写入; Winsockl.CetData TenpBUF, vbByte, bytesTotal, 实施数据的接受, 并对变量进行赋值;databuf (WtPointerAt) =TempBuf写入到缓存中去;If WtPointerAt=10000Then如若指针所指的方向是缓存的尾端, 那么指向开始;WtPointerAT=0, End If。

2.3 缓存模块和数据的处理交互

这里所讲述的数据处理就是把所接受过来的原始信息数据采集站数据加以转换变为信息数据采集站台所需要的产品流程。对于信息数据采集站的原始数据进行处理是一个比较复杂的流程, 加以处理后的产品可以得到广泛的使用, 数据处理线程的重要任务就是对于数据进行处理。、数据的处理线程会按照数据的先后顺序对其进行存放在缓存的位置, 等到数据处理结束以后对这个区域的缓存数据进行清理。数据处理线程的VB语言的源代码如下所示:

Dim TempBuf () AS Byte对临时的变量进行定义;GlobalRdPointer AT设置整体 的变量值 , 进行指针的 读取 ; TempBuf=datdbuf (RdPointerAt) =“”对缓存中的数据进行读取; databuf (RdPointerAt) 对读取过后缓存中的数据进行清除;IfRdPointerAt<>WtPointerAt Then判断指针的读取和写入是否相等 (不等) ;RdPointerAt=RdPointerAt+1这时指针向下移一个位置;If RdPointerAt=10000Then可以找出能对10000个站点进行储存的数据空间, RdPointerAt=0如果出现存储空间已满的情况, 程序就从新开始, End If。

2.4 软件的实现

基于信息数据采集站分布较广, 数据的传输也是同步上传的运行, 可以设计大批量的并发数据处理的系统加以运用。该系统对大批量的实时或者并发数据进行快速及时的接收和处理, 运用的过程比较安全稳定, 从无导致数据丢失损坏的情况, 对于处理过后的数据结果非常准确, 解决了信息数据采集站大批量的浪涌数据进行及时的处理。

3 结束语

大批量并发数据实时处理系统可以快速及时的把大量的信息数据采集站采集的数据进行同步的上传, 数据进行接收的结果准确。运行的过程比较安全、可靠、满足了各部门对于数据接收处理的需求, 保障各部门的数据分析和处理更加的及时、准确。

参考文献

[1]亓开元, 赵卓峰等, 针对高速数据流的大规模数据实时处理方法[J].计算机学报.2012 (03) .

[2]崔慎智, 陈志泊.基于多代理和多优先队列的短信实时并发算法[J].计算机工程.2011 (03) .

[3]丁治明, 高需.面向物联网海量传感器采样数据管理的数据库集群系统框架[J].计算机学报.2012 (06) .

[4]彭商濂, 李战怀, 陈群, 李强.在线-离线数据流上复杂事件检测[J].计算机学报.2012 (03) .

实时数据采集处理 篇9

图像采集与预处理系统指的是用设备来捕获客观世界的图像并对得到的图像数据进行预处理和存储的过程,它在当今工业、军事、医学等领域都有着极其广泛的应用。在图像采集与预处理系统中,人们不仅对系统的硬件结构提出了很多设计方案,同时也对图像预处理的方法进行了大量的研究,并取得了一定的成果。在众多预处理方法里,中值滤波作为一种常用的图像预处理方法,能够有效地去除噪声,平滑图像,并且能够有效地保留图像的边缘信息。经过预处理的图像数据为图像拼接、图像目标检测、目标跟踪等算法的实现提供了必要的数字图像信息,可以提高图像拼接、图像目标检测、目标跟踪等算法的准确度。基于现场可编程门阵列FPGA的图像采集与预处理系统,有很强的动态配置灵活性,具有处理速度度快、处理系统通用性与可移植性强的明显优势。本文的图像采集和预处理系统以FPGA为核心,配合视频编码芯片、解码芯片、SDRAM芯片等设计而成,其中FPGA采用Altera公司的StratixⅡ系列的EP2S60芯片。

1 系统的流程及硬件结构[1,2]

整个系统的结构框图如图1所示。

在如图1所示的系统中,通过CCD摄像头采集视频图像,并将其送至整个处理系统中,通过视频解码芯片将模拟视频变成数字形式传送到FPGA中,通过FPGA中SDRAM控制模块对SDRAM的控制,将从视频解码芯片接收到的图像数据存储到SDRAM中,之后按照需要的时序在从SDRAM中将数据读出,将数据送至中值滤波模块进行预处理,将中值滤波后的数据一路送到DSP中,在DSP中对图像进行复杂的算法处理(如图像拼接、目标检测等算法),另外一路送至视频编码芯片,通过视频编码变成模拟信号输出到显示设备上。

由于FPGA在接收、处理和传输图像数据的过程中要与不同的器件打交道,也就是FPGA要配合或控制它们各自的工作时钟、读写时序、复位时序等,因此FPGA的另一个作用就是对不同的器件进行逻辑控制。

2 预处理系统功能的实现

2.1 视频输入和输出模块[3]

系统采用解码芯片SAA7111将输入的模拟视频信号转换为数字信号形式。SAA7111是飞利浦公司生产的9位视频解码器,提供6路模拟输入和2个增强型的模数转换器。通过FPGA对SAA7111的配置,将模拟视频转变为数字图像并将其送入FPGA中,进行存储和预处理等操作。视频编码芯片采用的是SAA7121芯片,经过预处理后的图像数据从FPGA的引脚输出,送到SAA7121芯片的数据管脚上,场、行同步信号分别接到SAA7121的控制引脚上,通过FPGA行、场信号的控制,就能够输出显示正确的视频图像。在SAA7111芯片和SAA7121芯片工作之前,都需要对这两个芯片进行配置,配置的参数都是通过FPGA产生I2C总线来实现的,其连接如图2所示。

2.2 SDRAM存取模块[4]

在图像处理系统中,输入到FPGA的数据的速度和FPGA处理的速度经常不一致,为了解决这一问题,就必须对待处理的数据进行一定数量的缓存,保证数据处理模块能够均衡不间断地获得待处理的数据。在基于FPGA的开发系统中,缓存数据一般有两种方法,一种是利用FPGA芯片内部带有的Block RAM,另一种是利用片外的存储器件。在众多的存储器件中,SDRAM以其价格低、体积小、速度快、容量大等优势,得到广泛应用。

本系统在FPGA中设计了一个对SDRAM控制的模块,是连通FPGA内其他功能模块和SDRAM芯片之间的桥梁,通过这个模块可以方便地对SDRAM进行访问,SDRAM控制器与外部接口之间的示意图如图3所示。

系统选用MT48LC16M16芯片作为SDRAM对数据进行存储。按照存储过程中功能控制的不同将SDRAM控制器模块划分以下4个模块,通过各个模块之间的配合共同完成对SDRAM的操作。

1)sdr_ctrl模块

该模块的作用是产生读写过程中需要的各个状态,由于SDRAM在进行任何读(READ)或写(WRITE)操作之前,都必须通过执行ACTIVE命令激活相应的bank,打开相应的行,然后才能进行读或写操作,当需要打开另外一个行的时候必须通过Precharge命令先把已经打开的行关闭,然后由一个ACTIVE来打开新的行,依次循环来实现读写操作,而sdr_ctrl模块的作用就是按照需要的时序关系分别产生读和写过程中的各个状态,并将其相对应的值存储到寄存器c State中。

2)sdr_sig模块

该模块的作用是根据sdr_ctrl模块产生的各个读和写控制状态,在适当的时候将输入到SDRAM控制模块中的地址信号及blank选择信号(sys_A)送至SDRAM的地址线sdr_A和blank选择信号线sdr_BA上,将其送到SDRAM芯片中,对SDRAM芯片的读写地址进行控制。

3)sdr_data模块

该模块的作用是根据sdr_ctrl模块产生的各个读和写状态,在写状态的时候将输入到SDRAM控制模块中的数据(sys_D)送至SDRAM的数据线(sdr_DQ)上,将数据信号送至SDRAM中,实现数据的存储过程;在读控制状态的时候将SDRAM的内部存储的数据送到SDRAM的数据线(sdr_DQ)上,再通过控制模块数据端口送到FPGA中进行数据处理,实现数据读取的功能。

4)sdr_rfrsh模块

该模块的作用是产生整个SDRAM控制器模块中的复位信号(rfrsh_req),当输入信号达到一定要求时对整个SDRAM进行复位,使模块的读写操作重新开始。

为了验证SDRAM控制模块能够对芯片进行读写控制,将1~10的10个数字依次存到SDRAM中,之后再将存入的数据依次读出,用Signal TapⅡ采样得到的时序图如图4所示,通过SDRAM的数据线(sdr_DQ)中数据的变化,能够看到数据是按照顺序依次读和写的,这表明通过这个模块能够正确控制SDRAM芯片控制,实现了SDRAM的存储功能。

2.3 中值滤波模块[5,6,7]

在视频图像采集的过程中经常会引入一些随机噪声,这些噪声对图像的质量产生一定的影响,并且会影响图像拼接、目标检测等算法的精确度。本文采用中值滤波的方法去除图像的随机噪声,中值滤波能够在去除图像噪声的同时保持图像原有的清晰轮廓。在系统中设计了2个子模块来实现中值滤波的功能,一个是3×3的窗口生成模块,另一个是中值滤波算法模块。

1)3×3窗口的生成

窗口模版的实现,不仅只是应用在中值滤波中,在卷积、边缘检测等算法中也都需要,因此窗口的实现算法显得很重要。下面以3×3窗口的生成为例,介绍如何在FPGA[8]中生成窗口模版。算法流程如图5所示。

在FPGA中,二维数组以串行方式从第一行第一个数据开始输入,在第一行期间,line2_FIFO的写使能有效,将第一行数据写入line2_FIFO中,在它被写满之前,line2_FIFO不进行读操作;在第二行到来的前一个时钟周期,line2_FIFO的读使能有效,开始读数,1个时钟周期之后,line2_FIFO的写使能有效,开始同时读写过程,在line2_FIFO读使能有效的同时,line1_FIFO的写使能信号有效,将line2_FIFO读出来的数据写入line1_FIFO中;在第三行到来的前一个周期,line1_FIFO的读使能信号有效,开始读数,1个时钟周期后,line1_FIFO的写使能信号有效,开始同时读写的过程,这样就使得3行数据能在时间上对齐。经过每一行后面的3个D触发器缓存3列的数据,便可以同时输出9个数据,于是便能得到3×3的窗口。

为了验证3×3模板生成模块的正确性,分别将序列数字和真实的图像数据输入到这个模块中,用Signal TapⅡ采样得到的波形图如图6所示。从图中可以看出,按照上面的方法能够正确得到一个3×3的窗口,能够为中值滤波以及其他的算法作准备。

2)中值滤波算法的实现

经过窗口生成模块之后同时得到9个数据,在原图像中的位置如图7所示。

按照快速中值滤波算法的要求,首先,分别计算上表中每一行中3个数据的最大值max,中值med,最小值min;然后,计算上面得到的3个最大值中的最小值min_of_max,3个中值中的中值med_of_med,3个最小值中的最大值max_of_min;最后,比较第二步得到的3个值的中间值就是这个3×3窗口的中值middle,即

利用这种排序法的中值滤波仅需17次比较运算,与传统算法相比,比较次数减少了近1/2,且该算法十分适用于在FPGA上进行并行处理,大大提高了滤波的速度。算法的流程如图8所示。

为了验证中值滤波模块的正确性,分别将序列数字和真实的图像数据输入到模块进行验证。用Signal TapⅡ采样得到的时序图如图6所示,时序图中最后一行数据即为得到的中值。整个中值滤波模块中,比较部分的内部RTL图如图9所示。

3 小结

本文主要介绍了以FPGA作为核心器件来完成的图像的采集和预处理系统,该系统具有小型化、集成化且实时性好、灵活性高的特点。该系统将一些单调、不复杂、工作量大且耗费时间的处理交给FPGA来完成,不仅能充分利用FPGA速度高的优越性,也能为DSP提供更多的时间进行更复杂的图像分析,使得分析的结果更为可靠,提高了整个系统的性能。由于本文所介绍的系统是整个数字图像处理系统中的前端系统,属于阶段性工作,后续还有很多工作需要开展,下一步工作应该主要集中在两个方面:

1)将图像处理部分的复杂算法(图像拼接、图像目标检测等)在DSP中实现,以达到整个系统的功能实现;

2)将更多单调不复杂的工作尽量放在FPGA中实现,以减轻DSP的工作量,提高图像的处理速度和DSP中算法的精确度。

摘要:设计了一种以FPGA作为核心器件的视频图像的采集和预处理系统,采用Verilog硬件描述语言具体设计并实现了系统中的视频输入和输出模块、图像存储控制模块(SDRAM控制器)、图像中值滤波处理模块等模块,分别介绍了各个模块的工作原理,以及模块之间的数据传输顺序。在此基础上,采用QuartusII 8.1自带的SignalTapII逻辑分析仪对各个模块的运行结果进行观测和分析,经过反复调试,最终实现了各个模块的功能,为在DSP中进一步实现图像拼接、图像目标检测等复杂算法提供了预处理后的图像数据。

关键词:图像处理,图像采集,中值滤波,FPGA实现

参考文献

[1]马利刚,马铁华.基于FPGA的实时图像采集系统设计[J].计量与测试技术,2009,36(4):51-56.

[2]吴继华,王诚.Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005.

[3]卞九辉.基于DSP+FPGA的视频图像处理[D].哈尔滨:哈尔滨工程大学,2009.

[4]雷明,马游春.基于FPGA的多通道图像采集存储系统设计[J].通信技术,2010,43(4):204-207.

[5]李洋波,赵不贿.基于FPGA的图像中值滤波器的硬件实现[J].现代电子技术,2008,31(22):99-101.

[6]胡斌,殷瑞祥.数字图像中值滤波算法的FPGA实现[J].微处理机,2010(2):10-15.

[7]李春鸣,张焕春,张波.一种基于FPGA的图像中值滤波器的硬件实现[J].电子工程师,2004,30(2):25-26.

实时数据采集处理 篇10

关键词:光谱探测,静态迈克尔逊干涉仪,FPGA,Verilog HDL

静态迈克尔逊干涉仪是在传统迈克尔逊干涉仪的基础上改进的一种空间调制型光谱获取装置,将传统动镜采用一个倾斜很小角度的静镜代替,从而产生联系变化的光程差,最终获得待测光源的光谱信息。由于其没有机械移动或扫描结构,所以结构简单紧凑,同时具有良好的稳定性、抗震动和抗干扰能力,这为其应用在更广泛的生产生活领域提供了有利条件[1,2]。与此相似的静态型光谱仪还有静态傅里叶变换光谱仪[3]、沃拉斯顿分光光谱仪[4]、静态Sagnac三角光谱仪[5]、光栅光谱仪[6]等。无论哪种静态光谱仪都需要一个能够实时采集干涉条纹并且实时处理分析,得到光谱数据的处理系统,否则将丧失静态光谱仪的一大优势——实时性。如果想实现实时处理的功能,要求在采集数据及处理分析算法都相应提高,这也是本文的主要研究内容。

FPGA(Field Programmable Gate Array)为现场可编程门阵列器件[7],是在GAL、PAL、CPLD等可编程芯片的基础上更集成化的产物。由于其本身就是硬件,所以具有数据处理快、灵活性高、集成度好等优点[8]。它克服了定制电路的缺点,又解决了原有可编程器件的门电路数有限的问题,从而被广泛地应用在数字信号处理领域。

目前,对于静态干涉条纹的采集及处理,主要有三种处理手段:(1)干涉条纹灰度数据由数据采集卡采集并传递给PC机[9],采用MATLAB、Lab VIEW等分析软件实现对干涉条纹的光谱分析;(2)采用定制的专用FFT芯片[10],再从CCD等光电器件输出后直接进入FFT芯片完成数据处理;(3)采用可编程数字器件,如DSP、FP-GA等,通过编程实现采集干涉条纹及FFT等算法的数据处理[11]。三种方法各有特点,方法(1)使用简单、在PC机上实现的功能全,但不能脱机工作、系统复杂,便携性差;方法(2)结构紧凑、效率高、实时性好,但灵活性差、可移植性差,并且对于大点数的FFT不适合采用此法;方法(3)从灵活度、结构性能、可移植性等方面看都相当适中,是目前应用开发较多的一种形式。针对本系统研究内容要求较高的实时性,选用硬件编程器件FPGA作为数字信号处理芯片,可以实现更高速、更灵活的系统性能。

1 静态迈克尔逊干涉仪的原理及结构

静态迈克尔逊干涉仪的结构原理如图1所示。静态迈克尔逊干涉系统是在传统迈克尔逊干涉系统的基础上,将原有动镜变为倾斜一定角度的固定反射镜,如图中反射镜1所示。当光线1入射系统后,由分束镜分为两束光,一部分由反射镜1反射回柱面镜,这束光由于反射镜1存在一定的夹角而非原路返回,其会与光线2经反射镜2反射的光线发生相干,形成干涉条纹。其他光线也以此类推,与其他光线发生干涉,最终在整个柱面镜上形成静态干涉条纹,再由柱面镜汇聚到CCD上,采集得到干涉条纹的灰度数据。CCD采集的数据传入FPGA中,在硬件FPGA芯片中完成干涉条纹的滤波、去噪,再通过FFT算法将干涉条纹中的频谱信息提取出来,最终显示出其结果。

在实际情况中,干涉条纹通过引入修正因子,可将光源强度表示为:

对于理想的单色光其产生的干涉条纹如式(1)的光强分布。而对复色光而言,按叠加原理干涉条纹光强可表示为:

其中,v为波数,H(v)为一个常量因子,B(v)为激光光源的功率谱。所以,干涉光强分布I(x)和光谱分布B(v)是傅里叶变换关系,即:

2 FPGA处理系统

2.1 总体设计

对于傅里叶变换的光谱获取需要进行实时处理,即当得到光源干涉条纹的信号后,处理系统需要在处理当前数据时同时接收下一帧的干涉条纹数据,这就需要系统具备高速的数据处理能力。可编程逻辑器件FPGA具有高速并行处理能力,可完成系统实时采集及处理的要求。干涉条纹的灰度数据由CCD探测器采集传入FPGA芯片中,在芯片中完成滤波去噪、快速傅里叶变换、相位校正及标定等算法。系统采用AVii VA M1型线阵CCD探测器,包括1 024个像元,8/10 bit数字输出,可探测波长范围为400~1 100 nm。设计了实时光谱采集及片上处理的系统,其原理图如图2所示。

模块一为干涉条纹的采集部分,由驱动控制对AVii VA M1型线阵CCD探测器进行时钟脉冲的提供和控制。当系统开始运行时,其提供起始控制信号(st)、时钟信号(clk)、触发信号(trgi及trgd)等。模拟输出信号可通过示波器观察采集得到的静态干涉条纹,数字化后传给FPGA。模块二为光谱分析处理模块,为了使处理速度达到较高水平,设计了串并转换方式,将数据导入双端口RAM缓存中,当FPGA芯片控制数据并行读取时,数据输入FFT模块并处理,实现数据的快速傅里叶变换。变换后的频谱信息经过预先编写的相位校正和光谱标定程序而获得准确的光谱分布。

2.2 切趾处理

由于傅里叶变换过程是针对无限大数据的,但实际输入的数据量是有限的,所以干涉图样的采样就相当于与一个矩形函数相乘,也就是频域中光谱和矩形函数的SINC卷积。但由于这样做会导致光谱的失真变形,所以通常采用加窗的处理方式,窗函数选取的好可以使光谱尽量少地泄露。

在MATLAB仿真软件中,通过对一组660 nm激光干涉条纹数据进行加窗处理,分别采用汉明窗、三角窗、加布莱克曼窗与不加窗的情况进行对比,得到如图3所示的频谱相应。

切趾函数的选择需要注意主瓣宽度尽量窄,旁瓣幅值尽量低。由图可以看出,加三角窗中心处产生隔断,而加布莱克曼窗时峰峰值受到抑制,相比之下,加汉明窗比较理想,所以本系统中采用汉明窗。窗体程序是先由MATLAB计算汉明窗的值并用二进制补码表示,然后在FPGA的某一个ROM存储器中存放初始化的窗函数值,最后通过乘法器完成切趾功能。

2.3 FFT算法模块

FPGA设计过程中通常采用VHDL或Verilog HDL编写硬件语言实现时序及逻辑电路。但当输入的数字信号相对复杂时,采用该种方法对编程带来的难度也会加大,硬件工作效率会有所降低。所以在面对复杂问题时,通常采用IP核或者System Generator等算法软件。本文采用IP核完成快速傅里叶变换,采用全精度不缩减及缩减定点算法完成1 024点干涉条纹数据的傅里叶变换。本系统采用基2算法结构,16 bit数据输入与输出,通过设置SCH值确定每级运算后的右移位数。基2算法在整个运算过程中只需采用一个蝶形单元,当第一级数据输入运算模块后,下一级的数据将被放入双端口RAM中采用乒乓缓存操作处理可以提高工作效率,同时,节约了FPGA的片上资源,实际只需3个硬件乘法器加3块双端口RAM即可实现高速运算,以50 MHz为例,进行1 024点的快速傅里叶变换只需要100μs左右。

3 实验

按以上要求搭建实验平台分别采用静态迈克尔逊干涉仪、Atmel公司的AVii VA型12 bit深的线阵CCD探测器、Xilinx公司Virtex VP40型芯片,检测光谱范围为300~1 200 nm,采用1 024个单元作为采集单元,分辨率为10 bit,光源选择FLDT3V10A-LD型660 nm红光激光器。

通过采集干涉条纹,经滤波、去噪、快速傅里叶变换算法、相位校正、光谱标定等程序功能后,实验的5组数据如表1所示。对比光谱分析仪选用布鲁克公司的Q2-ION型光谱仪。

分析表1可知,采用本系统得到的光谱分布相比Q2-ION型光谱仪的精度略低一些,但其多次检测产生的最大误差也在3%以下,说明可以基本准确地得到干涉条纹的频谱信息。并且相比Q2-ION型光谱仪而言,由于是采用FPGA硬件编程实现,所以在处理速度上要优于该产品,整个系统周期小于1 s,适应高速实时的处理系统。

为了提高光谱分析仪器的速度,设计了一种基于FPGA硬件编程完成干涉条纹到光谱分布的处理系统。系统采用滤波、去噪、切趾等处理干涉条纹信息,然后通过快速傅里叶变换完成时频变换,再由相位校正及标定最终输出准确的光谱信息。实验采用静态迈克尔逊干涉仪、660 nm半导体激光器、线阵CCD探测器等完成,与Q2-ION型光谱仪的实验数据进行对比。实验结果显示,误差均在要求范围内,同时,本系统还具备处理速度高、实时性好、灵活性强的优点。

参考文献

[1]ACOSTA Eva,CHAMADOIRA Sara,BLENDOWSKE Ralf.Modified point diffraction interferometer for inspection andevaluation of ophthalmic components[J].OSA,2006,23(3):632-637.

[2]Jiang Meng,Guan Zuguang,He Sailing.Multiplexingscheme for self-interfering long-period fiber gratings usinga low-coherence reflectometry[J].IEEE Sensors Journal,2007,28(31):1283-1286.

[3]张敬波.基于DSP的傅里叶光谱仪测量控制系统[D].长春:吉林大学,2004.

[4]孙方,代作晓,华建文,等.一种傅里叶变换光谱仪动镜速度测量系统[J].半导体光电,2007,2(4):244-248.

[5]李肖廷,李仰军,王高.基于FPGA马赫-泽德干涉仪的光谱数据采集系统[J].激光与红外,2011,4(1):155-161.

[6]YU K,LEE D.Micro-machined fourier transform spec-trometer on silicon optical bench platform[J].Sensors andActuators,2006,130(131):523-530.

[7]贾立哲,魏利辉.相关干涉仪测向算法的FPGA设计实现[J].无线电工程,2006,12(1):12-18.

[8]杨天博,罗迅,李达成.一种基于FPGA的外差干涉仪动态数据采集方法[J].光学技术,2003,6(2):123-126.

[9]李丞,娄淑琴,郑毅,等.基于FPGA的实时互相关运算器[J].北京交通大学学报,2010,2(5):46-49.

[10]殷世民,相里斌,周锦松,等.基于FPGA的干涉式成像光谱仪实时数据处理系统研究[J].红外与毫米波学报,2007,4(6):890-896.

实时数据采集处理 篇11

据了解,改版后,北京27个监测子站发布的污染物监测数据,包括二氧化硫、二氧化氮、可吸入颗粒物(PM10)小時实时浓度数据,改变了过去发布各项污染物指数平均值的做法。

此外,过去北京每天主要发布一项污染物,即首要污染物信息,改版后突出了纳入常规监测的二氧化硫、二氧化氮、可吸入颗粒物的3项污染物监测数据和评价,使市民能全面地了解空气质量情况。北京还会根据国家环境空气质量标准增添新的监测项目。

改版后的空气质量监测数据信息发布,借鉴了中国香港和一些外国城市的空气质量监测数据的发布方式。

此次改版突出了小时实时监测数据。由于空气污染对人体健康的影响主要是累积效应,因此,此次改版还新增了一个空气质量指数信息,是指在查询时刻可回溯24小时的各项污染物污染指数。北京环境保护监测中心除通过监测中心网站发布空气质量信息外,还将在广播、电视发布有关信息,并在新浪微博“北京环境监测”重点发布空气质量变化时的实况。

另外,针对此前备受关注的空气质量标准之争,北京市PM2.5监测网络建设已经启动,力争年底前完成全市PM2.5监测站点建设并发布实时监测数据。届时,京城市民将能及时得知PM2.5的最新研究性数据。

(来源:中国新闻网)

实时数据采集处理 篇12

被动定位是声呐、雷达等领域的重要课题。它利用目标自身辐射的信号对其位置进行估计, 测量系统本身不发出任何信号, 有相当强的隐蔽性;同时, 由于它利用目标发出的连续噪声信号进行测量, 可以得到比主动定位更高的取样率, 实现对高速目标运动轨迹更精细的刻画[1,2]。

相对于需要大量运算的匹配场定位 (MFP) 和跟踪速度慢的目标运动分析 (TMA) , 被动定位中的成熟应用是根据信号空间分布差异进行目标位置估计。一般由多个接收基元组成短基线测量基阵, 通过信号到达不同位置的接收基元信号的时间差异 (TDOA) 来估计目标位置[3,4,5]。

用被动方法完成对运动目标的定位跟踪是水声测量中的难题, 特别在浅海复杂多变的物理场和现场测量强干扰条件下, 被动测量获取的TDOA数据往往野值多、离散性大, 给目标定位带来很大困难。

在现有被动测量时延数据精度水平下, 采用主控计算机和微控制器主从结构, 以微控制器为中心实现系统控制、数据采集和数据交换等, 以主控计算机和改进的多点球面内插法为核心实现目标运动轨迹的实时处理和显示。

1 总体方案设计

要实现被动测量中的数据实时处理, 需要解决的问题有:时延数据的采集和存储、时延数据的综合处理、测量平台的姿态修正、定位解算和输出显示。其中, 多通道的时延估计需要在统一节拍控制下实现每秒20次时延解算和输出, 而没有人工参与的实时定位解算也需要对时延数据进行适当的预处理。

根据实际需求, 需要计算机平台实现基于球面内插法和最小二乘估计的定位算法, 对水下目标运动轨迹进行实时处理, 同时存储原始时延数据用于目标运动轨迹事后精细处理与分析。因此, 实时处理平台采用主控计算机和MCU主从控制结构, 由主控计算机实现目标运动轨迹的实时处理和显示并完成人机交互, 而基于MCU的数据采集控制电路根据主控计算机的指令实现对时延信号处理等部分的可靠控制、采集测量数据和向主控计算机传送数据。

2 实时处理平台结构设计

基于上述总体思路, 部署实时处理应用软件的平台由主控计算机 (工控机) , 人机交互设备, 数据采集控制设备, 模拟调试设备和数据转换接口设备等组成。其部署的结构视图如图1所示。

主控计算机作为系统的控制中心, 采用工控计算机以提高强干扰环境下系统工作的可靠性, 用于实现人机交互, 通过键盘鼠标和触摸屏等多种方式, 接收操作者发出的控制指令, 并通过液晶显示屏和声音提示告警向操作者提供系统的运行信息。系统测量计算得到的信息, 如目标位置、轨迹和设备状态信息等都在显示终端上实时显示。主控计算机作为上位机对数据采集控制设备发出控制命令、采集并存储测量数据, 根据获取的测量数据实时处理并显示目标轨迹。通过网络或磁盘交换等手段实现与后置处理计算机的数据交换, 将数据用于事后目标运动轨迹精细处理, 并实现对测量系统任务的管理。

数据采集控制设备由CPU, 通道选择, 总线扩展, 状态指示, 信号接口和调试接口等组成。

数据采集控制设备的CPU采用AVR MEGA16单片机, 与外围相关器件构成了数据采集控制设备的智能中心, 完成对全系统各分机的控制, 包括数据采集和与上位主控计算机的通信传输等。

数据转换接口一方面通过译码通道选择, 确定读取通道的数据内容;另一方面根据工作状态, 选择数据来源是现场测量还是模拟调试数据。

模拟调试电路, 模拟各测量分机的工作过程, 向数据采集控制设备逐点提供测量数据, 以便系统隔离单独调试, 实现故障快速诊断。

系统的硬件设计采用了抗干扰等技术措施, 确保了在强电磁干扰环境下的工作可靠性。

3 软件设计

在硬件设计基础上, 开发了主控计算机软件和数据采集控制分机软件, 二者之间通过专用数据通信协议实现信息交换。主控计算机软件包括时延数据综合预处理、目标轨迹综合处理及显示、系统管理以及计算机操作系统等;数据采集控制分机软件包括对系统各分机测量控制、控制接口应用、数据采集存储等。

3.1 专用数据通信协议

数据采集控制分机与主控计算机采用标准串行口通信[6], 通信协议主要内容包括通信波特率为38.4 Kbps, 无奇偶校验位, 8位数据位, 1位停止位。二者采用一问一答方式, 数据采集控制分机收到控制命令并确认后, 应答包文序号从0到0x FFH循环。

主控计算机对数据采集控制分机发出的控制命令主要有:自检命令、校准命令、目标轨迹测量、外同步轨迹测量、通信测试、结束运行、上传异常特征码等。在命令间切换时, 先发送停止命令, 再选择新命令。

专用通信协议的采用, 保证了系统控制和数据传输的可靠性, 同时提高了执行效率和响应速度。

3.2 数据采集控制分机软件

数据采集控制分机在主控计算机的控制下, 实现对全系统各分机的管理控制和数据采集存储。其主要功能包括:

接收主控计算机的控制命令;

向主控计算机发送测量数据;

响应按键实现系统重新启动;

根据主控计算机的控制命令, 完成特定状态下的系统控制、数据采集和传输;

系统没有启动工作时定时上传电源异常特征码;

通过状态指示灯提示系统工作状态。

数据采集控制分机的软件可分为初始化和测量采集循环两部分。为了在规定的时间内完成规定的任务, 数据采集控制分机的软件设计成死循环模式, 通过查询50 ms工作周期定时器标志的方式来提高执行的效率。当系统加电或重新启动后, 进行系统初始化设置, 完成后进入硬件看门狗→显示状态→查询定时器标志的死循环。

当定时时间到后, 根据查询的检测命令标志和执行命令标志, 确定系统软件执行的流向。在没有命令需要处理的情况下, 定时上传电源异常特征码。而所有的命令操作, 包括对时延估计分机发送控制字和启动命令、采集测量数据、与主控计算机的串口通信、设备状态显示、没有任务时定时监测上传电源状态等, 都设计成独立的子程序, 根据需要调用。这样, 就可以保证在50 ms的工作周期内, 完成所有必需的操作。

3.3 球面内插法实时定位解算

目标轨迹实时处理的核心是对球面内插法的最小二乘估计。球面内插法SI (Spherical Interpolation) 定位是一种基于TDOA的目标被动定位估计方法[7]。能够直接给出目标位置估计结果, 不需要迭代和搜索, 其效果优于球面交汇法SX (Spherical Intersection) 和平面交汇点法PX (Plane-Intersection) 。它的计算量很小, 而且仅仅涉及一些矩阵的代数运算, 容易实现, 在实时信号处理中有很大的应用价值。

球面内插法没有直接利用测量方程进行计算, 而是用方程差代替一般估计中的测量误差, 将非线性优化问题转变为一个带有非线性约束条件下的线性优化问题;它放弃了非线性约束条件下的线性优化问题中的非线性约束条件, 进一步将问题简化为一个简单的线性优化问题, 从而用加权最小二乘方法求得解答, 简化了问题的求解过程, 使之可以实时实现[8,9]。基本原理如图2所示。

设基阵坐标系原点为O, 被测目标为S, OS=Rs, Oi=Ri, Di=Rs+di, di为程差。

在基阵坐标系中, S的矢量为, i的矢量为

将Di=Rs+di代入式 (1) , 得:

由于存在干扰和噪声, 其等式右边不可能为0, 可设为一个误差εi。

这样就可以对半空间6基元测量阵列出5个线性方程:

写成矩阵形式:

其中:

用方程差代替一般估计的测量误差, 它与待估计的参数R和X成线性关系。这样一来, 问题就转化为线性估计问题。从严格的意义上讲, 这里的估计问题应该是一个带有非线性约束条件的线性优化问题, 因为参数R和X必须满足非线性约束条件XTX=R2。这个非线性约束条件的引入将给优化问题带来很多困难。在球面内插算法中, 放弃了这个约束条件, 使问题得到简化。而模拟计算结果表明, 放弃了这个约束条件以后的解答基本上可以近似满足这个约束条件。

利用式 (2) 求解目标坐标可以有很多种方法, 如最大似然和最小二乘方法等, 最大似然方法必须知道误差的概率分布函数, 一般用最小二乘求解, 因为这种估计方法不需要知道误差的概率分布。

采用最小二乘方程差估计定位算法LSEE (Least Square E-quation Error) 求解目标位置时, 仅仅涉及矩阵的代数运算, 比较方便, 容易实现。但是, 在实时测量中, 对每一个测量点都要矩阵求逆运算, 计算量比较大。

另一种求解目标位置的方法是采用两重最小二乘估计算法。它将未知数分为两部分, 分两次使用最小二乘估计方法分别求得其解。

首先, 假设方程中的R已知, 对X求方程差最小二乘解。由最小二乘估计理论知, 要使ε值达到最小, 就要对上述矩阵求导, 令其导数为0, 从而解出Xs。

令 (δ-2R, Rd) =Z, H=2S, 可得:

令其为0, 则HTZ=HTHZs, 可得:

代入式 (3) 得:

令PS1=I-S (STS) -1ST, 其中I为单位矩阵, 而S (STS) -1ST和PS1皆是对称矩阵。式 (5) 化成:

这样令PS1·δ=Z, 2PS1·Rd=H, 得ε=Z-H·Rs。再作一次最小二乘, 得:

代回式 (4) , 可得:

可求得目标得轨迹点的x, y, z坐标值。

式中很多部分与TDOA测量值无关, 可以事先算好;不用进行矩阵求逆运算, 减少计算量, 计算时间要少, 适宜运用在实时处理中。

3.4 坐标方位摇摆修正

利用球面内插法求出的目标坐标值, 都是以测量基阵坐标系为参考的。实际情况基阵是刚性固定在测量船上, 而测量船在海上抛锚时随着风浪、海流俯仰倾斜, 而且其船首在测量过程中也不是在一个固定的方向, 因此, 目标在水平面及大地坐标的位置必须进行补偿。即把相对于测量船的坐标转换成相对于大地的坐标。尤其在风浪较大时, 摇摆更大, 不考虑这个, 甚至会计算出目标出现在海面上的情况。

方位摇摆系统由陀螺仪指示船首方向与正北方向的夹角, 由水平仪提供每组数据中测量船的俯仰角、倾斜角。根据这三个量, 在求出基阵坐标系中每个点的坐标后, 进行实时补偿, 以求出大地坐标系中的目标坐标值。

基阵的X轴是船艏向顺时针旋转45°Y轴是船艏向逆时针转过45°, Z轴指向天, 安装情况如图3所示。方位摇摆系统的坐标系固定在船上, 水平仪的内环轴安装在基阵Y坐标上, 外环轴安装平行于X轴。由基阵坐标系求出的目标坐标XS[0], XS[1], XS[2]可以通过式 (10) 运算, 转换到大地坐标系中。

其中各角度的定义及正负号按照右手螺旋法则, Z轴定义向上为正。

rry为纵摇角或俯仰角, 为基阵Y轴绕X轴旋转的角度, 上翘为正。

rrx为横摇角或倾斜角, 为基阵X轴绕Y轴旋转的角度, X轴下沉为正。

rrz为方位角, 当船首与正北方重合为0°, 与正东方向重合为90°。

3.5 时延数据预处理

在数据实时处理过程中, 通过记忆滤波、稳健技术、自适应技术[10], 及时准确剔出野值, 实现了对时延数据的实时综合预处理。

记忆滤波根据时延数据和定位计算获得的目标距离的变化快慢, 采用单极点滤波、最小二乘法、卡尔曼滤波和最大似然估计等记忆处理;稳健技术包括处理离散异常点的中值滤波、处理非高斯数据的L型滤波、处理复杂数据的迭代加权拟合等, 在出现异常时仍具有较好性能;自适应技术是根据实时获取数据的变化, 自动调整数据处理的相应参数, 包括对通道的自适应加权、进行时间窗口自适应变化。

采取上述措施, 使后续处理的目标轨迹既能保证连续性, 也能满测量精度要求。避免了因起始段距离远、误差大导致的计算结果过于离散, 无法显示准确方位的问题, 实时处理效果较好。

4 应用情况

利用模拟调试电路提供的预设螺旋线目标轨迹数据对系统进行考核, 对被动测量数据实现实时处理, 与预设理论轨迹完全一致, 系统的数据采集交换正确可靠, 轨迹处理和显示实时性好。

应用上述处理方法, 对某水下高速运动目标被动测量数据进行实时处理, 实时处理显示目标轨迹截如图4所示。

其中, 左图显示目标在第二象限由远及近向第三象限运动, 过靶规避向右回转;右图显示目标回转再搜索后过靶, 向第四象限运动的轨迹。由图4可以看出, 水下目标由远及近追踪位于第三象限的声源, 经100米左右的回转半径后第二次追踪目标。从运动轨迹的离散特点也可以看出, 朝测量阵径向运动时运动轨迹离散度小于回转时, 远距离轨迹离散程度大于近距离, 符合被动测量对方向的估计较距离估计更精确的规律。利用数据综合预处理和球面内插法, 由被动测量时延数据实时处理的目标轨迹离散度小, 连续性高, 可以清楚地掌握目标在水下运动的现场状况, 目标的回转、机动等动作趋势明显, 最终停止的方位基本准确。同时, 通过与内测数据和事后精细处理的轨迹比对, 一致性好, 充分证明了球面内插法实时处理的目标轨迹准确、可信。

5 结语

水下高速运动目标的被动测量和测量的实时性是测量设备的难点所在。针对被动测量的实时性需求, 采用高速同步数据处理控制电路, 在主控计算机的调度下自主实现节拍式时延数据采集、传输和处理。采用高性能工控机, 对时差法被动测量时延数据实时综合预处理, 利用球面内插法定位解算实现了轨迹的实时处理并显示, 提高了水下运动目标轨迹测量数据的实时处理精度。

采用时差法被动测量数据实时处理, 已成功保障ХХ装备海上定型试验任务。试验结果证明:系统设计合理, 功能完善, 具有良好的通用性和海上适应性, 并可推广应用于舰船、潜艇等其它水中运动目标的被动测量定位跟踪, 具有明显的军事、经济效益。

摘要:为实现时差法被动测量数据的实时处理, 采用主控计算机和微控制器主从结构及其相关软件功能设计和实现一个实时处理系统。该系统的核心处理软件采用改进的多点球面内插法, 结合数据的综合预处理步骤, 实现了对高速运动水下目标测量数据的轨迹实时处理与显示。实际使用验证, 该系统实时处理结果离散度小、与事后处理结果一致性好、通用性和海上适应性良好, 具有明显的军事和经济效益。

关键词:被动测量,球面内插法,实时处理,时差法

参考文献

[1]Smith J O, Abel J S.The spherical interpolation method of source localization[J].IEEE Journal of Oceanic Engineering, 2003, 12 (1) :246-252.

[2]姜可宇, 姚直象, 尹敬湘.一种基于三元阵的水下目标被动定位方法[J].兵工学报, 2012, 33 (9) :1107-1111.

[3]王燕.非合作目标精确定位技术研究[D].哈尔滨:哈尔滨工程大学, 2006.

[4]刘红海, 侯向华, 蒋云良.基于3G终端的双处理器间的通信模块设计[J].计算机应用与软件, 2009, 26 (2) :28-30.

[5]饶红霞.多星时差定位的关键技术研究[D].南京:南京理工大学, 2009.

[6]王彤, 戴伟, 张军庆, 等.某型无人机地面检测系统中串行通信的研究与实现[J].计算机应用与软件, 2008, 25 (5) :172-174.

[7]严华雯, 吴健平.加权最小二乘法改进遗传克里金插值方法研究[J].计算机技术与发展, 2012, 22 (2) :92-95.

[8]魏丽萍, 陈岩, 陈庚, 等.不等间距非直线三元阵在水声平面声源被动定位中的应用[J].应用声学, 2009, 28 (6) :447-453.

[9]董明荣, 张彤, 许学忠, 等.空中炸点被动声三基阵定位系统误差仿真[J].系统仿真学报, 2011, 23 (5) :897-901.

上一篇:空间辐射效应下一篇:民间小说论文