前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇数据采集论文范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
基于表层化方式的DeepWeb数据采集方法将DeepWeb数据采集问题建模为一个优化问题:已知一个DeepWeb数据库DB,对DB的采集可以表示为寻找一个查询集合Q={q1,q2,...,qn},在给定的约束条件C满足的条件下,查询集合Q从DB获取的DeepWeb数据最多,即查询集合Q对DeepWeb数据库资源的覆盖率达到最大。其中,C表示许向Web数据库提交查询请求的次数。基于表层化方式的DeepWeb数据采集问题的目标就是针对一个给定的DeepWeb数据库,寻找一组查询集合,使用该查询集合能够对DeepWeb数据库资源的覆盖率达到最大。基于表层化的方法的主要思想是通过向DeepWeb数据的查询接口提交查询把数据从Web数据库中挖掘出来。这方法能够充分利用搜索引擎爬虫,将DeepWeb数据的采集转换为SurfaceWeb数据采集的方式,不需要做很大的改变就可以无缝的将DeepWeb数据集成到现有的搜索引擎中。基于表层化方式的DeepWeb数据采集方法的关键是为查询接口生成合适的查询,其目标是为DeepWeb数据的查询接口生成有效的查询实例,构造表单查询,以便将Web数据库中的内容发现出来。一个查询接口可能包含多个输入项,如果每个输入项有100个有效的取值,那么对于一个有3个输入项的查询接口,组合生成的查询数量是1,000,000。因此,在迚行DeepWeb数据采集时,为每个查询接口生成所有可能的查询是不实际的。而且,对于查询接口中的一些文本输入项,其对应的有效的取值进不止100个,如图书查询接口的书名,作者等。基于表层化方法的DeepWeb数据采集的目标是以最小的查询数量达到最大的DeepWeb数据覆盖率。因此,如何为查询接口生成有效的查询是实现DeepWeb数据覆盖率最大化的重要环节。目前,针对这一问题的研究主要有基于词频的方法[11],基于集合覆盖的方法[12,13],基于强化学习(ReinforcementLearning,RL)的方法[14-16],面向领域的方法(HiWE[17]、DeepBot[18,19]),基于属性值图的方法[20],基于查询模板的方法[21],基于本体的方法[22-24]等。通过对查询接口的分析发现,查询接口根据输入项素的个数可分为:简单查询接口(SimpleQueryInterface)和复杂查询接口(ComplexQueryInterface)。简单查询接口包含一个输入项,即为简单的关键字查询接口,使用方式与搜索引擎接口一样;复杂查询接口则包含两个或多个输入项。因此,本文根据查询构造方法支持的接口类型将已有工作分为两类:简单查询接口查询构造方法,复杂查询接口查询构造方法。
1.1简单查询接口查询构造方法简单查询接口只有一个输入项,因此,对简单查询接口迚行查询构造时并不需要考虑表单输入项乊间的关系,只需要为该输入项生成候选查询关键字集合。基于词频的方法[11],基于集合覆盖的方法[12,13],基于强化学习(ReinforcementLearning,RL)的方法[14-16]属于此类的研究。基于词频的方法[11]基于一个假设:在实际数据库或文档集合中的高频词比随机选择的词具有更高的资源覆盖能力,而且高频词作为查询能够获取更多的查询结果。因此,该方法对简单搜索接口所在页面和查询返回的结果迚行抽样,然后在每一轮查询结果中选择高频词构造查询迚行资源采集。但是该方法有个明显的不足:在每次查询时,高频词无法确保获取更多的新页面。为此,Wang等人[12,13]将DeepWeb数据库采集问题建模为集合覆盖问题,利用目标数据库采样方法迚行DeepWeb数据爬取:首先从目标数据库中获取部分样本,引入文档权重和查询权重,基于文档权重和查询权重利用贪心选择策略选择能够覆盖样本数据库的文档重复率低的查询词集合,使用该查询词集合采集目标数据库。该方法将原始数据库的查询选择转换为对样本数据库的查询选择问题。但是该方法无法保证样本数据与目标数据库是同分布的,因此覆盖样本数据库的查询词集合可能不适用于整个目标数据库。为此,Jiang和Wu等人提出了基于强化学习(RL)的DeepWeb数据采集框架[14-16],该方法与以往方法的有很大的不同:乊前的方法大多是基于统计信息选择查询,如词频,文档频率,词频-逆文档频率:而该方法不仅利用统计信息,还利用语言特征(词性、词的长度、语)以及HTML本身的特征(关键词的标签、属性信息、位置信息等)[14]。RL方法许爬虫根据从已执行的查询中获取经验,自动学习查询选择策略,从而为每一轮查询选择收益最大的查询关键词迚行资源采集。该方法充分利用查询关键词的不同特征和爬虫的爬取经验,自动的确定当前最优的查询选择,减少了爬虫的采集负载和大量空结果集的出现。但是该方法学习过程相对复杂,并且仅能应用于GET提交方法的表单,无法应用于POST类型的提交表单。
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研究展望
关键词:USBLabVIEW数据采集
通用串行总线USB(UniversalSerialBus)作为一种新型的数据通信接口在越来越广阔的领域得到应用。而基于USB接口的数据采集卡与传统的PCI卡及ISA卡相比具有即插即用、热插拔、传输速度快、通用性强、易扩展和性价比高等优点。
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);
开启设备和获取采集数据的过程如图2所示。它的主要功能有:开启或关闭USB设备、检测USB设备、设置USB数据传输管道(pipe)和端点(endpoint)、实时从USB接口采集数据、显示并分析数据。
基于通用信号处理开发板,利用FPGA技术控制AD9233芯片对目标模拟信号采样,再将采样量化后的数据写入USB接口芯片CY7C68013的FIFO中,FIFO写满后采用自动触发工作方式将数据传输到PC机。利用VC++6.0软件编写上位机实现友好的人机交互界面,将传输到PC机上的数据进行储存和实时回放。本系统主要实现以下两大功能:1)ADC模块对目标模拟信号进行采样,利用FPGA技术将采样后的数据传输到USB接口芯片CY7C68013的FIFO中存储。2)运用USB2.0总线数据传输技术,将雷达回波信号数据传输到PC机实时回放。分为应用层、内核层和物理层3部分。应用层和内核层主要由软件实现。应用层采用VC++6.0开发用户界面程序,为用户提供可视化操作界面。内核层基于DriverWorks和DDK开发系统驱动程序,主要起应用软件与硬件之间的桥梁作用,把客户端的控制命令或数据流传到硬件中,同时把硬件传输过来的数据进行缓存。物理层主要以FPGA为核心,对USB接口芯片CY7C68013进行控制,通过USB2.0总线实现对中频信号采集。系统设计采用自底向上的方法,从硬件设计开始逐步到最终的应用软件的设计。
2硬件设计
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芯片转换后变为模拟信号输出,并将此输出信号接至示波器以便验证系统。数据采集与回放系统的实物图及系统实测波形与回放波形。
5结束语
1.1TCD1208AP驱动电路TCD1208AP是一种二相双沟道线阵CCD图像传感器芯片,其驱动信号如图2所示。四路驱动信号分别为:转移脉冲SH,复位脉冲RS,时钟脉冲Φ1、Φ2。SH为高电平时信号电荷转移到CCD模拟移位寄存器,SH跳变为低电平后在时钟脉冲Φ1、Φ2交变作用下OS逐个按位输出像元电压信号,随后发出RS脉冲去掉信号输出缓冲器中的残余电荷为下一像元电压输出做准备。根据传感器结构安排,TCD1208AP在一个采样周期中首先输出40个哑元信号,之后输出2160个有效像元输出,其后又输出12个哑元信号后一个输出周期结束,因此一个采样周期中至少包含2212次时钟信号交变和2212个复位脉冲RS。CCD传感器对驱动信号的频率有严格要求[2],其时钟特性如表1所示。STM32驱动信号产生方法有两种:a.设定通用定时器产生;b.直接设置IO口模拟。第一种方法计时准确,通过设置相应定时器的预分频寄存器精度可达0.05μs,但通用定时器同步困难,需要使用中断来实现,操作困难且由于CCD交变时钟信号工作频率高而难以保证准确同步[3]。系统采用库函数直接设置CPU寄存器控制IO口的方法输出驱动信号,通过设置锁相环PLL,STM32的指令执行速度高达72MHz,克服了以往单片机直接驱动频率低的问题。IO跳变时间只有28ns,采用CPU空指令_nop()延时,精度为13ns,完成一个采样周期最快只需5ms左右,通过库函数设置相应GPIO口的GPIOx_BSRR寄存器实现相应端口同时输出高或低电平可以确保各端口满足驱动信号同步性要求。通过分析TCD1208AP驱动信号时序图可以看出除去SH中断位在一个Φ1或Φ2周期内可以将信号分为6种状态[4],如图3所示,Φ1、Φ2相位相反,周期为2倍的RS。因此可以采用循环状态分割法让STM32周期性的输出大于1106(2212/2)个Φ1周期内的这6种状态即可完成一次采样。根据图3可以列出各状态的时序变化值,如表2所示。通过调整每种状态的延时时间进而得到复合CCD传感器驱动信号频率要求的信号,在实际测量中,延时函数的输入参数可以随时调整,以取得最佳采样结果。STM32的引脚输出高电平为3.3V,输出信号经由74LS04P芯片组成的电平转换电路放大到5V后接入CCD传感器相应引脚,以满足传感器对驱动信号电平的要求。调整延时函数的输入参数,在示波器上可以得到输出驱动信号的时序图如图4所示。
1.2传感器输出电压处理电路CCD正常工作时有两路输出信号:输出信号OS和补偿信号DOS,但该信号有效信号幅值小,且存在周期性的复位脉冲串扰。系统采用差分运算方式处理输出信号,差分运算放大器选用AD公司的AD8031芯片,它是一款低功耗、高速的单电源电压反馈性放大器,小信号带宽为80MHz,压摆率为30V/μs,建立时间为125ns。采用+5V电源时,对于2V峰值、1MHz输出信号的总谐波失真(THD)为-62dBc,完全可以满足系统需要。将CCD的输出信号OS和补偿输出信号DOS分别接到芯片的+IN引脚和-IN引脚可以有效去除OS中含有的复位噪声。由于AD8031差分运算放大器的最小放大倍数为1,CCD传感器的最高模拟电压输出为5V,而STM32芯片内集成A/D转换器的外接参考电压VREF+为3.3V,因此需要对经过差分处理的模拟信号进行降压处理以满足A/D转换器的量程要求。输出电压信号处理电路如图5所示,图中R1=R2=R3=R4=10kΩ,R6=2R5=20kΩ。[5]线阵CCD传感器输出信号频率高,因此需要AD传感器有较高的转换速率,系统将时钟ADCCLK配置为9MHz,同时把所用ADC1通道11配置为7.5个采样周期,根据STM32的ADC采样时间计算公式:TCONV采样周期+12.5个周期[6]得系统所用ADC1转换通道的转换时间为:TCONV=(55.5+7.5)×1÷9=7μs,完全满足线阵CCD传感器对转换速率的要求。同时将ADC1设置为自动DMA传输模式,每次转换完成后会自动开启DMA传输功能将所得数据采用硬件方式转移到STM32内存预设位置的数据存储数组中,这个过程不需要CPU的参与,不影响CPU产生驱动信号。ADC1采用软件启动模式,编程时在时序状态变化表的特定时刻插入ADC_SoftwareStartConvCmd()库函数启动ADC转换。
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所示。
3结语
关键词:数据采集PCI总线焊缝缺陷VXD
焊缝缺陷自动超声检测系统是一种重要的无损探伤设备,可用于检测平板、管道、容器等的纵、横焊缝以及接管角焊缝缺陷。与手工检测方法相比,该系统具有运行平稳、漏检率低、显示直观等优点。
在焊缝缺陷自动超声检测系统中,缺陷回波信号通常为宽度约10ns~100ns、幅值在几十μV到几十mV之间的窄脉冲。为满足缺陷回波信号的检测要求,研制了一种基于PCI总线的高速数据采集卡,它是面向超声检测应用而设计的:该卡采用转换速率为60MHz的八位高速A/D以满足数据采集的要求;为缓存A/D芯片输出的高速数据并充分利用PCI总线带宽,加入32KB的高速FIFO缓存组;同时,为满足多通道探伤的要求,设计了通道选择电路以实现通道之间的切换;此外,为调理缺陷回波信号,卡上还配有高增益高带宽放大电路。
1高速数据采集卡的工作原理
焊缝缺陷自动超声检测系统的信号采集框图如图1所示。系统的工作原理是:首先由高压脉冲发生电路发射高压脉冲;高压脉冲经换能器形成超声波信号,遇到缺陷或杂质时产生反射波,经换能器转换为电压信号,该信号经放大调理、A/D转换后,形成数字量,写入高速FIFO存储器中。最后,由PCI接口芯片将FIFO中的数据适时地写入内存。
2数据采集电路的硬件设计
2.1高增益高带宽放大电路
采用带触发的直流逆变电路产生高压脉冲,采用多路模拟通道选择电路实现通道切换以满足多通道探伤要求。模拟信号经五级放大、滤波后,作为A/D转换电路的输入。放大电路采用最高增益为80dB、带宽为15MHz且分辨率为1dB的放大器,并且采用数字电位器实现放大增益的动态调整。
2.2A/D转换电路
A/D转换电路采用美国BB公司的ADS830。该芯片的信噪比高、功耗低、非线性畸变小,广泛应用于图像处理、数字通信和视频测试系统中。ADS830的精度为八位,最高采样频率为60MHz,可满足焊缝缺陷自动超声检测系统对数据采集精度和采样频率的要求。它有共模和差模两种信号输入方式,且输出的数字量可直接与5V或3.3V芯片接口。
2.3高速FIFO存储器
高速缓存是保证高速数据不丢失的关键,确保了数据的真实性。同时,高速FIFO缓存使A/D芯片不必工作在PCI同步时钟下,提高了A/D芯片的利用率。IDT公司的存储器性能优良,且同系列存储器一般可以做到管脚级兼容,容易实现硬件设计的模块化。为方便读写数据,选择先进先出式(FIFO)的缓冲存储器IDT7205L15。其访问时间为15ns,每片容量为8K×9位。支持异步读写,并提供诸如满、半满、空等用于位扩展和深度扩展的信号。高速数据采集卡为实现8位A/D和32位PCI总线的宽度匹配,采用了位扩展技术。为加深FIFO的缓冲深度,将外加FIFO缓存与PCI接口芯片内部的FIFO相级连。
2.4基于CPLD的控制逻辑
基于CPLD的控制逻辑是高速数据采集卡的核心,它为PCI接口芯片提供满足时序要求的读写信号,同时选择模拟信号的输入通道、控制高压脉冲发生逻辑并设定放大电路的增益。此外,CPLD还能利用高速FIFO缓存的空、满标志位,配合PCI接口芯片实现DMA写操作,完成高速数据传输。Xilinx公司的XC9572XL-VQ64芯片的脚到脚延迟最大为10ns,可满足PCI总线接口时序的要求。单片XC9572XL-VQ64能满足焊缝缺陷自动超声检测系统逻辑控制的要求,且具有体积小、可靠性高、调试方便等突出优点。
图2是基于有限状态机FSM(FiniteStateMachine)方法设计的控制逻辑状态转换图。其中,RST和IRQ是由PCI接口芯片S5933输出的可由程序任意控制的两个信号,它们的高低状态同高速FIFO缓存的空、满信号一起决定了控制逻辑的六个可能的状态,图中以椭圆表示。计算机上电时,控制逻辑处于RST=IRQ=1的状态。值得一提的是,RST和IRQ信号都有适当的上拉电阻,所以不会出现高阻浮空的状态,使控制逻辑能够稳定地工作。实线是控制逻辑采用的状态转移路线,而虚线是可能的但不采用的状态转移路线。在各状态之间进行切换是很容易的,只需通过程序使RST或IRQ信号出现高或低跳变。状态转移时伴随着的电路动作见转换线旁的注释。
2.5PCI接口芯片
PCI总线协议2.1版出现以后,集成芯片商们纷纷推出了与其兼容的总线接口芯片。其中,AMCC(AppliedMicroCircuitCorperation)公司的S5933接口方便、控制灵活,软件配置简单,在高速网络接口、数字通信、高速成像等领域有着广泛应用2。S5933最突出的优点是能够作为PCI主控设备发起DMA操作,即S5933完全具备双字DMA控制器的功能。
图3是结合系统应用而绘制的S5933结构框图。由图3可知,S5933内部具有配置寄存器组和操作寄存器组,配置寄存器组用于控制S5933在PCI总线系统中的运作方式(访问延迟、能否发起主控DMA操作等)以及记录系统分配给S5933的资源信息(如中断引脚、I/O等)3,而PCI总线和外加电路之间的数据交换则通过操作寄存器组实现。以I/O资源为例,计算机上电后,系统将分配给S5933的I/O资源首地址填入基地址寄存器,此值决定了操作寄存器组在I/O空间中的映射位置(S5933的操作寄存器组缺省地映射到I/O地址空间,便于软件操作),见图3。之后,CPU只需执行简单的I/O操作就可以读写操作寄存器组,隐含的地址译码工作由S5933完成。外加电路控制逻辑则保证操作寄存器组与外加电路的正常通信。S5933提供了三种形式的外加电路接口,高速数据采集卡使用信箱(Mailbox)寄存器实现双字输出,用FIFO方式实现高速DMA写操作。
图3S5933的结构框图
3高速数据采集卡的软件设计
3.1虚拟设备驱动程序的设计
系统的控制软件工作在WINDOWS98操作系统下,为此开发了高速数据采集卡的虚拟设备驱动程序(VXD)。由S5933的结构可知,VXD需要实现双字I/O操作和物理内存管理。双字I/O的操作相对简单,调用虚拟机管理器(VMM)的SIMULATE_VM_IO例程即可,较困难的是物理内存管理。由于S5933发起的DMA操作需要物理内存的起始地址,因此必须涉及页面级的物理内存操作,故采用下述内存管理策略:
·应用程序加载VXD;
·加载成功后发送申请缓冲区的事件给VXD;
·VXD使用PAGEALLOCATE例程得到地址连续的适当长度(如四页即16K字节)的物理内存;
·锁定缓冲区并将物理地址逆映射为线性地址;
·将物理首地址填入S5933的写RAM地址寄存器;
·允许S5933进行主控DMA传输;
·传输完毕时,应用程序请求VXD释放上述物理内存。
3.2应用VXD设计数据采集程序
将VXD放在应用程序的同级目录下,则以下VC++代码就能动态加载(VXDVIEWER可验证)一个VXD:
HANDLEhDEVICE=CreateFile“\\\\.\\pathname”00NULL0FILE_FLAG_DELETE_ON_CLOSENULL;
编好的VXD为应用程序提供了若干服务例程,应用程序执行下面的代码即可调用服务例程ZHC1:
DeviceIoControlHDEVICEZHC1lpinbufferninsizelpoutbuffernoutsizeNULLNULL;
数据采集算法如下:
DO{读取写RAM字节计数器;
再次读取写RAM字节计数器;
IF计数器内容为零THEN
跳出循环进行后续数据处理;
ELSEIF两次读取的结果不同THEN
不做任何处理而进入下一次循环;
ELSE
清相应的状态标志并设置有关寄存器以从断点处续传;
ENDIF
}