中大型LABVIEW软件三层设计架构
labview的基本构成

labview的基本构成LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程环境,主要用于测量和控制系统的设计。
LabVIEW的基本构成包括以下几个关键元素:1. 前面板(Front Panel):•用户界面:前面板是LabVIEW程序的用户界面。
它是用户与程序交互的地方,包括控件(如按钮、滑块、图表)和指示器(如图形、数值显示)。
•控件和指示器:控件用于接收用户输入,而指示器用于显示程序输出或中间结果。
2. 图形程序(Block Diagram):•数据流图:图形程序是LabVIEW的核心,用于实现程序的功能。
它是一个数据流图,其中各个图元表示不同的函数或操作。
连接这些图元的线表示数据流的方向。
•节点和连接线:图形程序由节点(图元)组成,节点执行特定的操作。
连接线表示数据的流向,沿着连接线传递数据。
3. 函数和VI(Virtual Instrument):•函数:LabVIEW中的函数是基本的操作单元,执行特定的任务,如数学运算、逻辑判断等。
• VI: VI是LabVIEW中的虚拟仪器,可以包含一个或多个前面板和图形程序。
VI可用于将程序模块化,实现可重用的代码。
4. 控制面板(Control Palette):•控制和显示元素:控制面板是LabVIEW中包含各种控制和显示元素的工具箱。
用户可以从控制面板中拖拽这些元素到前面板,用于构建用户界面。
5. 工具栏(Toolbar):•编辑和运行:工具栏包含各种工具,如编辑工具、运行工具等,用于编辑程序和执行程序。
6. 项目(Project):•项目资源:项目视图允许用户组织和管理LabVIEW项目,包括VI文件、数据文件、图标等。
项目视图使得对项目中的所有资源进行集中管理变得更加方便。
这些基本构成元素共同形成LabVIEW的整体框架,LabVIEW的独特之处在于其图形化编程环境,使得用户可以通过直观的方式设计、测试和部署测量和控制系统。
labview架构设计思路实例

labview架构设计思路实例LabVIEW是一种图形化编程语言,用于控制和测量系统。
在进行LabVIEW架构设计时,需要考虑以下几个方面:1. 模块化设计,模块化设计是LabVIEW架构设计的关键。
将系统分解为不同的模块,每个模块负责特定的功能。
例如,可以将数据采集、数据处理、用户界面等功能模块化设计,以便于维护和扩展。
2. 合理的数据流,在LabVIEW中,数据流是非常重要的。
设计时需要考虑数据的流向和处理方式,确保数据能够在不同模块之间流通,并且能够正确地被处理和显示。
3. 使用适当的设计模式,LabVIEW中可以使用一些常见的设计模式,例如状态机、观察者模式等。
这些设计模式可以帮助提高系统的可扩展性和灵活性。
4. 考虑性能和实时性,如果系统需要实时性能,需要特别关注数据处理的速度和系统的响应时间。
可以使用并行计算、硬件加速等技术来提高系统的性能。
5. 考虑可扩展性和可维护性,在设计LabVIEW架构时,需要考虑系统的可扩展性和可维护性。
合理的模块化设计和良好的代码结构可以帮助提高系统的可扩展性和可维护性。
举例来说,假设我们要设计一个数据采集和显示系统。
我们可以将系统分解为数据采集模块、数据处理模块和用户界面模块。
数据采集模块负责从传感器或设备中采集数据,数据处理模块负责对采集到的数据进行处理,用户界面模块负责将处理后的数据显示给用户。
我们可以使用状态机设计模式来管理数据采集的状态,使用观察者模式来更新用户界面。
同时,我们需要考虑数据的流向和处理方式,确保数据能够正确地在不同模块之间流通和处理。
总之,LabVIEW架构设计需要考虑模块化设计、合理的数据流、适当的设计模式、性能和实时性、可扩展性和可维护性等方面,以确保系统具有良好的可扩展性、可维护性和性能。
实验三-LabVIEW编程的程序结构实验-分支机构与顺序结构

以方程式y=x2+x+1为例
• 1. 用常规的LabVIEW算数函数实现此方程 • 2. 用公式节点来实现同一方程
– 在框内输入一个或多个公式,每个公式语句必须以分 号结束 – 在公式节点边框上弹出快捷菜单,并从弹出菜单中选 择Add Input或Add Output选项来创建公式节点的输入 或输出端口。
公式节点包含元素
• 表达式中能够使用符号 + , - , * , / , ** , != , = = , > , < , >= ,<= , && , || , & , | , ^ , 等 • 可使用数学运算子模板中的函数:如三角、指数、 对数等 • 公式节点中可使用
– IF条件语句, – for和do { }、while循环 – Swtich ( ) case分支语句
《虚拟仪器》-3
LabVIEW编程的程序结构实验 ——Case结构和Sequence结构
§7-1 Case 结 构
顺序结构
分支结构
循环结构
§7-1 Case 结 构
• Case结构是一种控制程序分支的结构,与常规文本编程 语言的IF语句或Swtich语句类似。 • Case结构有一个条件选择端口 ? (Selector),根据连到 Selector端口 ? 的值来判断执行哪一个子Case。Selector 端口的数据类型有布尔型和数值型。 • 通过打开函数模板中的Structure子模板,可在框图程序中 放置Case结构
例:使用Sequence结构,设计一个VI,计算产生一
个与指定的数字相等的随机数所需花费的时间。
―等待Wait‖:控制VT定时执行,每次执行单元(比如循 环)内部,在执行代码运行结束后,开始计时。保持此状态 直到毫秒计数器的值等于预先设定的值。用于每次执行单元 至少执行时间设定。 ―等待下一个整数倍的毫秒Wait until Next ms Multiple‖: 每次执行单元(比如循环)内部,在执行代码开始运行时, 就开始计时。保持此状态直到毫秒计数器的值等于预先设定 数的整数倍。用于同步各单元操作。
labview组成方案

LabVIEW组成方案引言LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一款由美国国家仪器公司(National Instruments)开发的图形化编程语言与开发环境。
LabVIEW广泛应用于工程、科学和研究领域,以其易于使用、灵活性和强大的功能而受到广大用户的青睐。
本文将介绍LabVIEW的主要组成方案,包括软件和硬件方面的内容。
软件组成LabVIEW开发环境LabVIEW开发环境是LabVIEW的核心组成部分,是用户进行编程开发和实验控制的界面。
它提供了一套完整的工具集,包括图形编辑器、函数库、调试工具、数据分析工具等。
通过直观的图形化编程,用户可以轻松地创建虚拟仪器控制界面(Virtual Instrument)。
LabVIEW应用程序LabVIEW应用程序是用户在开发环境中创建的实际运行的程序。
它可以用于各种用途,如数据采集、控制系统、信号处理等。
LabVIEW应用程序可以以exe 可执行文件的形式发布,也可以嵌入到其他软件中作为组件使用。
LabVIEW模块LabVIEW还提供了丰富的模块,用于扩展其功能。
这些模块包括: - 数据采集模块:用于接口与各种硬件设备进行数据采集,如DAQ卡,传感器等。
- FPGA模块:用于对FPGA进行编程,实现硬件加速和高速控制。
- 即时嵌入系统模块:用于开发控制和嵌入式系统应用,如嵌入式系统和实时操作系统。
- 通信模块:用于进行网络通信、数据库访问等。
- 图像处理模块:用于图像采集、处理和分析。
硬件组成数据采集硬件LabVIEW可与各种数据采集硬件相结合,实现数据的实时采集和处理。
常见的数据采集硬件包括DAQ卡、传感器、采样仪等。
这些硬件设备可通过LabVIEW 提供的底层驱动程序进行控制和管理。
控制器控制器是LabVIEW与外部设备进行通信和控制的关键元件。
常见的控制器包括: - PXI:一种工业控制器,具有高性能和可扩展性,适用于复杂的实时控制和数据采集应用。
LabVIEW程序设计与虚拟仪器之程序结构ppt文档

While循环可以进行嵌套。 【例2.1】 使用While循环每0.5秒显示一个随机数和循环 次数,最后波形显示所有随机数序列。 VI的前面板和程序框图如图2-2所示,While循环条件端子 与布尔开关对象相连,只要开关状态为“关”,程序重复执行, 直到条件端子为“开”,停止循环。While循环框内放置一个 随机数对象和Time Delay Express VI,每0.5秒循环一次,在前 面板显示随机数和循环次数,最后利用While循环的自动索引 功能将随机数序列通过波形显示出来,可以看到,波形的横坐 标表示循环次数,当循环次数为115时,随机数加1是1.38577。
图2-6 例2.2的前面板和程序框图
2.1.3 For循环 For循环位于Functions→Structures子模板上。 For循环有两个固定的数据端子,分别是计数端子(Loop
Count)和重复端子(Loop Iteration),如图2-8所示。其中计数端 子连接整型数值,指定循环次数;重复端子输出已经执行循环 的次数,循环次数默认从“0”开始计数,依次增加“1”。
LabVIEW程序设计与虚拟仪器之程序结构
LabVIEW程序设计与虚拟仪器之程序结构
本章将系统介绍LabVIEW提供的程序结构,包括While Loop(While循环)、For Loop(For循环)、Shift Register(移位寄存 器)、Case Structure(分支结构)、Sequence Structure(顺序结构)、 Formula Node(公式节点)等。
2.1 循 环 结 构
在LabVIEW中有While循环 和 For循环 两种循环结构。二
者的区别是:While循环只要满足循环退出的条件则退出相应 的循环,否则变成死循环;而For循环是预先确定循环次数, 当循环体运行完指定的次数后自动退出循环。 2.1.1 While循环
LabVIEW多核编程的三种开发架构

4
开发并行程序
多核 编程
• 多核技术能够使服务器并行处理任务,多核架构能够使用的软件更 出色地运行。但是对运行程序也要是能针对多核进行并行处理,否 则程序运行性能的提升并不明显。 • 在多核处理器上开发程序要比在单核处理器上要困难得多。虽然多 个应用程序可以方便地运行在不同处理器上,但是程序员们必须非 常谨慎地编写程序代码,以有效利用多核技术。
12
任务并行化
多核 编程
• 图1显示的简单数据采集过程中,上部分代码为模拟电压输入任务,下部分代 码为数字输出任务。每个线程可在不同CPU内核中运行,极大提升了执行速度 。
13
数据并行化
多核 编程
• 硬件设计师通过使用多核处理器来改善计算能力,软件程序员也必 须找到新的编程策略来驾驭并行计算的能力。一项技术的出现有效 地利用了多核处理器并行化处理数据的优势,我们称之为“分治策 略(Divide and Conquer)”技术。
9
开发并行程序
多核 编程
• 假如有一个或某几个线程占用了 100% 的 CPU,此时系统对其他线 程就会反应迟钝。例如,程序的执行线程占用了100% 的 CPU,那么 用户对界面的操作就会迟迟得不到响应,甚至于用户会误认为程序 死锁了。所以在程序中要尽量避免出现 100% 占用 CPU 的情况。 • 此类问题最简单的解决方法就是在循环内加一个延时。在很多情况 下,运行时间很长的循环往往都只是为了等待某一个任务的完成, 在此类循环体的内部几乎没有耗时较多的、又有意义的运算,所以 必须在循环框内加延时。
18
谢谢观看!
19
5
开发并行程序
多核 编程
• 编写并行程序的首要挑战就是,确定程序中哪些部分能够并行地执行,然后 通过代码予以实现。这些可以并行执行的代码称为线程。因此,整个并行程 序也被称为多线程应用程序。 • 行业专家认为编写能够利用多核处理器的应用程序是一个严峻的挑战。
labview主/从设计模式和生产者/消费者设计模式

5.2 LabVIEW设计模式——主/从设计模式和生产者/消费者设计模式在上一节中曾经谈到过,NI LabVIEW 中提供了六种最基本的设计模式。
本节首先介绍其中的两种:主/从设计模式与生产者/消费者设计模式(Master/Slave design pattern and Producer/Consumer design pattern)。
这是由于这两种设计模式在结构上极为相似(使用的内置函数不同),所以我们在这里将一起来讨论(基本结构参见图5.2-1、图5.2-2)。
图5.2-1 主/从设计模式图5.2-2 生产者/消费者设计模式5.2.1 主/从设计模式(Master/Slave design pattern)与主/从设计模式的相关内置函数(Notifier_通知)参见下图所示。
图5.2.1-1 主/从设计模式内置函数(通知)关于这些内置函数的定义和使用方法请参考LabVIEW Help文件,这里就不再进行讨论了。
对于绝大多数LabVIEW的学习者来讲,仅仅依据这些主/从操作提供的内置函数(通知),即便是借助于帮助文件也很难理解和设计出正确的应用程序代码或基本架构。
因为这些内置函数的内部程序代码是不对外开放的、不公开的,所以我们也就很难理解的更准确或更全面。
那么如何正确的使用它们呢?通常有两个最简单、最直接的方法可以解决这个问题:一是,查看NI给出的设计模式或例程;二是,查看其它使用者所提供的实用例程。
其实,这里也再次间接的告诉大家,更多查看和理解其它LabVIEW开好者所提供的实用例程是学习LabVIEW的最好方法之一。
通过图5.2-1,就可以初略地领会到NI 基于数据流的图形化代码主/从设计模式的表达形式或架构。
从图5.2-1中,可以看到主/从设计模式的基本构成是:包括了两个While循环(上面为主循环、下面的为从循环)和若干个“通知”内置函数(Notifier)构成。
主循环中的Case 结构用来确定是否向从循环发出通知。
实验三-LabVIEW编程的程序结构实验-分支机构与顺序结构

LabVIEW编程的程序结构实验 ——Case结构和Sequence结构
§7-1 Case 结 构
顺序结构
分支结构
循环结构
§7-1 Case 结 构
• Case结构是一种控制程序分支的结构,与常规文本编程 语言的IF语句或Swtich语句类似。 • Case结构有一个条件选择端口 ? (Selector),根据连到 Selector端口 ? 的值来判断执行哪一个子Case。Selector 端口的数据类型有布尔型和数值型。 • 通过打开函数模板中的Structure子模板,可在框图程序中 放置Case结构
• 公式节点的语法与C语言相同
习题7-1: y1=x3+x2+5 y2=m*x+b
补充:前面板对象属性的动态控制
• 在前面板设计编程时,我们可以修改和设 定对象控件的属性,但是在程序运行时能 否由用户修改或程序自身改变呢? • 方法是:创建对象的属性节点,通过对属 性节点的“写”操作,完成对对象属性的 修改。 • 同样通过对属性节点的“读”操作,在程 序中读取对象的属性。
“Tick Count(ms)函数”:用与Express VI完成定时任务。
全局变量和局部变量
• 全局变量:在多个VI有效。 • 局部变量:在本VI有效。 • 在Sequence结构中,各个Frame之间是通过局部 变量(Sequence Locals)来传递数据的,由于 各Frame是按照编号的顺序由前向后执行,因此 局部变量只能由前向后传递数据。 • 在需要使用局部变量向后传递数据的Frame的边 框上右击鼠标弹出快捷菜单,选择Add Sequence Local选项,可创建一个局部变量
选作:
程序运行中,用Knob控件改变图形CHART控件中点和曲线的 颜色分别为红、橙、紫、绿色。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通常一个VI若包含三、四十个以上的subVI(不包含LabVIEW本身在Functions中提供的VI)时,就可算是一个中大型的软件计划(software project)了。
虽然比起软件工程中的一些作业环境软件(如Windows系列)或大型应用软件(如Word、Excel)等仍算是小工程,但其复杂性亦在一定程度之上,若没有事先想好在撰写程序时的一些规划与方法,想要完成这类中大型的软件绝对不是一件简单的事。
尤其这类软件通常不是由一个人,而是由一个团队所共同完成的,因此整个软件的结构,就要能让团队中的每一成员都能清楚的了解,而且要够简单,才算是好的软件结构。
以下将参考由Rick Bitter等人所着”LabVIEW Advanced Programming Techniques”,中之第4章的部分内容,介绍所谓软件计划中的三层式结构(the Three-Tiered Structure)的概念及其优点。
需要软件结构的主要原因,是当软件人员发展软件到某一阶段时,若没有计划或无意的创造了许多subVI,但各subVI之间有许多部分其实是重复撰写的;或各VI相互间呼叫时没有一定的纪律,使得在VI Hierarchy中所看到的各VI间的联机是错综复杂,像个盘丝洞一般,这将可能会使多人发展的软件计划增加所耗费的时间和可能出错的机会、减低程序的效率,以及增加debugging时的困难。
为了改善上述的情形,所以要提倡三层式结构的概念。
三层式结构由上而下依次为:Main Level、Test Level和Driver Level,这种结构是由经验中得来的,在多人发展的软件计划中显得简单明了,当大家都能遵照这个结构来写程序时,这种结构就可以充分显现出它的优点。
那这三个阶层到底如何区别呢?以通俗的比喻来说,假设我们如果要组织一个篮球队参加全国比赛,每个球员要练习基本动作及体能,如何跑、如何跳、手脚该如何放置才是正确位置等,这就相当于系统中Driver Level所做的事情;接下来,将各球员组合练习某一套防守或进攻的战术,如二三区域联防、人盯人防守,每个人该在什么位置才能正确接应等,则像是T est Level中一项项的test了;而最后比赛时,场上的战略运用,包括何时要用什么战术组合、如何更换球员、何时喊暂停、终场前是不是要故意犯规或采拖延战术等等,对照过来,就像是在Main Level中,如何将T est Level中各test 做最有效能的整合与排列组合等的工作。
简单来说,Driver Level包含了程序与所有仪器、组件、马达或其它应用软件的沟通、控制等较低阶的事情,使其可完成某一项基本的动作,例如初始化、马达走到home位置、雷射以设定的能量及频率发射光束‧‧‧等。
可注意到我们在这边所说的driver,并不像一般在别处所称驱动程序的那种driver那么低阶,真正最低阶的工作还是要有现成的VI来帮忙才行;在Test Level中,则是如何连接各个Driver VI的基本动作,使可做完出一套连续、有意义的流程,来执行某项测试,例如让手臂由A点走到B点,下降夹取一个螺丝,再走至C点装到某面板上,然后回到A点等待,类似这样控制一个流程的进行,便是Test VI的工作内容;Main Level则包含了使用者接口(User Interface)或称人机接口(Man-Machine Interface) ,目的是整合各项测试和例外处理(Exception Handling)等,将它们以适当的顺序及流程组合,很容易地让使用者操作。
当一个软件计划严格的遵照上述的三层结构来撰写时,最大的优点是可使程序代码的再使用(code reuse)达到最大化,在不同的T est VI中,可重复使用相同的Driver VI;而在不同程序的Main Level中,又可重复使用相同的T est VI,这将使得程序维护或修改的时间与精力大幅减少;同时当我们已有一个程序的样板(template)后,可增加软件版本更新的速度。
另一个很重要的好处是,当我们在撰写某一个level中的程序时,并不需要关心在另一个level中有什么其它的程序是如何执行的,而只要专注在自己的这个level的程序上就可以了,这使得由团队来共同完成一个大型计划的工作变得容易许多。
以下将依Driver Level、Test Level、Main Level的顺序,来介绍在各level写程序时的原则与心得﹔(1) Driver Level﹔通常在Driver Level所写的程序是比较低阶的,其功能是把一些最基本的I/O动作按某一顺序连接起来,形成基本动作,大致分为三大类﹔a. 组态(configuration):开启或关闭与仪器的连结、将仪器初始化及设定组态等。
b. 量测(measurement):由仪器读出测量值或特定的资料。
c. 动作/状态(action/status):一个流程的启始或结束动作、检查错误等。
简单来讲,Driver Level的内容是藉由一些接口(卡),经digital I/O或analog I/O由仪器取得上一些sensor的电压值,或传出一些电压值来控制机器、仪器或马达等的组态与动作,使得仪器或机器能够正确设定及做出一些基本的动作。
另外程序与仪器间的资料传递或在自身计算机的存取动作,规定档案的格式以及存取等等,也都属于Driver Level中应该完成的事项。
但是真正最低阶的工作还是需要NI提供的VI来进行,我们所写的Driver VI仍是属于较高阶的。
以下举一个利用7344卡来控制马达动作,而使BM7移动的Driver VI实例﹔首先要确定马达所有的动作有哪些,我们可简单分类如下﹔初始设定、找寻Home点、移到指定位置、以及回报现在位置等。
当然我们必须先在MAX上做细部的设定,接下来再回到LabVIEW中来撰写Driver VI。
看起来我们必须写四个Driver VI来控制马达,但这样往往造成subVI过多的情形,因此我的建议是将关于同一个仪器或装置的Driver VI合并为一个。
合并的方法为利用一个enumerated type的control加上case结构即可。
完成后如下图﹔利用名为Action的enum control来控制此Driver VI要进行何项动作。
记得在编辑icon时,要将此enum control加到input terminal即可。
在Test Level中呼叫时的方法就可如下图所示了﹔如此一来,我们便可以利用一个subVI来完成数个动作了,减少了一些管理subVI的辛苦。
但请注意,这样的Driver VI要看情形而在其File> VI Properties…> Execution中设定为reentrant,因它很有可能同时被数个Test VI呼叫。
在大型程序计划发展时,一个观念很重要:Driver Level中的VI是整个软件计划中最重要的部分,它们的好坏直接决定了这个软件计划的成功与否和完成后的品质,就像要盖高楼大厦,打地基、灌水泥以及基本用料的好坏才是决定建筑物好坏最重要的地方,若基础的部分不好,无论大楼外观有多雄伟或多漂亮,假使地震一来,都有可能会倒塌。
Driver VI若不先规划,往往会造成程序效率减低,以及重复的程序代码过多等现象。
虽然在最后主程序执行时并看不到Driver VI,但它们可是最重要的无名英雄,所以在设计Driver VI时需要多费点心思喔!(2) Test Level:在Test Level中的VI此处暂称为Test VI,它可以呼叫Driver Level的VI,但只能被Main Level 中的VI呼叫。
有一个不成文的规定:Test VI间不可以互相呼叫;否则会使三层结构又被破坏了。
可是在写程序时,有时又觉得难以避免,或为了图方便想说就暂时先呼叫一下吧,若有这情形发生,那就要请重新检视一下Driver Level中的VI,是否要重写某些部分或在写一些新的Driver VI,以避免上述的情形发生。
有一个重要的原则,一个Test VI内只要安排一套完整的测试即可,不要在同一个T est VI中去完成两个(以上)的测试,否则未来若整个计划要作修改时,T est VI可能就又要修改了。
一个完整的Test VI当然要包含对仪器设备的初始化,组态设定等,它是一个可以单独执行的VI,也就是说,即使此Test VI不放到Main Level之下,它也一样可以单独执行来完成一项测试。
另一个重要观念是,各个Test VI间是不要有什么关联的,因为当在Main Level中的某个T est VI执行时,它并不确定前一个T est VI结束时的机器状态是否合于要求,因此要重新设定,或是要重新检查一下,以避免不能执行或有预料外的状况发生。
流程图对于我们来撰写Test Level中的VI是特别有用,因流程图的概念也正好就是LabVIEW 中所谓data flow的概念,因此当一项测试的流程图清楚的画出来并能解释其流程时,即使我们还没有开始写程序,我们几乎可以说这个T est VI的程序设计已完成60%以上了,这一点也不夸张,因剩下的部分只是将流程图中各方块的连接,换成LabVIEW中各function VI或Driver VI的连接而已。
(3) Main Level:Main Level又称人机接口(Man-Machine Interface, MMI),设计Main Level程序的中心观念是不仅要能完成测试外,而且操作上要越能user-friendly越好,因为当使用者在操作仪器设备时,他其实并不见得很关心细节的部分是如何运作的,他或许只希望能很轻松愉快的尽快完成工作,然后轻松愉快的下班回家。
例如,使用者希望手臂能够走到某特定位置去夹取一个螺丝,最好是按下某个屏幕上的按钮就好了,只要看着屏幕上一切正常的讯息,说不定他还可以有时间悠闲地喝杯咖啡呢!通常Main Level VI的设计往往利用while循环不断的polling,大部分的时候也不只一个while 循环。
其内容要包含几个重点:a) 可让操作者设定或更改操作参数:例如可选择何项测试及执行顺序、接口的地址、档案的路径等等,但也请注意,需设定的选项并非越多越好,太多的选项容易使人分散注意力而容易出错。
b) 在特定的情况下使用适当的Control:有时Control需加些心思来点变化,以表示其不同的重要性,最简单的当然是以大小、颜色来区别,当然在执行时也可利用property node中闪烁的效果来强调,不过一般而言,常用的重要Control通常用按钮放在Front Panel上显眼的地方;而较不常用的Control,通常利用放在cluster或tab control中,利用invisible的功能或换至其它页面使其平常不出现在Front Panel上。