2.13k likes | 2.27k Views
图形化虚拟仪器开发平台 LabScene. 虚拟仪器开发平台讲义. 讲义内容. 虚拟仪器开发平台背景 图形编程及 G 语言 G 语言结构模型及运行分析 G 语言节点及编辑模型 扩展模型及分布式构架 LabScene 平台设计及实现 LabScene 中的 G 语言 LabScene 平台应用 总结及展望. 虚拟仪器开发平台背景. 虚拟仪器概念. 虚拟仪器技术就是 用户自定义的基于 PC 技术的仪器解决方案。. 两大特征: 1 、用户自定义功能; 2 、软件是核心. 五个优势: 良好的可定制的人机界面 性价比高 扩展性强 开发时间少
E N D
图形化虚拟仪器开发平台LabScene 虚拟仪器开发平台讲义
讲义内容 • 虚拟仪器开发平台背景 • 图形编程及G语言 • G语言结构模型及运行分析 • G语言节点及编辑模型 • 扩展模型及分布式构架 • LabScene平台设计及实现 • LabScene中的G语言 • LabScene平台应用 • 总结及展望
虚拟仪器概念 虚拟仪器技术就是用户自定义的基于PC技术的仪器解决方案。 两大特征: 1、用户自定义功能; 2、软件是核心 • 五个优势: • 良好的可定制的人机界面 • 性价比高 • 扩展性强 • 开发时间少 • 出色的集成与组合性能
传统 仪器 GPIB 互连 Lab VIEW 诞生 PXI 模块 化仪器 嵌入 式、 实时 1976年前 1976年 虚拟仪器雏形诞生 1986年 1997年 2003年 FPGA的支持、Smart Sensor 虚拟仪器技术概述 模块化的硬件 + 图形化的软件 = 虚拟仪器 虚拟仪器不但缩短了开发时间和降低系统集成成本,而且增强了测量和自动化应用的功能与灵活性,其最大特点在于基于软件技术仪器功能的可重构性。虚拟仪器代表了仪器仪表的发展方向。
研制基于图形语言的虚拟仪器开发平台的必要性研制基于图形语言的虚拟仪器开发平台的必要性 虚拟仪器是用户自定义的基于PC技术的仪器解决方案,需要对传统仪器的操作界面、方式以及功能进行仿真实现。 依赖于 实现于 电路图 电路主板 用户操作接口 依赖于 实现于 图形化语言 虚拟仪器硬件 虚拟用户面板
虚拟测试系统三大组成部分 • 高效的图形化软件开发平台(G语言) 图形化软件平台是虚拟仪器中最重要的部分,它实现仪器的功能,提高仪器开发效率。NI提供的软件平台为LabVIEW,自行研制的平台为LabScene。 • 模块化的I/O硬件(模块化仪器) 模块化I/O硬件是虚拟仪器的基础。我们研制了基于各类计算机总线的模块化仪器,为系统集成提供硬件支持。 • 用于系统集成的硬件平台 标准的集成平台是虚拟仪器系统集成的基础。常用的虚拟仪器平台有PXI硬件平台、VXI硬件平台和通用计算机硬件平台。
虚拟仪器是在PC技术的基础上发展起来的,所以完全“继承”了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,在数据导入磁盘的同时就能实时地进行复杂的分析。随着数据传输到硬驱功能的不断加强,以及与PC总线的结合,高速数据记录已经具有更合理的可行性。虚拟仪器是在PC技术的基础上发展起来的,所以完全“继承”了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,在数据导入磁盘的同时就能实时地进行复杂的分析。随着数据传输到硬驱功能的不断加强,以及与PC总线的结合,高速数据记录已经具有更合理的可行性。 性能 PIV/K8 2.8G 内存 512M AD 16/400M 性能更高的虚拟仪器 仪器 = A/D + CPU + 软件 PII/K6 1G 内存 128M AD 8/100M PI/K5 266M 内存 16M AD 4/16M
扩展性 • 软件扩展:软件的不断升级,在兼容以往成果的基础上,不断扩展功能,甚至于一样的接口,可扩展更强的实现。 • 硬件扩展:由于软硬件设计接口的灵活性,只需更新计算机或测量硬件,就能以最少的硬件投资和极少的、甚至无需软件上的升级即可改进整个系统。在利用最新科技的时候,可以把它们集成到现有的测量设备,最终以较少的成本加速产品上市的时间。 • 网络扩展:虚拟仪器技术的另一突出优势就是不断提高的网络带宽。因特网和越来越快的计算机网络时的数据分享进入了一个全新的阶段,将因特网和软硬件产品相结合,能够轻松地与地球另一端的同事共享测量结果,分享“天涯若比邻”的便捷,不断提高系统的扩展能力。
开发时间 • 基于图形的编程,与文本语言相比,大大降低了开发的门槛,减少了开发时间。 • 对硬件的驱动封装,选择现在高效的硬件模块,与硬件的完美融合,可以在大幅降低在硬件开发方面的工作量。 • 设计的模块化封装,可选择的组合方式,可以最大程序的使用现有的资源进行组合,进一步降低开发时间。 • 配置、创建、部署、维护和修改高性能、低成本的测量和控制解决方案。
集成性能 虚拟仪器技术从本质上说是一个集成的软硬件概念。随着产品在功能上不断地趋于复杂,工程师们通常需要集成多个测量设备来满足完整的测试需求,但是这些不同设备间的连接和集成总是耗费大量时间,不是轻易可以完成的。虚拟仪器软件平台为所有的I/O设备提供了标准的接口,例如数据采集、视觉、运动和分布式I/O等等,帮助用户轻松地将多个测量设备集成到单个系统,减少了任务的复杂性。为了获得最高的性能、简单的开发过程和系统层面上的协调,这些不同的设备必须保持其独立性,同时还要紧密地集成在一起。
组合选择 虚拟仪器的各个功能实现都是清晰的模块化组合方式,选择不同的硬件,不同的软件模块,组合即可达到不同的目的。
虚拟仪器发展趋势与国内产业现状 从国际上主流虚拟仪器开发平台如美国国家仪器(NI)公司的LabVIEW的发展趋势来看,以图形化语言(G语言)为核心的开发平台方式将在未来一段时间继续占有主导地位。 发展趋势: • 功能灵活与开发直观简易的统一; • 真实仪器外观和功能仿真; • 网络化化技术在虚拟仪器应用; • G语言构架完善,包括面向对象思想的应用。 国内发展现状: • 基于垄断产品的二次开发和硬件提供; • 基于控件库组合方案,面向特定领域; • 虚拟仪器通用平台和核心实现语言即G语言方面没有做出成功的尝试 。
课题来源支持 鉴于虚拟仪器的重要性,国家和吉林省、吉林大学都非常重视虚拟相关技术的研究,吉大虚拟仪器组得到以下项目支持: • 国家自然科学基金科学仪器专项(No.400127003) • 吉林省科技厅科技引导项目(No.20030324) • 吉林大学创新基金
图形化虚拟仪器开发平台LabScene 从2000年初开始,虚拟仪器小组在一些项目支持下,开始研发具有自主知识产权的基于G语言的虚拟仪器开发平台,讫今已初步完成软硬件相关产品的研制。其软件开发平台LabScene具有以下特征: • 自成体系的理论设计基础 • 基于图形编程语言的虚拟仪器开发平台 • 通用高级语言的数据及控制功能实现 • 信号采集、分析、显示等测控专用环境 • 多层的网络构架,构造分布式应用系统 • 可扩展的体系,第三方驱动及节点开发支持 • 单步、连续、探针的调试及运行控制系统 • 系列总线及硬件实现 • 面向教学与科研的专门支持系统 LabScene——来吧,实验,为您构建完全属于自己的、可自定义的实验舞台!
已鉴定LabScene成果 主要功能指标 • 前后面板及工具箱操作的整合环境。 • 数字量、布尔量、字符串的基本数据类型及其操作的图形化。 • 对基本数据类型的同类数组及不同类簇结构的图形化封装。 • 顺序、选择、循环及脚本等控件容器类的图形化处理。 • 前面板输入信息控件及显示控件的仿真设计实现。 • 文件、路径、时间、对话框等常用操作功能函数图形节点实现。 • 信号发生、数字信息处理等功能节点的实现。 • 外部动态库的嵌入实现。 • PCI、USB、串行接口等总线接口的驱动封装。 • 模块化的子VI设计实现。 • 管脚及连线的编辑 • 节点移动、删除及其它功能性编辑 • 运行调试的整体环境提供。 • 图形代码的保存及还原实现。 • 信号发生、获取储存、LCR、冲击测试的虚拟仪器封装。 • 基于XML的VI持久化功能、标准节点描述以及运行数据描述等,适合系统扩展及网络交流 • 多层的网络构架,可以动态无缝的应用网络资源 • 集成文本、文件、图、流、音视频交流能力,方便多个人员协同开发 • 系列总线(PCI、RS232/485、USB总线等)硬件实现以相应的网络版本 • 网络信号发生及数据采集、网络LCR的虚拟仪器封装。 • 基于Web的网络仪器监控能力 • 基于IEEE1451的网络设备及传感器数据获取功能 • 资源管理中间服务器的Linux版本开发,以及与Windows版本的网络交流
DAQ CCU LabScene G语言 Web Server Wave Generator 吉林大学虚拟测试系统 Web Controller LCR SCOPE
已鉴定LabScene成果 图形化虚拟仪器开发平台LabScene于2004年11月通过省科技厅鉴定 • 提出了一种实现图形化语言编程环境的解决方案,设计并实现了图形化虚拟仪器开发平台LabScene ; • 基于LabScene设计了基于PCI总线的数据采集卡,基于USB总线的数据采集模块和信号发生模块,基于RS232/485总线的分布式测控模块和嵌入式TCP/IP模块。 • 利用LabScene及硬件模块设计了微型虚拟数字存储示波器,微型虚拟波形发生器,虚拟LCR测试仪,虚拟冲击功测试仪,分布式地震数据采集系统并用于实际。
吉林大学虚拟测试系统鉴定以后受到了社会的普遍关注,长春市多家主流媒体进行了报道。Sina等多家网站进行了宣传。吉林大学虚拟测试系统鉴定以后受到了社会的普遍关注,长春市多家主流媒体进行了报道。Sina等多家网站进行了宣传。 鉴定结论:国内领先,部分技术国际先进 2004中国分析测试及仪器行业十大新闻排名第三(仪器信息网)
LabScene设计思想及理论 • 基于硬件模型虚拟的功能仿真模型 • 基于兄弟图的数据结构及图论基础 • 基于子VI的模块化设计体系,实现系统的可扩展性 • 流程线路模型:正交三叉树 • 内置数据内存管理模型实现,保证系统的长期高效及稳定运行 • 基于事件消息驱动的线程池运行模型,提供多种优先级别的可控运行方式 • 内置类C文本解析器,与外部文本程序实现功能交互 • 分布式设计体系,实现网络资源的共享与扩展 • 开发基于C++/ API/汇编,自主设计的面向对象类体系框架,真正从底层实现平台软件的高效与灵活。 • 完全自主的研发过程
现实中的硬件 • 真正的硬件由用户用的接口界面、包装和内部工程师所设计的电路板组成。 • 而设计用的电路板由电路设计师经由制图、作板、焊片、测试等工序完成。 • 设计制图又由CAD软件如Protel等软件辅助完成。 电路板 电路图 用户接口
抽象的用户界面模型 一台仪器的使用依赖于它所提供的用户接口,一般说来它分成两种:输入信息控制,如开关按钮、旋钮等,另一种是输出结果显示,如表盘、图表等。一般通过手和眼来完成交互操作。另外还有一些美化的装饰用具。 输入信息接口 输出信息接口 开关 表盘 按钮 显示 旋钮
现实中的硬件 • 基本元件:它是功能实现的最小单元,一般来说不可再分。 • 芯片:也是一个功能实现单元,也可某一部分功能的封装实现,内部含有一自成体系的电路图。 • 管脚:上述两种元素与外界的交互通道,提供信息的输入与输出。 • 电路:标明各种信息量的走向,如电压的、电流等。 • 电路分叉点:电路连线相交汇的地方,一般是一个点,形成分叉的线路。 • 主板:包含上述元素的容器,如电路板等。 主板 电路 输入管脚 芯片 芯片 输出管脚 交叉点 元件
G语言要素抽象 • 将电路图的基本元素抽象一下,元件和芯片都作为一种节点,而不可分的元件视为功能节点,芯片及主板视为容器节点,意为其内部可以再包容电路。 输入管脚 输出管脚 后面板 子节点 功能节点 容器节点 连接处 连线 边界节点
硬件功能软件化 硬件本身: 芯片:可编程 CPU:硬件指令 大规则逻辑器件:硬件描述语言 DSP 设计工具:一般都是软件 The software is the instrument! 软件即仪器! 仪器 =A/D+CPU+软件
编程语言组成 • 数字量类型 • 布尔量 • 字符串 • 其它 基本数据类型: • 数组 • 自定义结构(簇) • 其它 基本类型组合: • 顺序 • 选择分支 • 循环 控制结构: • 输入 • 输出 交互接口: 函数及过程 模块化 执行规则
模型要解决的问题 • 数据类型 • 数组结构 • 控制 • 函数 • 模块 仪器基本要素 图形 • 用户控件与节点之间的关系 • 各个节点之间的关系表示 • 节点与容器之间的关系表示 • 形成可扩展的立体模型 文本语言
G语言节点与函数对应 观察实际的G语言实现,如LabVIEW和自主实现的LabScene,可以知道后面板的G代码主体是一个个节点,这种节点代表了一个功能函数的实现。分析一个函数,其基本模型如式: R Func(Pi0, Pi1…Pin, Po0, Po1…Pon); 其中R为函数返回值,Func为函数名,代表了这个函数,Pi0, Pi1…Pin为n个输入参数,Po0, Po1…Pon为n个输出参数。 返回值和输出参数没有本质上的区别,可知上式基本要素为三种:函数名本身,输入参数,输出参数。由此知道,G语言节点和管脚可以自然的上式对应起来.
G语言基本框架 G语言基本框架 仪器用户界面对应前控件面板 电路设计图对应G代码后面板
兄弟图 • 对图G而言,它有一棵生成树T,若T的任意一条弦的邻接结点在T中必为兄弟,那么称G为兄弟图。 Level0 Root Leaf Level1 Branch Depth=3 Level2 Parent Child Level3 Brother
寻找兄弟图 把图中所有的顶点放到集合roots=(V0,…Vi,…,Vj,…Vn)中去,这些顶点作为有可能找到的兄弟树的根节点。如果roots只有一个顶点,这它就是一棵特殊的兄弟树。否则可以对roots中每个顶点以下面的步骤找一棵树,如果找到了,则此图是兄弟图,此树为它的兄弟树。如果遍历完roots集合仍然没有找到兄弟树,则此图非兄弟图。 1)设当前顶点Vc和当前根节点为Vr都为空。 2)为每个顶点建立一个跟踪层次的变量L,取roots中某一个不与Vr相同的顶点为Vr,把Vr赋给Vc。 3)标记Vc为以遍历过的顶点,找Vc的所有除它的双亲之外的有关联的顶点。 4)若没有这种有关联的顶点,则判断所有的顶点是否均遍历到。 4.1)若是,则所有顶点和没被割去的边形成的树即为兄弟树。 4.2)否则如果Vc有兄弟,则以Vc另外一个兄弟为Vc。如果Vc没有兄弟,则递归找出Vc某祖先的兄弟为Vc,转到步骤3。 5)若有这种有关联的顶点,则将Vc所有关联的顶点视为它的孩子,修改孩子们的层次为Vc的层次加一。 5.1)若Vc孩子之间(也可以说兄弟之间)有关联就当作弦,割去。 5.2)若某个孩子与除Vc外层次小于等于L的结点有关联,则进行步骤2。 5.3)以其中一个孩子为Vc,转到步骤3。
V2 L=2 V1 V3 L=3 V0 V4 V5 V0 V0 V0 V1 L=3 V2 V2 V1 L=2 V2 V2 寻找兄弟图示例
G语言要素兄弟图对应关系 • 在兄弟图中有两种边:即树支和弦,实际上是两种关系,弦是普通的图中的边,表达了一种特定的关系,而树支代表一个包容嵌套关系。对应到G语言中,弦表达了连线的概念,而树支对应了包容关系,即容器对节点的包含关系。 • 两种结点:叶子结点为普通的图中结点,而分支结点则为可容纳其它结点的容器结点,它的孩子即为包容在它当中的结点。对应到G语言中,叶子即为功能节点,分支结点即为容器。
兄弟AOV网 • 由于G语言借鉴了数据流图的概念,而数据流图有如下特征: • 工程之间具有时间优先关系。 • 工程开始过程必须满足一定条件。 • 某项活动不应该以自己为先决条件。 • 由上述条件很容易用一个无环的有向图表示,即AOV(顶点表示活动)网: • 从顶点到另一个顶点有有向关系,则表示前一顶点是后一顶的前驱,后之称为后继,而这种关系可以描述时间优先的关系。 • 某个顶点可能有多个前驱,即入度,用入度的同时满足表达工程的开始条件。 • 无环表示网络中没有以自己为条件的顶点。 • 因此,我们把AOV网当作G语言的基本图关系。
G语言的数据模型:描述 • G语言表现形式: • 兄弟AOV网描述: • 关系的传递: V1 V1 V0 V1 V0 V2 V2 V2
排序消息驱动 指谁应接收此消息,然后驱动此节点进行预运行。 目的节点 消息ID 此消息的类型,接受者据此类型进行所要求的动作。 参数 消息扩展参数,规则是否可以实施的条件判断标志。 此触发消息所携带的数据指针,供目的节点使用。 数据指针
消息结构 • 消息池 消息队 列0 消息队 列1 消息队 列n
事件驱动运行 • 从消息池中获取消息并加以解析执行的机制,消息执行机制可以是多种,如线程侦测执行,循环检测、用户手动、定时触发等,用以实现调试或连续运行控制。对每一条消息而言,其执行流程如图所示: 有 有否消息 获取触发消息 投递触发消息 解析消息结构 生成消息结构 • 执行规则 获取目的节点 及管脚 获取有连接关系的节点 消息池 定位内存数据 设置内存数据 执行完成规则 执行功能 设置消息参数 满足 开辟执行线程 并置运行状态 规则满足 执行激活规则
运 行(一) 运行实际上是对兄弟AOV网的排序过程,这个过程是由消息驱动的,由消息执行规则来确定运行的形式的。 • 对AOV网的排序很简单: • 在图中选一个没有前驱的顶点(即入度为0)且输出之。 • 从图中删除该顶点和所有以它为尾为的弧。 • 重复a)、b),直至全部顶点均已输出。 • 但对兄弟AOV网而言,其情况特殊之外在于某些顶点还有孩子顶点。我们加上几条规则: • 只是体现包含关系但不是关系传递性的边,首先删除。 • 删除具有关系传递性的弧时,应把异化的弧一并删除。 • 若某个顶点为分支顶点,则先对其孩子顶点进行排序,然后再回到双亲顶点排序。 • 由于一开始图中就有可能有多个没有前驱的顶点,因此AOV网的排序过程并不唯一,这也是G语言的特征之一。
兄弟AOV网的排序运行 运行实际上是对兄弟AOV网的排序过程,这个过程是由消息驱动的,由消息执行规则来确定运行的形式的。 • 对AOV网的排序很简单: • 在图中选一个没有前驱的顶点(即入度为0)且输出之。 • 从图中删除该顶点和所有以它为尾为的弧。 • 重复a)、b),直至全部顶点均已输出。 • 但对兄弟AOV网而言,其情况特殊之外在于某些顶点还有孩子顶点。我们加上几条规则: • 只是体现包含关系但不是关系传递性的边,首先删除。 • 删除具有关系传递性的弧时,应把异化的弧一并删除。 • 若某个顶点为分支顶点,则先对其孩子顶点进行排序,然后再回到双亲顶点排序。 • 由于一开始图中就有可能有多个没有前驱的顶点,因此AOV网的排序过程并不唯一,这也是G语言的特征之一。
运 行(二) V2 V0 V3 V1 1 2 3 V4 V7 V5 V8 V6 6 5 4 9 8 7 完成 10 上述步骤得到排序序列:V0,V1,V2(V4,V5,V6,V7,V8)V2,V3。其中V2代表了一个子过程的开始,又表示该子过程的结束。
运 行(三) • 单步调试:每次执行一条消息,直到用户再按单步或其它按钮。 • 动画调试:由定时器每隔一定时间执行一条消息,主要用来观测运行过程。 • 单次运行:由一个线程不停侦测消息池中是否有消息,有则执行。系统只发出一条触发消息,接收到完成消息时将线程挂起。 • 连续运行:侦测线程总处于运行状态,系统不断发出触发消息,在上一条完成后接着发出第二条,直至系统发出暂停或停止消息。 • 暂停运行:消息执行线程暂时挂起,但所有信息均保存。 • 停止运行:退出消息侦测线程,同时清空消息池内容以及初始化节点的信息。
节点属性 每个节点都有三个基本属性:位置、状态及输入输出接口。运行模型根据节点的属性来实施相应的运行规则。 起始节点 初始状态 输入管脚 输出管脚 输入节点 中间节点 运行状态 输入管脚 输出节点 输出管脚 输入节点 输入管脚 末尾节点 完成状态 (c) (a) (b) (d) 节点基本属性描述 (a):位置 (b):状态 (c):功能节点管脚 (d):容器节点及其输入输出边界节点 位置:表示节点在G语言代码解析运行时所处的位置,分为起始、中间、末尾三种,如图(a)所示,在不同的特定的运行中位置可能产生变化。容器节点若包含了具有输入性质的边界节点,则此容器节点为非起始节点;同理若包含具有输出性质的边界节点,则此容器节点为非末尾节点。 状态:表示节点在运行某一刻所处的状态,分为初始、运行、完成三种,状态在运行期间不停的变化,其变化顺序见图(b)。 输入输出接口:每种功能节点表面区域由几组输入输出管脚组成,用以实现不同的连接关系及数据输入输出;而容器的输入输出依赖于它的边界节点完成,输入边界节点一般处于起始位置,输出边界节点处于末尾位置。
节点间的关联 包容关系:如果功能节点Nfi是在容器节点Ncj中,就称Nfi和Ncj有包容关系,Ncj包容Nfi;如果容器节点Nck是在容器节点Ncj中,就称Nck和Ncj有包容关系,Ncj包容Nck。 连接关系:如果功能节点Nfi和功能节点Nfn相互连接,就称Nfi和Nfn有连接关系,连接是一种单向边,从起始节点只流向其它节点,可以一对多,但不能多对一。 Ncj Nfj Nfn Nfj Nck Nfm
激活规则 • 激活规则是节点在状态转变时需要满足的条件,不同状态的节点执行不同的激活规则,激活规则应满足以下条件: • 节点每接收到一个消息执行一次规则确认。 • 处于初始状态的节点执行运行规则,即决定是否进入运行状态。一般来说,起始功能节点接收到消息直接进入行运行状态,非起始功能节点的运行规则在每个输入管脚均接收到激活消息时运行,容器则在每个起始位置的边界节点均激活时运行。 • 处于运行状态的节点执行完成规则,即决定是否进入完成状态。一般来说,功能节点运行完毕后直接进行完成状态,容器必须在每个内部节点均进入完成状态,同时自己的附加规则满足才进入完成状态。 • 某些控制节点(如顺序、循环、选择等)有自己的附加规则。如循环容器的循环条件满足、选择的选中页执行、顺序容器的每页面都依次完成等。
基础类型执行 Nc0 Nf0 Nf3 Nf2 Nf1 Nf4 Nc0:容器节点 Nf0、Nf1:起始节点 Nf2:中间节点 Nf3、Nf4:末尾节点 • 系统发出控制消息,激活最上层容器(Nc0)运行。 • 最上层容器对内部的所包含起始节点(Nf0、Nf1)发出起始消息,激活起始节点运行。 • 起始节点执行节点功能,并改变自身到运行状态。 • 当节点完成功能时,按完成规则决定是否进入完成状态,若是,则向与自己有关联关系的节点(Nf2)投递数据消息,同时进入完成状态。 • Nf2接受到数据就按运行规则(此处假定两个连接输入都激活时满足)判定是否进入运行状态,若能,则执行功能,并按完成规则决定是进入完成状态。若满足,则向与自己有联接关系的节点(Nf3 、Nf4)投递数据消息。 • Nf3 、Nf4如按运行规则决定是否进入运行状态,若满足运行规则,则运行,并按完成规则决定是进入完成状态,若满足完成规则,则进入完成状态,由于Nf3 、Nf4是末尾节点,对包容它的容器Nc0发送完成消息。 • 容器Nc0按完成规则(此处假定内部末尾节点均完成时满足)判断是否完成。完成则置完成状态,将内部节点(Nf0、Nf1 、Nf2 、Nf3 、Nf4)状态置成初始状态,如果是末尾位置,则对上层容器(即系统)发出完成消息。 • 系统接收消息,运行完成。
控制类型执行 Nc Nfi0 Nfbi0 Nfbo0 Nfo0 Nfin Nfbin Nfbom Nfom Nc:容器节点 Nfi0、Nfin、Nfo0、Nfom:容器外节点 Nfbi0、Nfbin:输入边界节点 Nfbo0、Nfbom:输出边界节点 • Nfbi0、Nfbin接收到Nfi0、Nfin 的触发消息,进入运行状态,同时给Nc发激活运行消息。 • Nc按运行规则判断是否所有的输入边界节点均处于运行状态,若是,则进入运行状态,同时给内部所有的起始节点发送起始消息。 • 按基础类型VI运行。 • 若Nc进行到完成规则判断时,依据不同的控制功能执行其附加规则。 • 若完成规则完成,则进入完成状态。如果Nfbo0、Nfbom存在,则使其进入到运行状态,若不存在,则对父容器发出完成消息。同时置内部节点为初始状态。 • Nfbo0、Nfbom对后续关联节点Nfo0、Nfom发送激活消息,按基础类型VI运行。
控制类型执行 • 1循环: • 组成:一个容器节点和一个条件判断节点。 • 运行:每次执行附加规则时,判断条件节点是否满足要求,若是,则继续执行基本VI运行方式,若否,则进入完成状态。 • 2选择 • 组成:层叠在一起的多块容器节点和一个选择边界节点。其中事件容器节点类似选择容器。 • 运行:选择边界节点接收到消息,判断是否是要运行,若是就根据消息里面携带的数据判断选择的是那块容器节点来运行,同时把这块容器节点激活,并通知这块容器节点运行。其它层叠的容器节点因为未被激活,将不会运行。运行完成,激活容器进入完成状态,执行后续动作。 • 3顺序 • 组成:多个层叠的容器节点。 • 运行:当顺序节点接受到消息要运行,先找到顺序控制节点上的第一块容器节点,按基本运行方式运行它。当第一块运行完毕后,它会给第二块发消息,启动第二块运行,并把边界的数据提供给第二块,同时把自己置成完成状态。接着第二块按第一块同样的道理运行。一直到最后一块运行完毕,执行后续动作。
子VI类型执行 • 子VI类依赖于它所代表的VI的用户接口节点来运行,子VI节点的每个输入输出管脚均与一个用户接口节点联系在一起,用来代替前面板输入输出的数据交流,其执行过程如图9所示,其中子VI节点本身的规则适用普通功能节点规则。 前面板输入 调用节点 解析子VI描述文件 产生隐藏VI VI功能实现 子节点 后续节点 前面板输出