资源预览内容
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件总线和芯片结构的可重构虚拟仪器的制作方法专利名称:软件总线和芯片结构的可重构虚拟仪器的制作方法技术领域:本发明涉及计算机应用技术领域,特别涉及采用软件总线的开放结构和COM组件的即插即用特性来设计的具有计算机硬件模块化组装特点,面向用户的可在线编程,调试和重构的计算机虚拟仪器。背景技术: 所谓虚拟仪器就是利用普通计算机,加上特殊设计的仪器硬件(板卡)和专用软件,形成具有仪器功能的计算机。虚拟仪器利用PC机强大的图形功能建立虚拟仪器面板,完成对仪器的控制,数据分析与显示。虚拟仪器功能由软件定义,一台计算机和一套板卡可构成多种仪器,一台计算机就是一个小型实验室。用计算机虚拟仪器来代替传统仪器是目前工业测控领域和仪器仪表领域的一个重要发展方向。虚拟仪器由应用软件和仪器板卡两部分构成,软件是系统的核心。目前,流行的虚拟仪器开发软件是美国国家仪器公司的LabVIEW和美国Agilent公司的Agilent VEE,另外也可采用Visual C+、VisualBasic等通用计算机语言开发。LabVIEW、Agilent VEE等虚拟仪器开发平台实现了图形化编程,开发人员可直接将旋钮、滑动控制条、表头等虚拟仪器控件拖动到屏幕上进行组装和设计,其虚拟仪器开发过程包括可视化布局,代码书写和编译链接等几个步骤。但是这些开发平台设计出的虚拟仪器有一个共同的缺点,就是设计完成后的虚拟仪器的功能在使用阶段是不能变更的。对虚拟仪器设计和生产者来说,开发时往往考虑一个群体的需要,从通用和统一的角度来思考问题和设计虚拟仪器功能,但对一个特定的用户或一项特定的工业测试任务或实验来说,这种功能安排就可能显得极不合理,仪器使用起来较繁琐。现行虚拟仪器开发平台所设计出的虚拟仪器功能固定,脱离开发平台后用户无法自行调整、定制,给用户造成许多不便。发明内容针对以上情况,本发明目提出一种以PC机和仪器板卡为硬件平台,采用软件总线和软件芯片技术构成的采用装配方式进行虚拟仪器应用程序设计的可重构虚拟仪器;它具有总线式装配结构和软硬件模块组件化的特点;用户无需具备高深的计算机软硬件知识,就可根据测量任务需要,在配置的虚拟仪器硬件板卡、软件主板和软件芯片的基础上、自己动手组装虚拟仪器和搭建个性化的工业测量系统。本发明采用的技术解决方案是利用COM组件支持二进制代码模块直接引用的特点,将虚拟仪器中采用的计算机板卡驱动模块、软仪表盘、软信号发生器和软信号处理电路等设计为可以热插接的软件芯片(COM组件);将虚拟仪器主体程序设计为带软件芯片插接口的软件主板(COM容器),实现用装配的方式来开发虚拟仪器应用程序。为解决插接的软件芯片间的数据交换和协同工作问题,在虚拟仪器主体程序中分配若干全局内存块仿真计算机硬件中的数据线,实现总线方式的数据传输和共享;利用操作系统的消息发送机制,在虚拟仪器主体程序和软件芯片中设计消息收发模块,仿真计算机硬件中的控制线,实现软件芯片模块的选通和工作。为解决并联型总线结构上无序插接的软件芯片的有序工作问题,设计数据流驱动的软件总线控制器,总线控制器根据数据线和控制线上数据的变化来顺序控制插接在软件总线上的软件芯片工作,完成串行的虚拟仪器工作。虚拟仪器软件芯片插接在软件总线上,每个软件芯片都是一个独立的工作单元,通过软件总线获取和发送的数据,软件芯片彼此间不直接联系。软件芯片插接在软件总线上就能工作,拔除也不会直接影响其它软件芯片工作。按虚拟仪器功能和工业测控需求将所需的软件芯片插接在软件总线上,并通过数据焊接的方式进行芯片初始化和连线,在软件总线控制器的管理下就可以快速实现一个满足特定需求的虚拟仪器。软件总线和芯片结构的可重构虚拟仪器包括a、一组由若干个用于交换软件芯片分析数据的全局内存块组成的软件总线数据线;b、一条用操作系统消息发送机制实现的软件总线控制线;c、一个由数据驱动的软件总线控制器,负责监听数据线上数据的变化,并通过控制线驱动其他与数据变化源有关的软件芯片工作。d、由信号采集卡驱动模块、信号处理模块和信号显示模块等组成的COM组件格式和统一接口形式(内部属性参数读写接口、外部软件总线数据线读写接口)的虚拟仪器软件芯片集;e、含软件总线数据线、控制线和总线控制器的COM容器格式的虚拟仪器主体程序(软件主办),其内部COM组件接口被改造为虚拟仪器软件总线适配器,能够热插拔统一接口形式的虚拟仪器软件芯片。f、用于定义虚拟仪器功能的软件芯片数据焊接脚本文件,虚拟仪器主体程序可按脚本文件数据对软件芯片进行插接、设置和连线,将软件芯片焊接在软件总线上,完成虚拟仪器的构造。更换不同的虚拟仪器脚本就可以生成不同的虚拟仪器。本发明技术优点在于1.采用COM容器结构的软件总线和COM组件结构的软件芯片,产品具有用装配方式来进行虚拟仪器系统开发的特点。2.具有COM支持二进制代码直接引用的特点,虚拟仪器应用程序重构过程中无需编译、链接和开发环境支持,运行环境和开发环境一体化。3.支持虚拟仪器软件芯片的即插即用和热插拔,可实现虚拟仪器功能的在线调整和重构。4.用数据焊接方式实现虚拟仪器构造,更换不同的虚拟仪器脚本就可以生成不同的虚拟仪器。可实现按生产任务对现场虚拟仪器测量系统功能调整。5.按制造业装配方式来进行虚拟仪器系统设计,变复杂的程序设计过程为软件芯片的装配过程。降低了难度,可实现用户(而不是设计者)对仪器功能的重构,降低仪器的使用和升级成本。6.适应现代制造业复杂多变的测量需求和对测量系统的重构要求,可进异步提高虚拟仪器系统的现场灵活性和适应性。图1可重构虚拟仪器软件总线基本结构图;图2软件芯片的插接与连线过程;图3基于Windows消息的片选工作机制;图4轴承故障检测仪数据流程图;图5软件总线结构的轴承故障检测虚拟仪器;图6传统虚拟仪器组件模型和虚拟仪器软件芯片模型;图7带初始化和连线能力的虚拟仪器软件芯片模型;图8有效值计算芯片和仪器表头芯片样例图;图9基于数据焊接脚本的可重构虚拟仪器框图;图10数据焊接脚本文件样例;图11脚本语言解释器复用模型;图12频谱分析仪软件接线图和数据流向图。具体实施方法下面结合附图及具体实施实例对本发明再作进一步详细的说明。图1是可重构虚拟仪器系统软件总线模型图,它由软件总线、总线控制器和总线适配器组成。各虚拟仪器软件芯片通过总线适配器与软件总线相连。软件总线为若干个用于交换分析数据的全局内存块组成;总线控制器为一段连续运行的程序体,它负责监测各内存块数据是否有变化,当数据变化时通过总线中的片选信号线驱动相关的软件芯片工作;总线适配器为一个增强了连线功能的COM组件插接接口,它通过软件芯片的初始化数据在插接时对实现软件芯片和软件总线进行数据焊接,将它们连接在一起。软件总线结构的可重构虚拟仪器系统的主体是一个ActiveX控件容器程序,ActiveX控件是增加了OLE接口的COM对象。创建ActiveX控件容器程序的工具很多,有Visual C+、Visual Basic和Delphi等。使用Visual C+可以获得更快的执行速度和对程序创建过程更多的控制,用Visual C+创建容器程序时可用MFCAPPWizard来生成软件总线容器程序框架,注意应选择支持ActiveXControl(支持COM组件)、支持Automation(支持脚本语言)、支Windows Socket(支持网络)。为实现软件芯片模块与软件总线程序间的数据交换和命令传输,在容器程序中定义256个Double型全局变量仿真计算机硬件中的数据线,实现单变量数据的交换;用256个Double型指针变量仿真计算机硬件中的内存条,用于存储波形数组、频谱等大数据量的公共数据,实现数组变量的交换(数据线的宽度不限于256,可根据需要扩展)。为减小对系统资源的占用,各指针变量对应的初始数组大小为零,使用时根据需要插接软件内存条芯片,软件内存条芯片的功能就是用Malloc函数重新分配数组大小和内存空间。一个Double型指针变量就相当于主机板上提供的一个内存条插座一样,用户可根据需要插接8M、16M等不同大小的软件内存条。在Visual C+工程文件中定义并包含一个除Create外无任何其他属性和方法的基本ActiveX Control类CAdaptor作为软件芯片插座(软件总线适配器)。CAdaptor作为一个不含任何方法和属性的空类型软件芯片(父类芯片),任何被插接的ActiveX Control都可以作为空类型芯片的子芯片统一按CAdaptor芯片对待,并用CreateControl函数在容器程序中动态插接和安装到软件芯片插座(总线适配器)上,并可以用Delete函数在线删除,从而实现软件芯片的动态插/拔。CWnd(Windows窗口基类)CAdaptor(软件总线适配器类)-Create(构造方法)由于各类软件芯片都做为CAdaptor软件总线适配器类的软件芯片来插接,对容器程序来说各软件芯片的功能和属性被屏蔽。因此,这一步仅相当于芯片上电。软件总线容器程序和软件芯片模块通过全局变量型的数据总线交换数据,共用某一全局变量的芯片就相当于连接在一条可以双向通讯的数据线上。由于容器程序和各软件芯片分别位于不同的二进制代码模块内,容器程序中的全局变量对软件芯片模块是不可见的,作为软件总线适配器功能的一部分,容器程序中提供四个以动态链接库函数形式对外开放的数据线操作接口函数extern Cvoid PASCAL EXPORT setDataLine(int n,double v);externCdouble PASCAL EXPORT getDataLine(int n);externCvoid PASCAL EXPORT setArray(int m,double*data);externCdouble*PASCAL EXPORT getArray(int m);函数setDataLine(n,v)用于将数据线n的值设为v,函数getDataLine(n)用于读取数据线n的值,函数setArray(m,data)用于将数组型数据线m的值设为数组data的内容,函数getArray(m)用于返回数组型数据线所对应的数组的数组指针,通过该指针可读取数组内容。软件芯片用Declare方式获取这四个函数就可以通过它们对数据线进行读/写操作,实现与软件总线的连接。因此,可以我们用CAdaptor软件总线适配器类在虚拟仪器主体程序中提供软件芯片插座,实现软件芯片的在容器程序中的插接;用setDataLine、getDataLine、setArray、getArray(m)函数提供软件总线接口,实现软件芯片与软件总线的连接,如图2所示。软件总线控制器是在虚拟仪器主体程序中设置的一个Windows消息处理模块,它利用Windows消息来监测各数据线上的数据变化。其工作原理是在用于连接软件芯片和软件总线的setDataLine和setArray函数中加入Windows消息发送功能,当软件芯片用setDataLine或setArray函数改变数据线上的值时就会向容器程序发送一条某数据线的值已改变的消息;然后总线控制器再以Windows消息的方式通知连接在该数据线上的软件芯片,选通其工作。各软件芯片与软件总线的连接关系通过在插接软件芯片时用Windows消息的方式向容器程序注册来解决,方法是在软件芯片的Create方法中加入Windows消息发送功能,当芯片插接完成后发送含芯片编号和所连接的数据线号的消息。总线控制器接收和处理消息,并在内存中建立一个软件芯片和软件总线的连接关系表。软件芯片中也有一个负责处理Windows消息的控制器,当收到容器程序的工作指令时就驱动其工作部分工作。它与虚拟仪器主体程序中的软件总线控制器、以及Windows消息机制一起构成一个支持片选的软件总线系统,如图3所示。无论是硬件总
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号