📄 7.图形化编程软件平台.txt
字号:
发信人: ilyfe (伊犁*飞), 信区: LabVIEW
标 题: 第七章 图形化编程软件平台
发信站: 饮水思源 (2003年05月04日13:24:43 星期天), 站内信件
第七章 图形化编程软件平台
图形化编程软件平台作为虚拟仪器应用程序的开发环境,具有编程简单、使用方便
等优势,本章介绍了图形化编程软件平台的特点,重点介绍了浙江大学数字技术及
仪器研究所自主开发的图形化编程软件平台VPP的设计思路与应用。
7.1 图形化编程软件平台的特点
自动测试系统应用程序开发环境可以选择传统文本形式的语言环境,如BC、VC、
VB、Delphi或LabWindows/CVI等,也可以选择图形化的软件开发环境。被称为快速
应用程序开发环境(RAD)的VC、VB、Delphi等开发平台具有可视化界面与已经以
类形式封装的可视化控件,在很大程度上编程也不需要从头开始,但是,它们的源
代码从本质上还是一行行的文本代码,编程还是包含了许多技巧。对于一个仪器工
程师而言,在进行测试系统应用程序设计与调试时,往往会将精力与时间过多地停
留于语言调试本身,而很难集中时间与精力在真正系统集成任务上,工作量大,难
度也大。为了让仪器工程师从繁重的编程任务中走出来,回归到他们本职工作上去
,业界推出了图形化语言的概念。
在现实的生活中和科学研究过程中,人们常常以框图来描述事物。框图不仅可以描
述事物的位置、大小,更为重要的是,它可以描述事物的运行过程。在计算机上以
二维平台上的框图描述一个程序的结构和运行过程,就形成了图形化语言。简略地
说,一个图形化语言是指一个计算机系统,其执行过程可由二维平台上的框图来描
述。
与一些框图绘制系统不同的是,图形化语言需要满足两个规范:
1、 图形化语言中的框图必须是可运行的。就是说,与那些静态的流程框图绘制软
件和图像处理软件不同,图形化语言中的框图描述的是系统的运行过程,并且每个
部分在运行中会执行一定的操作。
2、 框图可以动态修改,这里的修改不只是设定一些参数或变量值,框图编辑环境
可以修改程序的结构和运行的流程。
因此,那些基于文本的具有一定图形化特性的编程语言如VB、VC、Delphi等,都不
是图形化语言,它们只是文本语言的图形化环境或者称为支持可视化的环境。那些
用于描述图形结构和内容的语言如Postscript也不是图形化语言。绘图软件也不是
图形化语言,因为它们并不解释图形所代表的意义。
图形化语言是图形化计算机领域中的一个重要分支。为了与其它一些图形化系统相
区别,在一些文献中称图形化语言为图形化编程语言或可运行的图,而将支持图形
化语言进行编程的软件平台称为图形化编程软件平台。
图形化编程软件平台的编程方法是一种面向对象的编程思想,用户只需描述任务,
然后类似作语法分析,把主语、谓语(动作)、宾语(目标)、定语(条件)、状
语(条件)区分开,分别对应于具体的图形化控件,把它们用数据线或顺序线按流
程连接即可。因此,图形化编程软件平台的源代码是图标与连线,整个程序流程是
用户可现场组态的数据流程图,用户往往只需用鼠标将各类控件进行连线就可以产
生源代码,结构清晰,编程简单,非常适合于具有专业知识但并没有太多编程知识
的仪器工程师。利用图形化编程软件平台进行编程,工程师不必具有丰富的编程知
识,只需了解测试的目的与顺序,然后根据需要选择与配置各个图形化控件,并用
连线将其连接,就构成了系统应用程序。利用图形化编程软件平台进行虚拟仪器应
用程序的开发,编程效率高,可以大大减少系统集成的时间与精力,因此也就成为
目前国际自动测试领域研究的热点。
在国外,不少公司与研究单位进行了图形化编程软件平台的研究开发工作,真正成
为产品的主要有NI公司的LabVIEW和HP公司的VEE。作为图形化编程软件平台,除了
具有图形化源代码之外,还具有其它一些特点。
1、 提供多种适合仪器使用的数据类型:由于图形化编程软件平台一般用于自动测
试领域,因此,它不仅有通用数据类型(如整型、实型、字符串、布尔型、一维数
组、二维数组、枚举型、记录型等),也拥有可用于仪器操作的特殊数据类型(如
复数类型、直角坐标类型、极坐标类型、时域数据类型、频谱数据类型等)。用户
在进行图形化编程时,通常不用考虑数据的类型的转换与统一,绝大多数图形化控
件具有数据类型自动识别与转换功能。如一个频谱显示控件的数据输入端接收到一
个时域波形数据类型,图形化编程软件平台将自动执行一次快速傅里叶变换,将它
从时域变换到频域进行结果显示。
2、 提供复杂的数学分析能力:图形化编程软件平台一般提供给用户多种数学运算
函数和信号处理函数,有些还提供专业领域的过程统计和控制函数,方便用户进行
分析与处理测试结果。如果平台中没有提供用户所需的数学函数,用户可以自己用
公式编辑器建立函数,也可以用一种编译语言,如C语言来编写函数,然后将其连
入到平台中。对于非常复杂的数学运算工作,也可以通过平台提供的接口输出到其
它专用数学运算与分析应用软件(如Matlab等)进行运算。
3、 提供丰富的数据显示方式:图形化编程软件平台为用户提供了多种显示方式,
例如,数学字母显示、模拟仪表显示、极坐标显示、时域波形显示、频谱图形等多
种显示方式,用户可以根据实际需要进行显示方式的选择与配置。
4、 易于生成数据报表:图形化编程软件平台一般以数据文件或数据库文件的形式
存储测试与分析结果,它本身就包含了较丰富的报表格式。对于需要生成更复杂的
数据报表的场合来说,可以通过接口输出到EXCEL等专用电子表格,由EXCEL完成报
表的生成与统计。
5、 提供虚拟仪器接口:对于图形化编程软件平台而言,最终的对象往往是具体的
测试仪器,因此必须提供具有可扩展性的、开放性的虚拟仪器接口。有些图形化编
程软件平台提供了仪器的虚拟面板的方式,数据可在虚拟面板上显示并通过虚拟面
板控制仪器,然而,这种虚拟面板是必须事先设计完成的,自动测试系统中所集成
的虚拟仪器必须包含在虚拟面板库中,不具有真正的可扩展性。因此,平台还提供
了基于VXI总线即插即用规范的虚拟仪器接口,这一点在以后的一节中将详细论述
。
此外,有些图形化平台还能与其它语言混合编程,如HP公司的VEE能将程序与其它
应用很好地综合到一起,也可以通过动态链接库,将其它语言编译的程序与VEE相
连接。
据统计,利用图形化编程软件平台进行自动测试系统应用程序的开发,一般可以比
文本语言格式平台减少25%~80%的开发时间,因此,图形化编程软件平台成为了虚
拟仪器系统开发的首选开发环境。
7.2 图形化编程软件平台的设计
7.2.1 数据流语言
图形化系统的发展导致了图形化语言开始逐渐被重视,人们开始试图以图形来描述
程序的运行过程。在今天,人们已经发展了一些可以被实际应用的图形化编程语言
,并且逐渐形成完整的理论体系。数据流语言作为图形化编程语言的一个重要分支
,具有如下特点:
1、 程序以有向图表示,节点代表数据处理函数。数据通过节点间相互连接的连传
入传出函数。
2、 程序流动的顺序依节点上数据有效到达的次序决定。程序的流动顺序在程序的
设计阶段是未积压的,这种一种运行的模式称为数据驱动运行模式。
3、 特别适用于描述数据转换类型问题。
为描述更为广泛的问题,通常需要对数据流描述方法加以扩展,加入条件转换、循
环、递归、数据结构定义等功能。
一般来说,数据流程图描述方法需要一个预定义的函数库,这些函数分别完成一定
的数据运算和操作。函数库的质量通过也反映一个数据流语言的功能强弱。
一般认为,数据流语言的描述方法比较简洁和直观,其程序可以实现并发模式的运
行。因此得到了相当广泛的应用。
在图形化编程软件平台中,描述图形化程序的语法基础是数据流语言,选择数据流
语言的原因如下:
1、 仪器系统中对数据的处理占绝大多数,应用数据流程图来描述这些数据处理过
程最为直观。
2、 数据流程图方法可视性最强,易于被用户接受,事实上,一些现有的成功例子
,比如VEE和LabVIEW都是采用了数据流语言。
3、 数据流语言确定了一种编程的风格,其中各子进程之间的所有数据传递都可以
是并行的,程序中的各个子图的运行也可以实现并行处理。
4、 面向仪器系统的图形化程序不可避免地会需要大量预定义的函数库,这些数据
处理函数库计算过程一般较为复杂,用基本的编程元素以控制流程图形式来组合,
会使得流程图过于庞大,难以辨认,无法实用。而采用数据流语言,将复杂的数据
处理包装在预定义的函数库中,可以有效地减低流程图的复杂度。
Baroth和Hartsough在他们的研究中指出,与非图形化的编程工具相比,数据流语
言的开发模式能极大地缩减开发时间(大约为4到6倍)。
原始的数据流语言定义如下:
程序以有向图表示,其中:
l 节点代表数据处理函数。
l 数据通过节点间相互连接的边传入传出函数。
l 由外部引入节点的弧代表节点中数据处理函数的输入参数。
l 由节点引出的弧代表数据处理函数的输出。
当一个节点的所有输入端都有数据准备好,则此节点激活,完成数据处理。程序流
动的顺序依节点上数据有效到达的次序决定。
面向实际需要,将数据流语言进行扩展与改进:
1、 数据流语言中的元素称为图形化编程元件,每个编程元件完成一定的数据处理
、显示或者对物理仪器的控制。
2、 每个元件可能包括零个或多个输入端,各输入端有一个唯一的名字作为标识。
3、 每个元件可能包括零个或多个输出端,各输出端有一个唯一的名字作为标识。
4、 一个程序是一组图形化编程元件和它们之间相连的边所组成的流程图。
5、 一条连是从一个图形化编程元件的输出端连至另一个图形化编程元件的输入端
的连线。程序运行时,数据流语言解释器保证每条连相连的两个端口包含相同的数
据。
6、 用户自定义的元件称为子程序或子函数,子程序或子函数可由系统已包含的图
形化编程元件组合构成,也可嵌套构成。
7、 数据流语言定义了一种数据驱动式的运行方式,它定义一个元素可被激活的条
件是当且仅当所有输入端都得到了有效的数据。为了实现一些特殊流程控制的功能
,还对这种运行方式作了扩展,允许程序中的元素自定义激活条件。
8、 在连的定义中引入数据类型转换函数,使得不同类型的数据可以正确地传递。
在图形化编程软件平台中,以一个有向图表示一个程序,程序由元件(Component)
和边(Edge)组成。
一个数据流程图描述的程序可以表示为一个偶对P=(C, E),其中:
l C 是一个非空集合,其中的元素称为元件,每一个元件包含有一个输入端子的集
合TI ,一个输出端子的集合TO ;
l E 边(edge)的集合,可能为空。
便于说明清楚,元件C可以表示为一个六元组,C = (Eв,E,TI,Tо,P,S ),
其中:
l Eв :可激活条件判断,返回布尔值,判定元件可否激话;
l E: 元件激活时的执行函数;
l TI: 输入端口的集合,可为空;
l Tо:输出端口的集合,可为空;
l P: 元件的属性集合;
l S: 元件的状态,元件在程序运行中有三种可能的状态:空闲(idle),激活
(active),过期(expired)。
所有元件的初始状态为空闲;当元件所有的输入端口都接收了有效的数据时被激活
,状态变为激活;被激活后,执行激活函数,之后状态变为过期;过期状态的元件
可以被自身或其他元件触发再次激活。
一条由元件C?的输出端口ot到元件Cd的输入端口it的连线E 可表示为
E = (C?,T?,Cd,Td,F),其中:
l Cs:连线的起始元件;
l Ts:连线的起始端口,指向C?的输出端口ot,表示为C?.ot;
l Cd:连线的终止元件;
l Td:连线的终止端口,指向Cd的输入端口it,表示为Cd.it;
l F : 数据类型转换函数,在T?和Td两端口的数据类型不一致但相兼容时作数据
类型的转,数据类型不兼容时则出错。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -