在线客服

数据采集论文实用13篇

引论:我们为您整理了13篇数据采集论文范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。

数据采集论文

篇1

1.3信号调理与AD采集电路传感器输出为差分信号,信号动态范围为±5V,系统选用的AD芯片输入信号范围在±2.5V之间,所以传感器输出信号必须经过信号调理后才能进行采集,图3是其中一个通道的信号调理与AD采集电路,其余通道电路与该图完全一致。信号调理电路由全差动放大器OPA1632构成,该放大器的电压噪声密度为1.3nV/Hz1/2,在100Hz(高铁地震监测常用采样率为200sample/s)带宽范围内噪声有效值不超过15nV,满足地震信号采集要求。图中R2∶R1、R7∶R9均为2∶1,可将输入差分信号衰减2倍,实现将传感器输出的±5V信号衰减到±2.5V范围内,满足ADS1281的输入电压范围,图中二极管D1与D2是钳位二极管,将电压钳位在±3V左右,保护AD芯片。AD转换器是一款32bitΔ-Σ高精度模数转换器ADS1281,内部具有可编程FIR、IIR和SINC滤波器,0.6×10-6线性度,在250sample/s采样率下其SNR可达130dB,全速采样模式下功耗仅12mW,非常适用于电池供电的野外作业。通过配置PINMODE引脚,可将ADS1281设置为引脚控制模式(PINMODE=1)和寄存器控制模式(PINMODE=0),本系统将其配置成寄存器控制模式。系统为实现同步采样,将六通道ADS1281的低功耗控制PWDN,复位RST,同步SYNC,采样时钟CLK,SPI时钟SCLK,SPI数据输入DIN引脚分别连在一起,并由FPGA统一控制,达到时钟同步,统一配置AD的目的,从而实现同步采样;而ADS1281的数据输出引脚DOUT分别接在FPGA的6个不同IO口,用于读取六通道AD的数据。参考源是数据采集系统的关键部分,本系统利用DCDC产生-5V电压,低噪声LDO电源芯片LT1964产生-2.5V电压,作为六通道ADS1281的VREFN输入,LT1964噪声为30μVRMS(10Hz~100kHz);利用专用精准基准芯片LTC6655-2.5产生+2.5V电压,作为六通道ADS1281的VREFP输入,该芯片噪声0.25×10-6p-p(0.1Hz~10Hz),温飘为2×10-6/℃,经过试验,该方案是取得较好结果。

1.4FPGA采集控制与数据传输实现数据采集之前,STM32单片机需要通过FPGA对各通道采集卡(即ADS1281)进行配置;数据采集过程中,FPGA需要对六通道数据读取、打包并传入STM32单片机。控制线A0用于选择上述功能。当A0=0时,将STM32单片机与FPGA之间的SPI接口、FPGA与六通道采集卡之间的SPI接口直接相连,此时由STM32单片机直接完成采集卡配置;当A0=1,FPGA输出采样时钟CLK,六通道采集卡同时启动采样。FPGA数据采集与传输过程如图4所示。当六通道ADC数据准备就绪时,ADC_nDRDY信号将同时由高变低,FPGA收到下降沿信号后,将在ADC_SCLK引脚连续产生32个周期的SPI时钟,ADS1281在时钟上升沿输出数据(ADC_DOUT_1至ADC_DOUT_6),FPGA在时钟下降沿读取数据,六通道数据将被缓存在6个32bit寄存器ADC_DA-TA0至ADC_DATA5内;FPGA读取完六通道32bit数据后,在MCU_DRDY引脚产生一个高脉冲,通知STM32单片机读取数据,单片机在MCU_DRDY下降沿启动中断,并在中断中完成数据读取;数据读取过程中,单片机的SPI时钟MCU_SCLK连续产生时钟信号,FPGA在收到时钟信号时,将数据通过MCU_DIN输出,时钟信号共6×32=192个,正好读完六通道数据。

2预警系统C/S构架软件设计

2.1客服端LabVIEW编程PC机客服端界面与网络编程利用LabView软件实现。LabView是由美国国家仪器(NI)公司研制开发虚拟仪器开发软件,是一种图形化编程语言,使用较为方便[6-7]。LabView主界面包含采样率、量程设置,IP地址,端口,开始采集按钮,停止采集按钮和波形界面几个部分,其中波形界面由WaveChart控件实现,具体实现如下:将下位机上传的六通道数据绑定为簇,簇输出接到WaveChart控件的数据输入端,Wave-Chart控件的图形显示方式设置为分格显示曲线,由于簇输入是6个数组绑定而成,WaveChart自动将窗口分成6个子窗口,每个数据对应一个窗口;Wave-Chart界面更新模式设置为StripChart,此模式下波形从左至右绘制,达到右边边界时,旧数据从左边溢出,新数据从右边进入。LabView具有强大的网络编程功能,本系统客户端利用了其中的TCP/IP协议模块,主要涉及到以下几个函数:TCPOpen(打开),TCPRead(读取),TCPWrite(写入),TCPClose(关闭)。客户端程序工作流程如图5所示。从图中可以看出,从开始到结束采集一共用了两次TCP/IP连接,第1次用于发送采集命令,然后接收、处理、显示数据,当按下“停止采样”命令后,首先关闭第1次TCP/IP连接,此时服务器还在继续采集数据,但不发送,所以还需进行一次TCP/IP连接发送停止采集命令给服务器,服务器收到命令后即可停止采集,并进入低功耗模式。

2.2基于LWIP的服务器程序设计服务器的主控单片机是STM32F407,其内部集成了10/100M以太网MAC,结合PHY芯片DP83848即可完成以太网硬件搭建;以太网软件部分通过移植LWIP协议栈实现,已有较多文献或文档详细叙述了移植方法与过程,服务器接收命令、启动采样和传输数据等功能在tcp回调函数中实现。数据采集和传输是同时进行的,可在单片机中申请两个缓存,采用乒乓操作模式工作实现,即:其中一个用于中断采集数据存储,缓存满后,设置数据满标志,并查询另一个缓存的数据空标志,若为空,证明数据已经传输完成,可新的存储数据;另一个用于传输,传输完成后,设置数据空标志,并查询第1个缓存的数据满标志,若位满,证明数据可以传输;由于以太网的传输速度远大于数据采集的速度,以太网传输完成后会等待另一个缓存存满,所以整个过程中不会出现采样数据丢失的情况。

3采集系统性能测试

3.1噪声测试进行噪声测试时,将6通道输入短接,采样率设置为200sample/s;采集开始后,数据将以文本文档的形式实时存入SD卡。图6是由采集的一个通道数据用excel作图得到(取其中任意2000个点),从该图可以看出:该通道采集的输入短接噪声峰峰值在±1.5μV范围内。为进一步对噪声大小进行量化分析,分别进行了三次噪声测试,并在excel软件中利用STDEVA函数对每一次的六通道采集数据做均方差处理,处理结果如表1所示。从表中可以看出:每隔通道的噪声均方差低于0.5μV,噪声一致性较好;采集卡输入信号范围是±5V,按照ADC的信噪比计算公式可算出采集卡的信噪比优于140dB。

3.2地震信号采集实验实验时,把传感器放置于地面,传感器差分信号输出端接入采集卡第1通道,打开监测站电源,在PC机中启动LabVIEW界面,设定好采样率、量程、IP地址与端口,点击“启动采集”,在距传感器2m左右用硬物连续敲击地面,图7是截取的实时显示结果图,从图7可以看出,第1通道具有典型的地震波形输出,纵坐标单位为mV,第2通道~第6通道输出为随机噪声,纵坐标单位为μV。

篇2

1.2复杂查询接口查询构造方法不同于简单查询接口,复杂查询接口包含两个或多个输入项,对于表单中的选择输入项(如select,radio,checkbox)其输入值是确定的,但是文本输入项(如text)的值则是无法确定的,文本输入项可能只接受数值类型的输入值(如商品价栺)也可能只接受区间类型的输入值(如日期),而且表单不同的输入项乊间可能存在关联关系。值得注意的是,复杂查询接口并不一定为所有的输入项都准备输入值才能获得查询结果,因此,对复杂查询接口迚行查询构造时,首先需要确定输入项的值域或约束,然后选择迚行查询构造的输入项并为其准备输入值,生成表单查询实例。HiWE[17],DeepBot[18,19],基于属性值图的方法[20],基于查询模板的方法[21],基于本体的方法[22-24]等则属于此类工作。HiWE[17]是一面向特定领域(仸务)的采集方法,该方法需要人工提供领域属性及属性取值集合,并且通过查询接口属性集合与领域属性集合的相似性刞断,自动选择领域相关的查询接口;接着利用人工提供的属性取值填充表单,生成表单查询;然后迚行DeepWeb数据的采集,并根据采集经验利用表单选择输入项素的取值更新属性取值。但是该方法没有考虑自动为文本输入项产生新的查询词,只能依赖人工提供的知识。不同于HiWE,Wu[20]提出一基于属性值图的查询构造方法。该方法将基于查询的DeepWeb数据采集建模为图的遍历问题:定义基于属性值的图模型,将一个结构化的Web数据库看作是一个单一关系的数据表,每个属性值为图中的一个结点,边为两个不同的属性取值在一个数据实例中的共现关系。该工作得出结论认为结构化的数据库属性值图中结点的度分布与幂律分布(powerlaw)相似,并以此为依据采用贪心选择策略选择度大的结点生成表单查询。但是该方法需要将每一次的查询结果更新到已有的属性值图中,然后选择下一个新的待提交的查询词,这方法更新属性值图的代价较高。DeepBot[18,19]是一个基于浏览器内核开发的DeepWeb数据采集的框架,它与HiWE类似,都采用面向特定领域的方式。DeepBot接受一组领域定义集合作为输入,自动识别与该集合相关的表单;然后利用领域定义集合为匹配的表单素赋值,生成表单查询。其中,领域定义集合用于定义采集仸务。该方法通过领域定义与表单乊间的相似度计算自动选择匹配的表单,许表单素和领域定义乊间存在不完全匹配的情况。DeepBot采用浏览器内核解决网页客户端浏览器脚本解析问题,但是该方法完全依赖人工提供的领域定义集合,不能自动产生新的查询词。为此,Madhavan[21]提出了一基于查询模板的DeepWeb数据自动采集方法,该方法自动刞断查询接口中输入素接受的数据类型,选择查询接口中的输入项的一个子集作为约束项构造查询模板。在约束项乊间利用笛卡尔积的形式产生不同的查询请求。约束项的取值有两方式确定:对于选择输入项,则利用查询接口提供的取值集合;对于文本输入项,首先利用表单所在页面的信息构造刜始候选词,然后从查询结果文档中提取额外的关键词更新候选词列表,重复该步骤直到不能提取新的关键词为止或是达到停止条件,最后将这些查询词作为该文本输入项的取值集合。该方法通过表单查询返回结果验证查询模板的有效性,并且采用自底向上的有效模板的增量式算法构造查询模板。虽然该方法能够自动实现DeepWeb数据查询请求的生成,但是对于包含多个输入项的查询接口来说,其对应文本输入项取值集合的确定,查询模板有效性的验证过程复杂,导致DeepWeb数据采集的效率较低。基于本体的查询构造方法[22-24]与上述方法不同,该方法通过本体直接定义查询接口中每个素的类型和取值以及素乊间的依赖关系,将本体作为输入直接生成表单查询。[22]是一针对语义网环境的DeepWeb数据查询方法。[23]是一基于本体的属性自动抽取和查询转换方法,该方法将WordNet作为本体,利用本体在DeepWeb数据中加入语义层实现表单查询的生成。[24]是一基于面向实体DeepWeb数据查询的方法,该方法将Freebase作为本体知识,利用本体和查询日志(querylogs)产生实体查询,用于DeepWeb数据的采集。但是基于本体的方法与HiWE和DeepBot类似都依赖外部的人工指定的输入信息,自适应性差。

2DeepWeb数据采集查询构造方法分析

仸何一查询构造方法的一个非常重要的特征是其自动化程度,这是指在查询构造过程中需要用户完成的工作量。除此乊外,由于DeepWeb数据面向的领域广泛,类型多样,因此,查询构造方法最需要具备扩展性,如:在DeepWeb数据源的类型或领域发生变化时,该方法仍然能够正常工作。本节从支持的查询接口提交方法,查询词提供方式,自动化程度,扩展性角度对比分析目前已有的查询构造方法。表1是目前已有的查询构造方法定性比较的结果,在自动化程度一列,“AUTO”表示完全自动、“SEMI”表示半自动、“NO”表示人工完成。在扩展性方面,划分为三个层次,分别用“好”、“中”、“差”表示使用相关方法或工具的可扩展程度。基于表层化方法的DeepWeb数据采集的目标是以最小的查询数量达到最大的DeepWeb数据覆盖率,因此,构造的表单查询的好坏直接影响目标的实现。虽然已有的查询构造方法能够表明确实可以使大量的DeepWeb数据内容对用户可见,但它也存在一些局限性,如表2所示。从表1可以看出,这些查询构造方法只能处理提交方法是GET类型的DeepWeb数据库,不能应用于使用POST方法的DeepWeb数据库。除此乊外,从表2可以看出,已有的查询构造方法都存在不同程度的局限性。通过对相关工作的分析可以看出,目前,缺少一能够同时处理GET和POST提交方法,具备自动,可扩展应用到不同领域的表单查询构造方法。因此,DeepWeb数据采集的查询构造方法仍然需要做迚一步的研究。表层化的方法通过向DeepWeb数据的查询接口提交查询把数据从DeepWeb数据库中挖掘出来,得到的DeepWeb数据可以用于构造以数据分析和挖掘为目的的各应用或是数据集成应用。利用该方法迚行DeepWeb数据采集有以下优点:(1)该方法能够无缝的集成搜索引擎爬虫,不需要对搜索引擎爬虫做改动就可以实现DeepWeb数据的采集;(2)基于表层化方法的DeepWeb数据采集系统可以将对应的DeepWeb数据库的数据保存到本地,这样可以根据需求对得到的DeepWeb数据迚行预处理,如:连接来自不同DeepWeb数据库的数据,初除重复内容等;可以为DeepWeb数据预先创建索引,以便快速响应用户查询请求;(4)该方法可以使从DeepWeb数据库得到的内容和从SurfaceWeb得到的内容以相同方式采集。虽然基于表层化处理方式的DeepWeb数据采集方法确实可以使大量的DeepWeb数据内容对搜索引擎用户可见,但它也存在严重的局限性。(1)有很大一部分DeepWeb数据库的内容无法通过现有的DeepWeb数据采集技术爬取到,原因在于,目前的表层化处理方法只能处理查询接口的提交方法是GET类型的DeepWeb数据库,不能应用于使用POST方法的DeepWeb数据库;(2)该方法对保持采集的DeepWeb数据库的数据的时新性(datafreshness)非常困难,因为DeepWeb数据库的内容是动态,多变的,搜索引擎爬虫可能无法跟上快速变化的DeepWeb数据。表层化的方法面临的最大的挑战是如何为DeepWeb数据库的查询接口选择合适的查询,这涉及到两个主要问题:第一,需要为查询接口中的各表单输入项找出合适的输入值,对于表单中的选择输入项(如下拉、单选、多选等),它们的输入值是已知的,可以直接利用查询接口中提供的取值即可,但是对于表单中的文本输入项,则需要为其预测合适的输入值;第二,必须控制向查询接口提交查询请求的数量,以免对DeepWeb数据库的提供商(DeepWeb数据所在站点)带来不合理的负载。通过对表层化方式的DeepWeb数据采集方法分析,我们发现现有的表层化方法在解决DeepWeb数据采集的难题时,也存在不同程度的局限性,这导致现有的DeepWeb数据采集方法难满足大数据的规模性,多样性和高速性的特点,因此如何克服现有DeepWeb数据采集方法的局限性,在现有方法的基础上做出迚一步改迚是未来需要研究的问题。

篇3

基于嵌入式平台RFID采集终端体积小,集成度高,可便携,具有强大的数据实时处理能力,与PC机完全兼容,支持多种数据空间传输标准,并在读写器之间建立统一的应用级接口,可以直接读取读写器上的数据。当存在大量的RFID识别标签时,读写器将会扫描到海量数据信息,RFID采集终端将简化信息的传输流程。同时,运行在RFID数据采集终端的中间件把上位机的管理软件程序从硬件设备接口分拣出来并按照统一的标准进行封装,这样,使上层的应用软件具有统一恒定的数据控制接口。

3嵌入式RFID数据采集终端的硬件设计

读写器获取RFID标签数据后,通过专有的适配器接口,比如串口、CAN口等连接方式,将原始数据交付给嵌入式数据采集终端。流行的嵌入式设备采用模块化架构,功能各异的模块板卡通过插槽嵌入到ARM微处理器芯片核心板上,通过核心板上的总线与CPU及其他模块板卡建立通信。各模块之间相互独立,简化了硬件电路的设计,降低开发周期。在硬件平台设计中,嵌入式微处理器的选择直接制约着嵌入式RFID数据采集终端的性能。为了满足应用的需求,该终端选用基于精简指令集的32位ARM9微处理器。处理终端的硬件平台包括ARM9微处理器,电源复位电路,存储器,串口,以太网接口。ARM9微处理器内置存储器的容量较小,需扩充存储器以满足应用的需求[3]。电源复位电路和存储器的设计是硬件平台设计的关键。

4嵌入式RFID数据采集终端的软件设计

操作系统的开发非常复查而且成本较高,一般不自主设计。选用Lin-ux操作系统作为软件开发环境,并编写硬件接口驱动程序及应用程序。RFID中间件软件采用模块化结构设计,运行在Linux操作系统下。可以分为硬件接口驱动模块,数据处理分析模块,数据统一管理模块。硬件接口驱动模块的指令用于读取读写器上的数据信息。数据处理分析模块对被识物体的数据进行预处理、解析。数据管理控制模块将分析后的数据信息通过无线网络交付给上位机RFID服务器的应用管理系统,负责指令的上传下达,并控制嵌入式RFID数据采集终端的全局工作。

篇4

数据采集是信号分析与处理的一个重要环节,在许多工业控制与生产状态监控中,都需要对各种物理量进行数据采集与分析。但是,专用数据采集卡的价格一般比较昂贵,而我们PC机的声卡就是一个很好的双通道数据采集卡。实际测量中,在满足测量要求的前提下,可以充分利用计算机自身资源,完成数据采集任务,从而节省成本。

本文利用vc编程实现了声卡的双通道数据采集,并且对信号进行频谱分析同时实时测量出信号的频率。还利用声卡的DA通道,实现了正弦波、方波、三角波输出的信号发生器。波形发生器产生的信号同时还可以作为内部测试用信号,检验数据采集的准确性。

二、声卡数据采集系统硬件组成

LineOut

图1声卡数据采集的硬件组成图

利用声卡进行数据采集的硬件组成如图1所示。通常,利用声卡的LineIn端作为信号输入端口,两路被测的模拟信号经过左右声道,A/D转换进入计算机,通过vc编写的虚拟仪器界面显示出来。声卡一般都具有单、双声道输入,从而可实现单双通道的采集.双通道采集时,声卡采用并行采集,并具有采样保持功能,两个通道的数据不存在时间差,第一通道和第二通道数据存储在同一个数据缓冲区中,且等间隔存储,奇数序列是一个通道数据,偶数序列为另一个通道数据.读取数据时,将缓冲区中的数据全部读入到一个数组中,然后对该数组数据,采用隔一点取一点的方法,将数据分开并分别存到另外的两个数组中,即将两个通道的数据分开,从而实现了双通道的采集.单通道采集时,缓冲区中仅仅是一个通道的数据,直接保存到一个数组即可。同时,信号发生器产生的波形也可经过Lineout端输出。

为了保护声卡,被测信号并不是直接进入声卡,而是先经过一个信号调理电路,对信号进行放大或限幅,滤波等处理,信号调理电路如图2所示。(a)图是直流电平叠加模块:C1代表信号的输入,D1代表叠加直流电平后信号的输出,电位器R8控制输入直流电平的大小;(b)图是信号叠加模块:A1、A2代表叠加信号的输入,B1代表叠加后信号的输出;(c)图是模拟滤波模块:LPIN代表滤波器的输出,LPOUT代表滤波器的输出,调节R6可以控制输出的、幅度大小。当然可以根据需要在调理电路中加入一些其它的模块。

图2信号调理电路

三、声卡采集系统的软件编程

微软公司已经提供了一系列API函数用于对声卡的操作,为了将需要用到的函数封装成了一个类,编程时只需直接调用。使用的API函数有:

waveInGetDevCaps实现声卡的性能测试

waveInOpen打开波形输入设备

waveInPrepareHeader为波形输入准备缓冲区

waveInAddBuffer将数据缓存发送给波形输入设备驱动

waveInStart启动向波形输入缓冲区存储数据

waveInUnprepareHeader释放波形输入缓冲区

waveInStop停止向波形输入缓冲区存储数据

waveInClose关闭波形输入设备

设计的软件界面如图3所示。目前所实现的功能有:

图3软件界面设计

1.两路波形发生器。可产生正弦波、方波和三角波,并且频率和幅值可调。

2.频谱分析仪。可以对采集的信号进行频谱分析。频谱分析采用了快速傅立叶变换(FFT)算法,并且将其封装成独立的函数,方便调用。

3.频率计。同时还可以实时地测量出采集到的信号的频率。在利用程序计算频率时,一般采用两种方法。一种是利用快速傅立叶变换,它的优点是不仅能对标准的周期波形进行测量,而且能够计算出各种复杂波形和信噪比非常低的信号的频率值,缺点是分辨率受到限制。另一种计算频率的方法是采用脉冲计数法。它的优点是测量低频信号时精度高,但它不适合波形复杂和信噪比低的信号频率测量。所以在测量过程中,程序先判断信号上述的性质,根据信号的性质,自动地采用相应的测量方法。

四、小结

采用声卡制作的信号采集系统,具有廉价、方便等优点,它可用于振动、噪声、位移、温度、压力等各种物理量的测试。但是一般的声卡支持的采样频率有11025、22050和44100,对高频信号的采集会出现失真。总之,运用廉价的声卡,辅以适当的软件编程,可以构成一个较高采样精度,中等采样频率且具有很大灵活性的数据采集系统。

参考文献

[1]种兰祥,阎丽,张首军.基于计算机声卡的多通道数据采集系统.西北大学学报,2002.

篇5

USB的应用程序一般用VisualC++编写,较为复杂,花费的时间较长。由美国国家仪器(VI)公司开发的LabVIEW语言是一种基于图形程序的编程语言,内含丰富的数据采集、数据信号分析分析以及控制等子程序,用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,易于调试、理解和维护,而且程序编程简单、直观。因此它特别适用于数据采集处理系统。利用它编制USB应用程序,把LabVIEW语言和USB总线紧密结合起来的数据采集系统将集成两者的优点。USB总线可以实现对外部数据实时高速的采集,把采集的数据传送到主机后再通过LabVIEW的功能模块顺利实现数据显示、分析和存储。

1USB及其在数据采集设备中的应用

USB自1995年在Comdex上亮相以来,已广泛地为各PC厂家所支持。现在生产的PC几乎都配置了USB接口,Microsoft的Windows98、NT以及MacOS、Linux等流行操作系统都增加对USB的支持。USB具有速度快、设备安装和配置容易、易于扩展、能够采用总线供电、使用灵活等主要优点,应用越来越广泛。

一个实用的USB数据采集系统硬件一般包括微控制器、USB通信接口以及根据系统需要添加的A/D转换器和EPROM、SRAM等。为了扩展其用途,还可以加上多路模拟开关和数字I/O端口。系统的A/D、数字I/O的设计可沿用传统的设计方法,根据采集的精度、速率、通道数等诸元素选择合适的芯片,设计时应充分注意抗干扰性,尤其对A/D采集更是如此。在微控制器和USB接口的选择上有两种方式:一种是采用普通单片机加上专用的USB通信芯片;另一种是采用具备USB通信功能的单片机。USB的另一大优点是可以总线供电,在数据采集设备中耗电量通道不大,因此可以设计成总线供电。

一个USB设备的软件一般包括主机的驱动程序、应用程序和写进ROM里面的Firmware。Windows98提供了多种USB设备的驱动程序,但还没有一种专门针对数据采集系统,所以必须针对特定的设备编制驱动程序。尽管系统已经提供了很多标准接口函数,但编制驱动程序仍然是USB开发中最困难的一件事。通常采用WindowsDDK实现,但现在有许多第三方软件厂商提供了各种各样的生成工具,如Compuware的DriverWorks、BlueWaters的DriverWizard等软件能够轻易地生成高质量的USB驱动程序。单片机程序的编制也同样困难,而且没有任何一家厂商提供了自动生成的工具。编制一个稳定、完善的单片机程序直接关系到设备性能,必须给予充分的重视。以上两个程序是开发者所关心的,而用户却不太关心。用户关心的是如何高效地通过鼠标操作设备,如何处理和分析采集进来的大量数据。因此还必须有高质量的用户软件。用户软件必须有友好的界面、强大的数据分析和处理能力以及提供给用户进行再开发的接口。

2LabVIEW及其外部动态链接库的调用

LabVIEW是美国国家仪器(NI)公司开发的一种基于图形程序的虚拟仪表编程语言,其在测试与测量、数据采集、仪器控制、数字信号分析、工厂自动化等领域获得了广泛的应用。LabVIEW程序称为虚拟仪器程序(简称VI),主要包括两部分:前面板(即人机界面)和方框图程序。前面板用于模拟真实仪器的面板操作,可设置输入数值、观察输出值以及实现图表、文本等显示。框图程序应用图形编程语言编写,相当于传统程序的源代码。其用于传送前面板输入的命令参数到仪器以执行相应的操作。LabVIEW的强大功能在于层次化结构,用户可以把创建的VI程序当作子程序调用,以创建更复杂的程序,而且,调用阶数可以是任意的。LabVIEW这种创建和调用子程序的方法使创建的程序模块化,易于调试、理解和维护。LabVIEW编程方法与传统的程序设计方法不同,它拥有流程图程序设计语言的特点,摆脱了传统程序语言线形结构的束缚。LabVIEW的执行顺序依方块图间数据的流向决定,而不像一般通用的编程语言逐行执行。在编写方框图程序时,只需从功能模块中选用不同的函数图标,然后再以线条相互连接,即可实现数据的传输。

LabVIEW虽有接口卡的驱动和管理程序,但主要是针对NI公司自己生产的卡。对于普通的I/O卡,还不能直接被LabVIEW所应用,必须采取其他方法。其中可以用LabVIEW的PortIn和PortOut功能,但此法应用简单,无法实现较复杂的接口功能。而采用动态链接库,可以根据具体需要编写适当的程序,灵活利用LabVIEW的各项功能。用户可以自己编写DLLs实现LabVIEW与硬件的链接。用VC++6.0编制动态链接库,首先生成DLL框架,AppWizard将自动生成项目文件,但不产生任何代码,所有代码均需用户自己键入。DLL需要的文件有:①h函数声明文件;②c源文件;③def定义文件。H文件的作用是声明DLL要实现的函数原型,供DLL编译使用,同时还提供应用程序编译使用。C文件是实现具体文件的源文件,它有一个入口点函数,在DLL被初次调用的运行,做一些初始化工作。一般情况下,用户无须做什么初始化工作,只需保留入口点函数框架即可。def文件是DLL项目中比较特殊的文件,它用来定义该DLL项目将输出哪些函数,只有该文件列出的函数才能被应用函数调用。要输出的函数名列在该文件EXPORTS关键字下面。

3基于AN2131Q的单光子采集系统

该采集系统由笔者自行开发并用于单光子计数种子活性快速检测仪中。它主要由将光子信号转为电信号的光电倍增管(PMT)及其辅助电路和基于AN2131Q的USB采集卡组成。PMT及其前置放大器、放大器、甄别器等辅助电路能将微弱的光子信号转换为15ns的标准TTL脉冲信号,脉冲信号经过分频处理后再被USB采集,USB将采集的结果实时地传给主机处理。

3.1USB采集卡的硬件组成

该采集卡由微控制器、USB通信接口、主机以及数字I/O端口组成,如图1所示。

笔者设计了一种同步传输方式的单片方案,应用了内置微处理器的USB设计——EZ-USBAN2131Q。它是Cypress公司的一种内嵌微控制器的80脚USB芯片,包含三个8位多功能口,8位数据端口,16位地址端口,二个USB数据端口,二个可定义16位的定时/计数器和其他输入输出端口。其采用一种基于内部RAM的解决方案,允许客户随时不断地设置和升级,不受端口数、缓冲大小和传输速度及传输方式的限制。片内嵌有一个增强型8051微控制器,其4个时钟的循环周期使它比标准8051的速度快3倍。采用同步传输方式将单片机的计数值实时传送给主机,而主机对计数器的控制信号则采用块传输方式传送。EZ-USB是Cypress公司推出的USB开发系统,它为USB外设提供了一种很好的集成化解决方案。EZ-USB在其内核已做了大量繁琐的、重复性的工作,这样就简化了开发代码,进而缩短了开发周期。此外,开发商还提供了配套的开发软件(包括编译软件uVision51、调试软件dScope51、控制软件EZUSBControllPanel)以及驱动程序GPD(GeneralPurposeDriver)接口,以便于用户进行开发使用。

图2开启设备和获取采集数据的流程图

3.2USB采集卡的软件构成

在USB的Firmware中,采取同步传输(IsochronousTransactions)和块传输(BulkTransactions)两种传输方式。同步方式用来实时传送采集的数据,块传输主要用来传输主机命令信号和USB的状态信息。块传输中利用端点(Endpoint)2。两种传输方式的核心中断程序如下:

voidISR_Sutok(void)interrupt0//块传输方式

{

//initializethecoutersinthe8051

TMOD=0x05;

TCON=0x10;

TH0=0;

TL0=0;

Thb=0,

TH0=0;

TL0=0;

thb=0;

EZUSB_IRQ_CLEAR();

USBIRQ=bmSUTOK;//ClearSUTOKIRQ

}

voidISR_Sof(void)interrupt0//同步传输方式

{

if(TCON&0x21){//Dealwiththecounteroverflow

TH0=0;

Tl0=0;

THB++;

TCON&=0xdf;}

IN8DATA=TH0;//3Bytescounterresult

IN8DATA=TL0;

IN8DATA=THB;

EZUSB_IRQ_CLEAR();

USBIRQ=bmSOF;//ClearSOFIRQ

}

在LabVIEW应用程序中设计了一Usb.dll文件作为LabVIEW与USB的驱动程序。由于EZ-USB开发系统中已经提供了底层驱动程序(GPD)接口函数,用户只需调用这些函数即可与USB设备连接。因此在DLL的编制中只需调用它提供的函数,大大节约了开发时间,提高了开发速度。创建的Usb.dll文件中包含了如下五个输出函数,功能说明如表1所示。

表1Usb.dll包含函数的功能说明

Control主机对USB设备的控制

ReadResult获取USB发送到主机的数据

StartIsoStream启动设备的同步传输流

StartThread得到标准设备的设备描述符

StopThread关闭设备的同步传输流

其定义如下:

LPSTR_declspec(dllexport)_stdcallControl(intinput);

int_declspec(dllexport)_stdcallReadResult(void);

int_declspec(dllexport)_stdcallStartIsoStream(void);

int_declspec(dllexport)_stdcallStartThread(void);

int_declspec(dllexport)_stdcallStopThread(void);

篇6

2系统实现

2.1系统服务器端关键技术及其实现系统服务器端部署基于WebService,服务端程序负责接收移动终端通过SOAP所封装的请求,通过HTTP协议传至Web服务器,进行数据信息交互以实现对移动终端实时定位追踪,管理空间与属性数据,并对移动终端所发回数据进行编辑汇总调用相应服务,将所请求服务解析为xml消息并返回移动终端。

2.2iOS客户端关键技术及其实现

2.2.1移动空间定位技术系统采用iOSSDK所提供CoreLocation移动定位技术定制开发,CoreLocation提供GPS、蜂窝基站、Wi-Fi三种方式对空间地理位置进行定位。通过创建定位管理器并对精度以及定位更新时间间隔进行设置,CoreLocation根据设置自动选择定位方式并将定位数据录入系统供地图功能模块使用。

2.2.2地理图层与加载系统GIS系统功能模块基于ArcGISAPIforiOS进行开发定制,所加载地图分为在线地图与离线地图两类。在线地图是由移动终端获取服务器端由ArcGISServer所受检县地理图层数据以及受检小班空间地理位置。离线地图数据是考虑到有些受检小班地处偏远地带,无线信号较弱,无法访问服务器,通过ArcGISAPIforiOS中的AGSTiledLayer类建立离线图层访问,加载预存于移动数据采集系统的地理图层缓存数据用以数据采集工作。

篇7

1.3CPU控制系统由于石油钻井深度能够达到数千米,井下温度超过120℃。油井下环境非常复杂,要求数据采集系统必须能够实时、快速地处理采集的数据,还具有耐高温以及很好的抗干扰能力。采用C8051单片机器件采集井下时间、温度,并通过TBS总线接收压力,流量,持水率等数据参数。选择C8051F040作为主控芯片,了解其与各模块的接口技术,设计微控制器电路,并进行设计仿真,以及各部分电路实验。验证电路结构后,设计原理图、PCB板、焊接调试电路,并编写控制各模块的程序,完成主控芯片和电路设计,及软硬件调试工作。

2硬件整体设计

此设备需要下放到油井下,需要采集的参数为温度和实时时间,接收的参数为压力`,流量,持水率。设备下井后,工作电压为35V,通过改变向油井下供电电压,由继电器来控制井下仪器的开伞与收伞,系统由中国石油测井公司提供专用电池。仪器下井后先开伞,再进入采集状态,开伞后,向井下仪器发命令,下发的命令为0x82(持水率),0x8(0流量),0x84(压力),每间隔40ms下发一个命令,循环发送,下发的命令通过TXD,经TBS端送到下面挂接的仪器。下面仪器收到命令后自动上传,上传的数据(三个参数)由TBS端进入,经WESN-SC-001模块解调通过TXD进入CPU,选择合适的波特率,把数据存储到FLASH存储器中,工作40天后停止采集,收伞。本设备的工作方式为CPU处于持续工作状态,其他电路处于间歇工作状态,每5分钟唤醒一次,每次工作时间可以调整。设计了USB接口,用于硬件和软件调试,调试完成后去中国石油测井公司做实验,对系统进行测试。

篇8

FPGA在触发信号下,控制ADC采样输入信号,并存入FIFO中。当存满时,将数据写入USB接口芯片CY7C68013,同时切换另一块FIFO接收ADC转换的数据,实现乒乓存储,以提高效率。FPGA模块的一个重要作用是控制USB接口芯片CY7C68013。当ADC采样后,数据进入FPGA模块,FPGA控制数据流将其写入CY7C68013的FIFO中,以便于USB向PC机传输。CY7C68013的数据传输模式采用异步slaveFIFO和同步slaveFIFO切换模式。通过实测,前者传输速度约为5~10Mbit/s,后者传输速度最高可达20Mbit/s,传输速度的提高可通过更改驱动程序的读取方式实现。

3软件设计

3.1USB驱动程序设计

USB2.0总线传输技术最高速率可达480Mbit/s。本系统采用批量传输的slaveFIFO模式。CY7C68013芯片内部提供了多个FIFO缓冲区,外部逻辑可对这些端点FIFO缓冲区直接进行读写操作。在该种传输模式下,USB数据在USB主机与外部逻辑通信时无需CPU的干预,可大大提高数据传输速度。Cypress公司为CY7C68013芯片提供了通用的驱动程序,用户可根据需求开发相应的固件程序。

3.2FPGA模块程序设计

系统中FPGA模块的核心作用是控制AD9233芯片进行采样。AD9233作为高速采样芯片,其最高采样速率达125Mbit/s,最大模拟带宽为650MHz。通过改变采样速率可使该系统采集不同速率需求的信号,扩展了该系统的应用范围。描述FPGA控制USB数据写入接口芯片FIFO的状态机如图6所示。状态1表示指向INFIFO,触发FIFOADR[1:0],转向状态2;状态2表示若FIFO未满则转向状态3,否则停留在状态2;状态3表示驱动数据到总线上,通过触发SLWR写数据到FIFO并增加FIFO的指针,然后转向状态4;状态4表示若还有数据写则转向状态2,否则转向完成。

3.3上位机设计

为实现人机交互,利用VC++MFC在PC机上编写了可视化操作界面,即上位机。上位机既用于数据采集的控制,同时也用于采集数据的实时回放。上位机界面如图7所示。上位机主要功能:1)按下“检测USB”按钮,可检测USB是否连接正常,并显示USB基本信息。2)按下“开始采集”按钮,可将采集的数据传输到PC机并实时回放数据波形;再次按下“开始采集”按钮,可暂停数据波形回放。3)按下“保存数据”按钮,可将采集的数据以*.dat文件的形式存储到PC机硬盘。4)按下“结束采集”按钮,可关闭采集系统并退出界面;或按下“确定”和“取消”按钮,也可直接退出界面。

4系统实测

为了测试数据采集与回放系统,利用通用信号处理开发板设计了DDS模块。该DDS模块产生一个正弦波作为测试信号,通过AD9744芯片转换后变为模拟信号输出,并将此输出信号接至示波器以便验证系统。数据采集与回放系统的实物图及系统实测波形与回放波形。

篇9

2资料解释及地质成果

2.1资料解释使用Geo-Frame4.3全三维解释系统进行解释,采用工作站和人工解释相结合,时间剖面、水平切片、面块切片解释相结合的思路和流程进行解释。断层解释:充分利用现有的地质资料,从联井剖面出发,通过人工对比解释明确各个反射波所对应的地质信息,在确定好空间关系后,利用工作站的自动追踪拾取功能,由粗网格到细网格逐步加密解释。采用人工解释的粗网格建立区内主体构造框架,确定较大断层,再利用人机联作方式进行细网格追踪对比,进一步核查构造方案解释的合理性,解释局部小断层和细微构造,最后确定构造方案。在断层解释时,以垂直剖面解释为主,水平切片为辅,再配合其它方法,使资料解释更精细、更准确。根据构造的复杂程度,有目的地选择一部分主干剖面进行重点解释,即按照由粗到细(由大网格到小网格)、由纵向到横向、由剖面到平面、由平面到空间的步骤反复进行解释。通过水平切片解释,检验断层组合的合理性,并对一些小断层的展布规律作出符合实际的解释。为确保断层的可靠性,在断层组合时,依据区域地质规律,充分利用工作站优势,确保断层解释合理,断层相互切割关系符合地质规律。如图2所示,在解释系统上可以清楚的解释连续的煤层反射波及清晰的断层点位置。煤层分岔解释:分叉合并煤层对应的反射波振幅强弱发生变化,从分叉到合并,振幅由弱变强;而断层只是同相轴错断,断开后的反射波强弱不发生变化[5]。分叉合并煤层对应的反射波同相轴个数发生变化。从分叉到合并,波组数由多变少。而断层的两盘同相轴个数不发生变化。分叉合并煤层对应的反射波同相轴相位没有真正断开,在波阻抗剖面上,煤层的分叉合并具有类似的特征,反映更加清晰。图3为煤层分叉在时间剖面上的反映,图4为煤层分叉在反演剖面上的反映。

2.2地质成果本次三维地震勘探查明了1-1、2-2、3-1、4-2、5-2煤层的底板起伏形态及构造发育情况;查明了区内落差大于5m的断层,3~5m的断点。对勘探区内1-1、2-2、3-1、4-2、5-2煤层的厚度变化趋势进行了预测。对勘探区内覆盖层厚度、1-1煤可采边界和2-2煤分叉合并范围进行了解释。丰富的三维地震地质成果为矿井开拓、采区设计提供了地质依据。

篇10

1.2数据格式VantagePro通过串口获取气象数据,实际传送的气象数据为99个字节的数据包,如表1所示,从1-99对数据包编号,提取的数据用括号给出了注释,括号中逗号之前的内容表示字段含义,逗号之后的内容表示测量值的单位。数据包的具体格式如表1所示。

2实时气象数据拆分与归档

在MUSER的应用中,将各个ISS采集的气象因子数据直接通过RS232C串口通信协议将采集的数据传到操作系统为LINUX的计算机,通过该接收机器上的数据请求与拆分程序将RS232C传送的气象因子数据包实时拆分出需要的气象因子并归档到MySQL数据库和Redis高速缓存中。同时数据合并程序自动合并同价值的数据,将最新的数据存到Redis中。系统整体结构如图1所示。

2.1初始化串口数据的接收和归档以驻留程序方式运行在服务器上,图2显示了实时气象数据拆分与处理的初始化流程。气象因子的记录器对象主要暂时存储拆分处理后的气象数据,气象因子读取器对象负责读取数据包中记录的特定气象因子的测量值。由于VantagePro气象站测量的气象因子的值与要归档值的单位不一致,因此也需要气象因子的修正器对象来对测量的原始值进行修正。

2.2数据的拆分与处理系统的初始化后,采集程序定时从串口接收数据,首先获得采集时间并转换为1970年到现在的秒数,并向VantagePro请求一个数据包,接着就是处理收到的气象数据包。PC上实时气象数据的拆分与处理的流程如图3所示。图3中的时间秒数的定义为从1970年1月1日0时0分0秒到此时的秒数。相邻的两个时间秒数之间相差60秒,即1分钟。数据的采样周期也是1分钟。时间秒数用来唯一表示气象因子的采集时间或采样时间,同时也作为Redis存储中可分类的集合中Score的值。

2.3气象数据的存储将采集的气象数据保存到MySQL数据库中,同时为了提高查询速度,使用Redis作为高速缓存。MySQL数据库中数据表的定义如表2所示。Redis是一个Key-Value存储系统[10]。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。Redis的功能可以理解为一个Key-Value的数据结构操作,数据都保存在内存中定期刷新到磁盘,以及提高的读写效率。Redis数据库通过两种方式可以实现数据持久化:使用快照的方式将内存中的数据不断写入磁盘和将操作记录记录在磁盘文件中。因为需要在Redis执行范围查询,我们使用有序集合SortedSets存储气象数据,集合结构中使用时间秒数作为score,气象数据的实际值为其value值。而Key的值为气象的统计因子,如温度(temperature)、湿度(humidity)等。比如将2015年1月29日16时26分05秒采集的温度的值17℃存储到Redis的命令为:redis127.0.0.1:6379>zaddiss.temperature142252110017。

2.4拆分存储实例在如下的气象数据拆分与归档的例子中,以测量室外温度的传感器iss.temperature为例。其它气象因子数据的拆分与归档和气象因子(室外温度)的处理情况类似。步骤如下:1)开始采样时间为2015年1月29日16时26分05秒,将该时间转换成1970年以来的时间秒数,为1422521100。2)向VantagePro发送命令LOOP1命令,请求一个99字节的数据包。接收端到气象站响应的数据包,数据包的内容如图5所示。3)传感器iss.temperature的读取器从数据包中偏移量为12的位置读取2个字节,其十六进制值为001d。读取器对象将001d转换成十进制的29。4)传感器iss.temperature的修正器将传感器的29F修正为2.900000F,然后再将2.900000F转换成-16.166667℃。(温度传感器记录的测量值是实际测量值的10倍,其它值的倍数详见表1)5)传感器iss.temperature的记录器将-16.166667℃更新到记录器对象中。6)将传感器的值归档到MySQL和Redis中。7)更新下一次采用时间,循环步骤1-7。

3气象数据合并与快速检索

3.1气象数据的合并一般情况下将采集到的气象数据处理成特定格式后直接追加到数据库中,然而随着时间的积累,数据库中的记录数会急剧增加。相应地检索某一个时间段的天气状态所需的时间也会增加,不能满足MUSER的高效数据处理的要求。由于连续时间段的天气状态可能相同。例如在2014-6-610:00:00到2014-6-610:00:59这一分钟采集到的天气状态为晴天,而在接下来的59分钟的时间内采集到的天气状态都为晴天。通常情况下是将这60条记录全部存储到数据库中,然而改进的归档方法是合并这60条记录为一条记录。当检索落在这一合并后的时间段天气状态时,仍然可以检索到要检索时间段的天气状态为晴天,这样做和从60条记录中检索到的天气状态一样都是晴天,保证了合并后的数据仍然是有效的。如果一天要归档的所有采集到的天气状态都一样,那么采用合并方法,数据库中存储一条记录就可以记录这一天的天气状态。但是如果采用传统的数据归档方式,记录一天的天气状态就需要24*60条记录,这样不仅浪费了存储空间,同时影响到检索效率。

3.2快速检索数据合并一定程度上可以加快检索速度,但对于具体值的气象采集因子,如需要在每个UVFITS文件中存储的温度,湿度值,是无法采用数据合并的,数据量仍非常大。为了进一步提高查询速度,使用Redis作为高速缓存。数据查询时首先访问Redis,只有当Redis访问失败时或者在Redis中找不到数据时才访问MySQL,并将从MySQL获得的数据更新到Redis中。MUSER中最常用的气象数据查询模式是根据观察时间查询气象数据,因此使用有序集合SortedSet,SortedSet是Set的一个升级版本,它在Set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的MySQL表,一列存储具体的值,一列存顺序,也就是气象数据的时间。操作中key理解为zset的名字。查询时根据观察时间和气象因子可以获得该时刻的具体气象数据。比如查询时间2015年1月29日16时26分05秒的温度的值,首先将该时间转换成1970年以来的时间秒数,为1422521100,在Redis上执行如下查询命令:redis127.0.0.1:6379>zrangebyscoretemperature1422521100+infLIMIT01这条命令的意思是在键值为temperature的SortedSets中查找大于时间点1422521100的第一个值。+inf在Redis中表示正无穷大。

篇11

1.3触控液晶显示器电路设计系统采用2.4寸(240×320)TFT液晶显示器,由于STM32内部没有集成专用的液晶屏和触摸屏的控制接口,所以需要外接专用芯片来控制显示面板,系统采用ILI9325和TSC2046芯片。由STM32的FSMC(静态存储控制器)的NOR/PSRAM模式模拟产生ILI9325的8080接口通信时序,通过对FSMC的操作向ILI9325写入控制命令或GRAM数据。通过配置STM32的SPI接口向四线电阻触摸屏控制器TSC2046写入控制字和接收控制器返回的屏幕X、Y方向的触电电压值。

2系统软件设计

根据系统硬件功能设计,系统软件主要有3个模块组成:驱动信号产生模块、数据处理模块、液晶显示模块。为了使3个模块协调运行、更好地管理微处理器及缩短软件开发周期,系统在STM32微处理器平台上移植了μC/OS-Ⅱ实时操作系统[7]。根据所完成任务性质及特性的不同,3个模块有不同的优先级及运行频率,其中驱动信号产生模块拥有最高优先级,可剥夺型的实时内核在任何时候都运行就绪了的最高优先级任务,数据处理模块的运行是基于驱动信号产生的基础之上,优先级次低,窗口显示模块对实时性要求最低,可设置最低的优先级。驱动采样任务、数据处理任务及显示任务的流程如图6所示。液晶显示处理任务负责及时按指定格式显示出处理后的数据及完成通过触摸屏控制系统的运行启停等人机交互任务,为了简化开发步骤和提高程序开发效率,系统在μC/OS-Ⅱ操作系统的基础上移植了uCGUI嵌入式图形支持系统。uCGUI设计用于为任何使用LCD图形显示的应用提供高效且独立于处理器及LCD控制器的图形用户接口。uCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。系统的控制显示界面如图7所示。

篇12

1USB简介

USB是一些PC大厂商,如Microsoft、Intel等为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信的标准,自1995年在Comdex上亮相以来至今已广泛地为各PC厂家所支持。现在生产的PC几乎都配备了USB接口,Microsft的Windows98、NT以及MacOS、Linux、FreeBSD等流行操作系统都增加了对USB的支持。

1.1USB系统的构成

USB系统主要由主控制器(HostController)、USBHub和USB外设(PeripheralsNode)组成系统拓扑结构,如图1所示。

1.2USB的主要优点

·速度快。USB有高速和低速两种方式,主模式为高速模式,速率为12Mbps,另外为了适应一些不需要很大吞吐量和很高实时性的设备,如鼠标等,USB还提供低速方式,速率为1.5Mb/s。

·设备安装和配置容易。安装USB设备不必再打开机箱,加减已安装过的设备完全不用关闭计算机。所有USB设备支持热拔插,系统对其进行自动配置,彻底抛弃了过去的跳线和拨码开关设置。

·易于扩展。通过使用Hub扩展可拨接多达127个外设。标准USB电缆长度为3m(5m低速)。通过Hub或中继器可以使外设距离达到30m。

·能够采用总线供电。USB总线提供最大达5V电压、500mA电流。

·使用灵活。USB共有4种传输模式:控制传输(control)、同步传输(Synchronization)、中断传输(interrupt)、批量传输(bulk),以适应不同设备的需要。

2采用USB传输的数据采集设备

2.1硬件组成

一个实用的USB数据采集系统包括A/D转换器、微控制器以及USB通信接口。为了扩展其用途,还可以加上多路模拟开关和数字I/O端口。

系统的A/D、数字I/O的设计可沿用传统的设计方法,根据采集的精度、速率、通道数等诸元素选择合适的芯片,设计时应充分注意抗干扰的性能,尤其对A/D采集更是如此。

在微控制器和USB接口的选择上有两种方式,一种是采用普通单片机加上专用的USB通信芯片。现在的专用芯片中较流行的有NationalSemiconductor公司的USBN9602、ScanLogic公司的SL11等。笔者曾经采用Atmel公司的89c51单片机和USBN9602芯片构成系统,取得了良好的效果。这种方案的设计和调试比较麻烦,成本相对而言也比较高。

另一种方案是采用具备USB通信功能的单片机。随着USB应用的日益广泛,Intel、SGS-Tomson、Cypress、Philips等芯片厂商都推出了具备USB通信接口的单片机。这些单片机处理能力强,有的本身就具备多路A/D,构成系统的电路简单,调试方便,电磁兼容性好,因此采用具备USB接口的单片机是构成USB数据采集系统较好的方案。不过,由于具备了USB接口,这些芯片与过去的开发系统通常是不兼容的,需要购买新的开发系统,投资较高。

USB的一大优点是可以提供电源。在数据采集设备中耗电量通常不大,因此可以设计成采用总线供电的设备。

2.2软件构成

Windows98提供了多种USB设备的驱动程序,但好象还没有一种是专门针对数据采集系统的,所以必须针对特定的设备来编制驱动程序。尽管系统已经提供了很多标准接口函数,但编制驱动程序仍然是USB开发中最困难的一件事情,通常采用WindowsDDK来实现。目前有许多第三方软件厂商提供了各种各样的生成工具,象Compuware的driverworks,BlueWaters的DriverWizard等,它们能够很容易地在几分钟之内生成高质量的USB的驱动程序。

设备中单片机程序的编制也同样困难,而且没有任何一家厂商提供了自动生成的工具。编制一个稳定、完善的单片机程序直接关系到设备性能,必须给予充分的重视。

以上两个程序是开发者所关心的,用户不大关心。用户关心的是如何高效地通过鼠标来操作设备,如何处理和分析采集进来的大量数据,因此还必须有高质量的用户软件。用户软件必须有友好的界面,强大的数据分析和处理能力以及为用户提供进行再开发的接口。

3实现USB远距离采集数据传输

传输距离是限制USB在工业现场应用的一个障碍,即使增加了中继或Hub,USB传输距离通常也不超过几十米,这对工业现场而言显然是太短了。

现在工业现场有大量采用RS-485传输数据的采集设备。RS-485有其固有的优点,即它的传输距离可以达到1200米以上,并且可以挂接多个设备。其不足之处在于传输速度慢,采用总线方式,设备之间相互影响,可靠性差,需要板卡的支持,成本高,安装麻烦等。RS-485的这些缺点恰好能被USB所弥补,而USB传输距离的限制恰好又是RS-485的优势所在。如果能将两者结合起来,优势互补,就能够产生一种快速、可靠、低成本的远距离数据采集系统。

这种系统的基本思想是:在采集现场,将传感器采集到的模拟量数字化以后,利用RS-485协议将数据上传。在PC端有一个双向RS-485~USB的转换接口,利用这个转接口接收485的数据并通过USB接口传输至PC机进行分析处理。而主机向设备发送数据的过程正好相反:主机向USB口发送数据,数据通过485~USB转换口转换为485协议向远端输送,如图3所示。

在图3的方案中,关键设备是485~USB转换器。这样的设备在国内外都已经面市。笔者也曾经用NationalSemiconductor公司的USBN9602+89c51+MAX485实现过这一功能,在实际应用中取得了良好的效果。

需要特别说明的是,在485~USB转换器中,485接口的功能和通常采用485卡的接口性能(速率、驱动能力等)完全一样,也就是说,一个485~USB转换器就能够完全取代一块485卡,成本要低许多,同时具有安装方便、不受插槽数限制、不用外接电源等优点,为工业和科研数据采集提供了一条方便、廉价、有效的途径。

4综合式采集数据传输系统的实现

现在的数据采集系统通常有分布式和总线两种。采用USB接口易于实现分布式,而485接口则易于实现总线式,如果将这两者结合起来,则能够实现一种综合式的数据采集系统。实现方法是:仍然利用上面提到过的USB~485转换器实现两种协议的转换。由于USB的数据传输速率大大高于485,因此在每条485总线上仍然可以挂接多个设备,形成了图4所示的结构,其中D代表一个设备。

这种传输系统适用于一些由多个空间上相对分散的工作点,而每个工作点又有多个数据需要进行采集和传输的场合,例如大型粮库,每个粮仓在空间上相对分散,而每个粮仓又需要采集温度、湿度、二氧化碳浓度等一系列数据。在这样的情况下,每一个粮仓可以分配一条485总线,将温度、湿度、二氧化碳浓度等量的采集设备都挂接到485总线上,然后每个粮仓再通过485总线传输到监控中心,并转换为USB协议传输到PC机,多个粮仓的传输数据在转换为USB协议后可以通过Hub连接到一台PC机上。由于粮仓的各种数据监测实时性要求不是很高,因此采用这种方法可以用一台PC机完成对一个大型粮库的所有监测工作。

篇13

现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在通用的高速数据采集卡一般多是PCI卡或ISA卡,存在以下缺点:安装麻烦、价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。

通用串行总线USB是1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于USB的高速数据采集卡充分利用USB总线的上述优点,有效解决了传统高速数据采集卡的缺陷。

2硬件设计

2.1支持USB2.0高速传输的CY7C68013

CypressSemiconductor公司的EZ-USBFX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(GeneralProgrammableInterface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得设备和主机通过CY7C68013可以无缝的、高速的传输数据。为了实现高速的数据传输,CY7C68013CPU不会直接参与数据的传输,而是直接利用GPIF的自动传输数据模式。图1和图2说明了主机IN和OUT数据传输过程。

2.1.1端点缓冲区

FX2包含3个64字节端点缓冲区和4K可配置成不同方式的缓冲,其中3个64字节的缓冲区为EP0、EP1IN和EP1OUT。EP0作为控制端点用,它是一个双向端点,既可为IN也可为OUT。当需要控制传输数据时,FX2固件读写EP0缓冲区,但是8个SETUP字节数据不会出现在这64字节EP0端点缓冲区中。EP1IN和EP1OUT使用独立的64字节缓冲区,FX2固件可配置这些端点为BULK、INTERRUPT或ISOCHRONOUS传输方式,这两个端点和EP0一样只能被固件访问。这一点与大端点缓冲区EP2、EP4、EP6和EP8不同,这四个端点缓冲区主要用来和片上或片外进行高带宽数据传输而无需固件的参与。EP2、EP4、EP6和EP8是高带宽、大缓冲区。它们可被配置成不同的方式来适应带宽的需求。

2.1.2接口信号

在利用GPIF进行高速数据传输系统设计时,GPIFwaveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。此时CPU的作用已经非常小了,它只起着下载代码到内部RAM以及在固件中如何触发GPIFwaveforms的作用。FX2专门为GPIF提供了接口信号,如8位或16位的数据线、控制信号、Ready信号以及地址线。

IFCLK(双向时钟信号):IFCLK是一个参考时钟,可以配置成输入或输出。当配置为输出时,IFCLK被FX2驱动为30MHz或48MHz;当配置为输入时,时钟范围为5-48MHz。

GPIFADR[8:0](输出):GPIF使用GPIFADR信号为外部设备提供地址线,在总线上地址值是自增的。

FD[15:0](双向):这是USB主机通过FX2和外部设备进行数据传输的数据线,它可配置成8位或16位。当16位时,FD[7:0]代表端点FIFO中的第一个字节,FD[15:8]代表第二个字节。

CTL[5:0](输出):FX2为外部设备提供了几个控制信号,如读写选通、使能等。

RDY[5:0](输入):FX2提供了几个状态检测信号,它可以检测外部设备的状态,如FIFO的空、满、半满等。

GSTATE[2:0](输出):这是调试信号,表示GPIF波形执行的状态,通常连接到逻辑分析仪上。

2.2AD9238

AD9238是一个双通道的12位A/D转换器,采用单3V供电,速度可以是20MSPS、40MSPS和65MSPS;低功耗,工作在20MSPS时,功耗为180mW,40MSPS时,功耗为330mW,65MSPS时,功耗为600mW;具有500MHz3dB带宽的差分输入;片上参考源及SHA;灵活的模拟输入范围:1Vp-p~2Vp-p;适用于:超声波设备,射频通讯,电池电源仪器,低价示波器等。本系统采用20MSPS的AD9238,可充分发挥USB在高速传输模式下的数据传输优势。

2.3数据采集系统

该数据采集系统整个框图如图3所示,该系统由以下几部份组成:USB控制器、FIFO、CPLD、AD9238以及数据采集前端电路。

图3数据采集系统框图

CPLD主要是控制时序,时钟分频等。FIFO主要是起着高速数据缓冲作用,当FIFO半满时,数据开始向USB主机发送。我们采用的是同步FIFO,时钟信号接IFCLK,当FIFO的/RD信号和/OE信号有效时,每个IFCLK上升沿就输出一个数据;当FIFO的/WR信号有效时,IFCLK上升沿就读进一个数据。AD9238的20MHz时钟信号是通过CPLD分频所得。当程序使能AD9238的/OEB_A和/OEB_B信号时,AD9238双通道开始进行数据采集并向FIFO写数据。

系统前端的调理电路采用的是AD公司的AD8138,该放大器具有较宽的模拟带宽(320MHz,-3dB,增益1),而且可以实现将单端输入变成差分输出的功能。此项功能在现代高速模数变换电路中非常有用,因为几乎所有的高速A/D芯片都要求模拟信号为差分输入,虽然部分芯片的手册中提到对于单端输入信号也可使用,但这样一来会使A/D转换结果的二次谐波增大,降低信噪比(SNR)。AD8138很好的解决了这个问题,用户可以很容易的将单端信号转换成差分输出而不必使用变压器,并且它的输入阻抗高达6MΩ,可以直接与输入信号相连而省略隔离放大器,大大精简了电路结构。图4为AD8138的典型应用电路。

图4AD8138典型应用电路

3软件设计

3.1Windows驱动程序设计

USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。

Cypress公司提供了完整的CY7C68013驱动程序源码、控制面板程序及固件的框架,这大大提高了用户开发的进度。用户只需稍加修改或不需任何修改即可使用所带驱动程序,软件开发者大量的时间主要集中在应用程序和固件的开发。本文所述的数据采集系统驱动程序就在原来的基础上进行了简单的修改来满足我们的需要。根据我们自己的需求,一般只需修改DeviceIoControl例程,如我们主要增加了控制数据传输函数、启动和停止AD、复位FIFO等,即IOCTL_START_AD、IOCTL_STOP_AD、IOCTL_RESET_FIFO。

3.2底层固件设计

要实现USB2.0的高带宽数据传输,必须使用它特有的GPIF特性,在开发固件前,首先必须根据实际需要对GPIFwaveform进行编辑。CY7C68013开发工具中带有一个GPIFDesigner,如图5所示,编辑完waveform后,选择Tools->ExporttoGPIF.cFile来输出GPIF.c文件,然后将该文件加入keilc工程进行编译。

由于CY7C68013的EP2、EP4、EP6、EP8四个端点共享4KFIFO缓冲区,所以在该系统中,我们将EP2配置成4K的缓冲区,并设置为IN。用EP1OUT作为AD的控制参数传递,如启动和停止AD数据输出、复位FIFO等。在固件程序中,最重要的就是TD_Init()和TD_Poll()两个函数。

图5GPIFDesigner

在TD_Init()中主要完成GPIF相应寄存器的初始化,如下:

voidTD_Init(void)//Calledonceatstartup

{

//settheCPUclockto48MHz

CPUCS=((CPUCS&~bmCLKSPD)|bmCLKSPD1);

SYNCDELAY;

EP2CFG=0XE8;//EP2IN,bulk,size1024,4xbuffered

SYNCDELAY;

EP4CFG=0x00;//EP4notvalid

SYNCDELAY;

EP6CFG=0x00;//EP6notvalid

SYNCDELAY;

EP8CFG=0x00;//EP8notvalid

SYNCDELAY;

FIFORESET=0x80;//setNAKALLbittoNAKalltransfersfromhost

SYNCDELAY;

FIFORESET=0x02;//resetEP2FIFO

SYNCDELAY;

FIFORESET=0x00;//clearNAKALLbittoresumenormaloperation

SYNCDELAY;

EP2FIFOCFG=0x01;//allowcoretoseezerotoonetransitionofautooutbit

SYNCDELAY;

EP2FIFOCFG=0x11;//autooutmode,disablePKTENDzerolengthsend,wordops

SYNCDELAY;

EP6FIFOCFG=0x09;//autoinmode,disablePKTENDzerolengthsend,wordops

SYNCDELAY;

GpifInit();//initializeGPIFregisters

SYNCDELAY;

EP2GPIFFLGSEL=0x02;//ForEP2IN,GPIFusesFFflag

SYNCDELAY;

//globalflowstateregisterinitializations

FLOWLOGIC=FlowStates[19];//00110110b-LFUNC[1:0]=00(AANDB),//TERMA/B[2:0]=110(FIFOFlag)

SYNCDELAY;

FLOWSTB=FlowStates[23];//00000100b-MSTB[2:0]=100(CTL4),not//usedasstrobe

SYNCDELAY;

GPIFHOLDAMOUNT=FlowStates[26];//holddataforonehalfclock(10ns)assuming//48MHzIFCLK

SYNCDELAY;

FLOWSTBEDGE=FlowStates[24];//movedataonbothedgesofclock

SYNCDELAY;

FLOWSTBHPERIOD=FlowStates[25];//20.83nshalfperiod

SYNCDELAY;

//resettheexternalFIFO

OEA|=0x07;;//turnonPA0、PA1、PA2asoutputpin

IOA|=0x07;//pullPA0、PA1、PA2highinitially

IOA&=0xFB;//bringPA2low

EZUSB_Delay(1);//keepPA2lowfor~1ms,morethanenoughtime

IOA|=0x04;//bringPA2highandexitreset

IOA&=0xFC;//bringPA0、PA1lowandenableAD

}

在TD_Poll()中主要完成外部FIFO状态的检测和数据的传输,主要程序部分如下:

voidTD_Poll(void)

{

if(GPIFTRIG&0x80)//ifGPIFinterfaceIDLE

{

if(EXTFIFONOTEMPTY)//ifexternalFIFOisnotempty

{

if(!(EP24FIFOFLGS&0x01))//ifEP2FIFOisnotfull

{

if(enum_high_speed)

{

SYNCDELAY;

GPIFTCB1=0x02;//setuptransactioncount(1024//bytes/2forwordwide->0x0100)

SYNCDELAY;

GPIFTCB0=0x00;

SYNCDELAY;

}

else

{

SYNCDELAY;

GPIFTCB1=0x00;//setuptransactioncount(64bytes/2

//forwordwide->0x20)

SYNCDELAY;

GPIFTCB0=0x20;

SYNCDELAY;

}

Setup_FLOWSTATE_Read();//setupFLOWSTATEregistersfor

//FIFOReadoperation

SYNCDELAY;

GPIFTRIG=GPIFTRIGRD|GPIF_EP2;//launchGPIFFIFOREAD

//TransactiontoEP2FIFO

SYNCDELAY;

while(!(GPIFTRIG&0x80))//pollGPIFTRIG.7GPIFDonebit

{

;

}

SYNCDELAY;

}

}

}