虚拟仪器在仪器领域的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
虚拟仪器在仪器领域的应用
虚拟仪器是虚拟现实技术在仪器领域的应用。虚拟仪器技术是由于计算机、测量和电子技术的高度发展而孕育出的一项革命性新技术。虚拟仪器的硬件、软件都具有开发性、模块化、可重复使用及互换性等特点。因此,虚拟仪器使得用户能够根据自己的需要定义、灵活组合仪器功能,大大提高了使用效率,克服了传统仪器的缺点,系统功能、规模可通过修改软件来增减,价格、开发、维护费用低,技术更新周期短。在现有的虚拟仪器产品中,比较有名的是美国国家仪器公司的LabVIEW系统,但它的技术是不公开的。用微机来实现上述等仪器的功能有着良好的性能价格比,这也是以微机为核心的智能仪器成为当今的发展方向。本文主要提出虚拟仪器中,功能模块及功能模块组合构成的虚拟仪器的数据结构设计,以及仪器运行时的搜索算法设计。
1数据结构设计开发的虚拟仪器主要完成:时域分析、频域分析、幅域分析、数据存储和数据再现。具有25个功能模块来完成上述5大类处理功能,它们是:数据采集、信号发生器、四则运算、数据存储、数据再现、正/逆傅立叶变换、功率谱、倍频程分析、直方图、自相关、示波器、XY记录仪等。
每一功能模块用图标表示,如所示,所有的功能模块都放在模块库中,用户可以将需要的功能模块从模块库中拖出并连接好、组成虚拟仪器,这些功能模块具有可重复使用及互换性等特点。表示的是:用户想用这些功能模块来连接成虚拟仪器完成一组实验,但还未将这些功能模块连接起来。是连接好的功能模块,该虚拟仪器要完成的处理是:数据采集功能模块采集的信号(方波)显示在示波器1上,信号发生器产生的正弦波在示波器2上显示;数据采集功能模块采集的方波与信号发生器产生的正弦波经过叠加显示在示波器3上,叠加的信号经过快速傅立叶变换、功率谱分析,在XY记录仪上显示功率谱。
为了在计算机中实现以上的功能,需要把、的这些功能模块的数据结构要表达出来,也就是表达功能模块以及功能模块之间的数据和数据关系,然后,搜索该数据结构并执行每一功能模块的功能。因此,要表达、数据的逻辑结构。以为例,从该连接好的虚拟仪器看出,每一功能模块由Out输出数据;由In接收数据,而且,一个功能模块节点可以接受多个其他功能模块的输入,显然,这样的
数据关系表达的逻辑结构是有向图。
未连接好的功能模块连接好的功能模块组成虚拟仪器所以,用、中的邻接链表来分别表达、中有向图的存储结构(未完全表达细节)。、中垂直方向的链表分别代表、中的功能模块节点;水平方向的链表表示该功能模块节点的数据输出到那几个功能模块节点。如因功能模块间未连接,所以无出度链表,又如数据采集功能模块的数据分别输出到示波器1、四则运算功能模块。对于每一功能模块有那些输入,可以通过遍历出度链表来求得。当然,也可以用邻接多重链表来表达、中有向图的存储结构,从而使得有向图中每一节点的出度、入度都能直接表达出来。
2.搜索算法中虚拟仪器的逻辑结构是有向图,但该虚拟仪器在处理数据时是有顺序要求的,即:如功能模块A/D、信号发生器不需要等待其它功能模块的输出数据作为输入数据,就可以独立地执行自己的功能(A/D转换,信号发生)。然后,将产生的数据输出到功能模块示波器1、四则运算、示波器2,也就是说,如功能模块四则运算要都接收到功能模块数据采集、信号发生器的输出数据后,才能执行自己的功能(进行两路信号的叠加),其它功能模块也一样。
搜索算法框图实际上,中虚拟仪器对应的有向图可以看作按一定顺序完成的工程,有向图的每一顶点是活动,每一有向边是活动的先后关系,只有等有向图中所有的活动都完成了,那么,该工程才完成,称这样的有向图为顶点活动网络。虚拟仪器可以有由多个这样的有向图或工程组成,从而可同时进行多组实验,完成多组物理仪器所完成的功能,体现了功能模块的可重复使用性。
搜索算法就是要对每一帧数据从AOV网络没有前驱的功能模块开始执行活动,然后,按有向边顺序执行一个AOV网络中的所有活动(一次拓扑排序),接着处理下一帧数据。只要仪器还运行就周而复始地一帧一帧地处理数据。这就是搜索算法的核心思想。具体就来说,从没有前驱的功能模块A/D、信号发生器开始处理数据(开始搜索),设输出数据分别为Da、Dt,然后使等待数据Da、Dt 功能模块(示波器1、四则运算、示波器2)节点的入度减1(开始分别为1、2、1),表示有一路数据已到,待到功能模块示波器1、四则运算、示波器2节点的入度已减到0,说明所有要等待的数据都已到,就可以执行这些功能模块并产生数据(若有输出)。这些功能模块的功能是通过C语言来实现的。具体算法如下:
因为算法的一次执行只对所有的顶点和边搜索一遍,所以算法的时间复杂度是O (n e),其中,n为虚拟仪器对应有向图(有向图可能不连通)的顶点数,e为虚拟仪器对应有向图的边数。实际上仪器运行时的搜索算法也可用递归的算法实现,起先,是用递归的算法实现的(在本文不介绍)。尽管递归的算法表达简练,但效率没有本文的算法高。此外,由于入度为零的功能模块可以并行执行,所以,可以采用多线程的方法,采用多线程的方法在多中央CPU并行系统中执行速度才有较大的提高,在单中央CPU系统中执行速度还是同本文算法的时间复杂度是一个数量级的。
是虚拟仪器执行一帧数据后的结果,其中,信号发生器产生正弦信号的频率是1KHz,数据采集功能模块采集信号的频率是200Hz.右下角的方框代表XY记录仪,其上显示的是频率1kHz正弦信号与频率是200Hz方波叠加后的信号的功率谱,另外3个方框是示波器1,示波器2,示波器3.
示波器1上显示的是频率1kHz正弦信号;示波器2上显示的是数据采集功能模块采集的方波信号,频率是200Hz;示波器3上显示的是频率1kHz正弦信号与频率是200Hz方波叠加后的信号。当连续运行时,的画面是动态的连续的一帧帧波形、功率谱的显示。
结束语本文提出基于图论的实现虚拟仪器环境的数据结构和算法,该虚拟仪器已经实现,它是可视化、图形化和模块化的。本文提出的算法与基于数据流和多线程思想实现虚拟仪器环境本质上是一样的。