基于LabVIEW的三维曲面绘制.docx
《基于LabVIEW的三维曲面绘制.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的三维曲面绘制.docx(20页珍藏版)》请在冰豆网上搜索。
基于LabVIEW的三维曲面绘制
基于LabVIEW的三维曲面绘制
————————————————————————————————作者:
————————————————————————————————日期:
基于LabVIEW的三维曲面绘制
摘要
LabVIEW是一个具有革命性的图形化开发环境,它内置信号采集、测量分析与数据显示功能,摒弃了传统开发工具的复杂性,从简单的仪器控制、数据采集到过程控制和工业化自动化系统,LabVIEW都得到了广泛的应用。
在LabVIEW开发环境下编写的代码就是G语言代码。
LabVIEW功能强大、灵活方便。
它与C语言、Pascal语言、BASIC语言等传统编程语言有着诸多相似之处,如相似的数据类型、数据流控制结构,程序调试工具,以及模块化的编程特点等,但是二者又有着不同,LabVIEW使用图形语言(即各种图标、节点、结构框图、连线等)编程,界面形象直观,使用的对象都是测试工程师所熟悉的,因此即使是初学者也能够很快的掌握的.本文介绍了LabVIEW技术的发展历程和编程原理,并用该技术完成了三维曲面绘制模块的设计,该模块可以完成任意三维曲面的的绘制,还可以改变透明度等显示参数,使人们从视觉上对该物体有了更加全面的认识。
关键词:
LabVIEW,三维图形,虚拟仪器
LABVIEW—BASEDTHERR—DIMENSIONALSURFACERENDERING
ABSTRACT
LabVIEWisarevolutionarygraphicaldevelopmentenvironment,hebuilt-insignalacquisition,measurementanalysisanddatadisplaycapabilities,weaponsofthecomplexityoftraditionaldevelopmenttools,fromsimpleinstrumentcontrol,dataacquisitiontotheprocesscontrolandindustrialautomationsystems,LabVIEWhavebeenwidelyused.IntheLabVIEWdevelopmentenvironmentistheGcodewrittenlanguagecode。
LabVIEWpowerful,flexibleandconvenient。
ItiswiththeClanguage,Pascallanguage,BASIClanguage,andtherearemanysimilaritiesbetweentraditionalprogramminglanguages,suchassimilardatatypes,dataflowcontrolstructures,debuggingtools,andcharacteristicsofmodularprogramming,buttheybothhavedifferent,LabVIEWgraphicallanguage(node,blockdiagram,connections,etc。
)programminginterface,visualimage,testengineersusetheobjectsarefamiliar,soevenbeginnerscanquicklygrasp.ThisarticledescribesthetechnologydevelopmentprocessandLabVIEWprogrammingprinciples,andusethetechnologytocompletethedesignofthree-dimensionalsurfacerenderingmodule,themodulecanbecompletedanythree—dimensionalsurfacerendering,changethetransparencyofdisplayparameterscanbechangedsothatpeoplefromthevisualobjectshaveamorecomprehensiveunderstanding。
个人收集整理,勿做商业用途文档为个人收集整理,来源于网络
KEYWORDS:
LabVIEW,Three-dimensionalgraphics,VirtualInstruments
目 录
前 言
虚拟仪器是在电子仪器和计算机技术更深层次结合的基础上产生的一种新的仪器模式。
随着计算机技术的发展,尤其是数字信号处理技术的进步,实现各种信号处理功能的软件,其精度越来越高,速度越来越快,在虚拟信号部分,用软件来实现更为方便[1].
LabVIEW提供了功能强大的、丰富的控件、函数、VI等,用于对数据表达和显示。
合理的表达和显示,在程序设计中起着重要的作用,可以使设计的程序更加人性化。
通过对数值型数据的表达与显示和布尔型数据的表达显示的学习,掌握了三维图形和图标的应用。
在虚拟仪器系统中,将信号采集到电脑中,利用软件完成复杂的分析和信号处理工作,LabVIEW提供了大量的分析工具,成熟的算法,方便了对信号的检测和分析。
目前LabVIEW的最新版本为LabVIEW2009,LabVIEW2009为多线程功能添加了更多特性,增加了早期版本没有的一些功能。
本课题使用的是LabVIEW8.5中文试用版。
本课题采用了for循环语句,通过数学公式的输入的运用,表达到三维图形的X,Y,Z轴上,在三维图像上表达出了所需要的图形。
三维图形相对于二维是立体效果,很直观,大大的方便了人们的生活。
第1章虚拟仪器及LabVIEW的介绍
1.1虚拟仪器的概述
1.1.1什么是虚拟仪器
1.虚拟仪器的发展[2]
20多年前,美国国家仪器公司NI(National Instruments)提出“软件即是仪器”的虚拟仪器(VI)概念,引发了传统仪器领域的一场重大变革,使得计算机和网络技术得以长驱直入仪器领域,和仪器技术结合起来,从而开创了“软件即是仪器"的先河.
虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。
PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2。
0以前的版本.对虚拟仪器和LabVIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。
目前LabVIEW的最新版本为LabVIEW2009,LabVIEW2009为多线程功能添加了更多特性,这种特性在1998年的版本5中被初次引入。
使用LabVIEW软件,用户可以借助于它提供的软件环境,该环境由于其数据流编程特性、LabVIEWReal—Time工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层次,是进行并行编程的首选。
专家们指出,在这个计算机和网络时代,利用计算机和网络技术对传统的产业进行改造,已是大势所趋,而虚拟仪器系统正是计算机和网络技术与传统的仪器技术进行融合的产物,因此,在21世纪,虚拟仪器将大行其道,日渐受宠,将会引发传统的仪器产业一场新的革命.
2.虚拟仪器的介绍
所谓虚拟仪器[3],实际上就是一种基于计算机的自动化测试仪器系统。
虚拟仪器通过软件将计算机硬件资源与仪器硬件有机的融合为一体,从而把计算机强大的计算处理能力和仪器硬件的测量,控制能力结合在一起,大大缩小了仪器硬件的成本和体积,并通过软件实现对数据的显示、存储以及分析处理.从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能以摩尔定律(每半年提高一倍)飞速发展,已把传统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来较高的技术更新速率。
虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。
虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理.目前在这一领域内,使用较为广泛语言是美国NI公司的LabVIEW。
虚拟仪器是基于计算机的仪器。
计算机和仪器的密切结合是目前仪器发展的一个重要方向。
简单地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器.随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。
另一种方式是将仪器装入计算机,以通用的计算机硬件及操作系统为依托,实现各种仪器功能。
虚拟仪器主要指的是第二种方式。
1.1.2虚拟仪器的特点及发展前景
虚拟仪器具有传统独立仪器无法比拟的优势,但它并不否定传统仪器的作用,它们相互交叉又相互补充,相得益彰。
在高速度、高带宽和专业测试领域,独立仪器具有无可替代的优势。
在中低档测试领域,虚拟仪器可取代一部分独立仪器的工作,但完成复杂环境下的自动化测试是虚拟仪器的本能,是传统的独立仪器难以胜任的,甚至不可思议的工作[4]。
虚拟仪器的特点主要有:
1、尽可能采用了通用的硬件,各种仪器的差异主要是软件。
2、可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。
3、用户可以根据自己的需要定义和制造各种仪器。
LabVIEW是NI推出的虚拟仪器开发平台软件,它们能够以其直观简便的编程方式、众多的源码级的设备驱动程序、多种多样的分析和表达功能支持,为用户快捷地构筑自己在实际生产中所需要的仪器系统创造了基础条件。
LabVIEW是一个具有革命性的图形化开发环境,在工业测量和控制领域中掀起来了一场变革。
同样它也为各个领域带来了巨大的变化。
它具有功能强大、编程灵活、人机界面友好的特点,在电子测量和仪器工程科学领域中使用非常广泛。
它内置信号采集、测量分析与数据显示功能,摒弃了传统开发工具的复杂性,从简单的仪器控制、数据采集到过程控制和工业自动化系统,LabVIEW都得到了广泛的应用[2]。
由于LabVIEW采用了图形化的编程方法,因此LabVIEW又被称为G语言。
1.2LabVIEW
1.2。
1LabVIEW的简介
LabVIEW是NI推出的虚拟仪器开发平台软件,它们能够以其直观简便的编程方式、众多的源码级的设备驱动程序、多种多样的分析和表达功能支持,为用户快捷地构筑自己在实际生产中所需要的仪器系统创造了基础条件.
LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:
其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑G语言编写程序,产生的程序是框图的形式。
与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数库。
LabVIEW的函数库,包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等等。
LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试[5]。
LabVIEW是具有革命性的图形化开发环境,在工业测量和控制领域中掀起来了一场变革。
同样它也为各个领域带来了巨大的变化.它不仅功能强大、编程灵活,而且人机界面友好。
在电子测量和仪器工程科学领域中使用非常广泛。
它内置信号采集、测量分析与数据显示功能[6],摒弃了传统开发工具的复杂性,从简单的仪器控制、数据采集到过程控制和工业自动化系统,LabVIEW都得到了广泛的应用于工业产品测试、图像检测、无线通信、医疗和生命科学。
同时,NI的PXI平台与LabVIEW图形化编程环境的结合帮助用户实现多通道的同步采集与联合信号分析[7].
由于LabVIEW采用了图形化的编程方法,因此LabVIEW又被称为G语言。
LabVIEW程序称为“虚拟仪器”或简称为VI,一个LabVIEW程序由前面板和程序框图两部分组成.前面板用图形方式模拟传统仪器的操作面板,包含各种控件和指示器,用来为程序提供输入值,并接受输出值;程序框图包含以图形方式表示的程序代码。
1。
2.2LabVIEW的功能
LabVIEW具备强大的信号采集、信号发生、数据分析与存储显示等功能,集开发、调试、运行于一体,广泛应用于测试测量和过程控制系统中.基于LabVIEW软件和计算机的数据采集卡,通过简单编程,可以方便地实现信号的采集和产生、分析和处理等功能,即“计算机+软件”等于仪器,比如:
可以实现虚拟的信号发生器、数据记录仪、示波器等功能,具有设计灵活,界面直观,通用性强.升级方便等特点。
NI公司LabVIEW含有超过600个内置函数[8],其功能包括:
1、从采集到的数据和单一的测量中提取有效信息
2、可以生成、修改、处理并分析信号
3、在应用程序中增添智能化及决策功能
4、可执行在线和离线的信号处理和分析
5、使用通用和专用的工具及附加工具
6、可创建仿真系统,以探讨设计问题或进行概念演
1。
3LabVIEW中文版的开发环境
LabVIEW8。
5中文版是NI公司推出的LabVIEW图形化开发平台的新版本,提高了设计、控制和测试领域工程师的效率,同时也包括了控制和设计中用到的各种模块[9].
1.3。
1创建一个新的VI
正确安装LabVIEW8.5后,执行window命令【开始】/【程序】/【NationalInstrumentLabVIEW8.5】,启动LabVIEW,启动界面如图1-1所示[13].
图1—1LabVIEW启动界面
在【文件】列表栏中单击【新建VI】分栏,创建一个新的VI。
然后系统会自动打开前面板窗口和程序框图设计窗口,切换到前面板窗口下,如图1—2所示。
图1-2前面板界面
图1-3程序设计框图界面
程序设计框图窗口如图1—3所示.
这样一个空白的VI就产生了。
虚拟仪器不仅仅是让用户在前面板上放置了相应的输入和输出等对象(即前面板对象),它还需要一个与之相配套的程序框图;前面板的设计类似于实际生活中可以看到的仪器界面,而程序框图则是仪器内部信号处理的过程。
1.3。
2LabVIEW前面板窗口
前面板由输入控件和显示控件组成.输入控件用来模拟仪器的输入装置,为VI的程序框图提供数据,主要包括旋钮、按钮、转盘等等。
显示控件模拟仪器的输出装置,用于显示程序框图获取或生成的数据,有图表、指示灯等.
前面板设计窗口主要包括菜单栏、工具栏和前面板设计区3部分[14],如图1-4所示。
其中,菜单栏主要通过菜单命令实现VI的创建、打开、编辑、需求帮助等操作;工具栏则为常用的菜单命令提供了快捷的运行方式,主要包括程序的运行、中断、停止的设置,以及前面板设计区控件的排列方式等;前面板设计区是供用户进行设计的区域,VI中的输入/输出控件对象主要放在这个区域.
图1—4LabVIEW程序前面板
1.3。
3LabVIEW程序设计框图窗口
在程序框图设计窗口下,它同前面板一样有菜单栏、工具栏和程序设计区[15].每当在前面板上放置一个器件时,相应的在程序设计框图中就产生一个与之相对的节点。
当然,程序设计框图有一个和前面板不同的地方:
它可以在程序框图设计区放置各种信号和数据等这类单元。
当前面板中的控件放置完毕的时候,我们可以在程序设计框图中看到这些控件单元是分立的,所以要调整他们的位置使其看起来比较美观。
这时,要造程序框图设计窗口下,选中要调节的单元,按住左键拖动光标,可以看到控件会随光标的移动而改变在程序设计区的位置。
到适当的位置后,松开左键,即可移动到当前光标的位置。
由于在程序设计框图窗口下,各个控件和一些信号数据都是分立的,它们之间不能有效地传递和交换信息,因此要把它们正确的连接起来,即连线。
连线用于连接程序框图中各个节点元素的端口,完成节点间数据的传递和交换。
第2章该设计所涉及到的模板介绍
2。
1前面板空间类
在前面板设计窗口下,打开【控件】/【新式】/【图形】控件选板。
移动光标到“三维曲面图”控件上,单击鼠标右键选择该控件,然后移动光标到前面板设计区,可以看到光标上粘附着一个3D曲面图控件。
执行前面板【窗口】/【显示程序框图】菜单命令,切换到程序框图设计窗口下,在程序框图设计区可以看到该控件的节点,创建的3D曲面如图2-1所示。
从图中可以看出,3D曲面的节点包含了两部分,即“3Dsurface”对象和“3D曲面”VI[10]。
(a)3D曲面图控件(b)3D曲面图节点对象
图2—13DParametricGraph的空间结构
2。
2程序框图内的各单元
2.2.1for结构
Labview有许多我们常用的循环,有while,for等,本次仿真采用的的是for循环语句[12].
将连接到总数(N)接线端的值n作为执行次数的子程序框图。
计数接线端(i)可提供当前的循环总数,取值范围是0到n—1。
图2-2for循环结构示意图
创建For循环后,可使用移位寄存器将值从上一个循环传递到下一个循环.如将数组连接到For循环,启用自动索引可读取和处理数组中的各个元素。
也可配置For循环使其返回由循环生成的值组成的数组,启用自动索引.计数接线端(i)可提供当前的循环总数,首次循环的该值为零。
如循环计数超过2147483647或231—1,计数接线端将保持值为2147483647,不会改变.如需保存大于2147483647的循环次数,可使用表示更大范围整数的移位寄存器.可为For循环添加条件接线端,在出现布尔条件或发生错误时停止循环。
带有条件接线端的For循环在条件发生时或所有循环完成时才停止执行。
右键单击For循环边框,在快捷菜单中选择条件接线端,为For循环添加条件接线端。
运行VI前,必须为For循环的条件接线端连线,同时需连接计数接线端或启用输入数组的自动索引。
本文为互联网收集,请勿用作商业用途个人收集整理,勿做商业用途
2.2。
2数值函数
数值函数有好多种,例如加、减、乘、除等,本课题主要采用了“加”和“乘”两种数值函数.
1、加
加,即和的运算。
图2—3加的节点示意图
x:
可以是标量数字、数字数组或簇、数字簇数组或时间标识等。
y:
可以是标量数字、数字数组或簇、数字簇数组或时间标识等.
x+y:
是x与y的和.
2、乘
乘,即乘法的运算。
图2—4乘的节点示意图
x可以是标量数值、数值数组或簇、数值簇组成的数组等多种数据类型。
y可以是标量数字、数字数组或数字簇、数字簇数组等.
x*y是x与y的积.
3、数值常量
代表一个数值。
4、将数值转换为双精度浮点数
图2-5数值转换的节点示意
数字可以是标量数字、数字数组或簇、数字簇数组或时间标识等。
双精度浮点与数字的数据类型结构一致。
2。
2。
3三角函数
1、正弦函数
图2—6正弦函数的节点示意图
x可以是标量数值、数值数组或簇、数值簇组成的数组等多种数据类型。
sin(x)的数值表示法与x一致。
2、余弦函数
图2—7余弦函数的节点示意图
x可以是标量数值、数值数组或簇、数值簇组成的数组等多种数据类型.
cos(x)的数值表示法与x一致。
第3章三维曲面图形设计
3。
1设计的目的
运用For循环语句,使生成所需要的三维图形;熟练掌握各个节点和端口的使用。
3。
2操作步骤
3。
2.1三维环的设计
1、创建一个新的VI,切换到前面板设计窗口下,点击鼠标右键出现控件选板,有【图形显示控件】,在前面板上放置一个“三维参数曲面”控件,如图3-1所示,这样将会在程序框图中显示对应的图形,可根据需要适当调整其大小[11].
图3—1三维参数曲面
2、切换设计窗口到程序框图设计区,在空白处单击鼠标右键,在函数模板上找【编程】,把鼠标放到上面,显示【结构】,找到for循环语句,将其拖到程序框图下,并确定其大小,并在N的位置上打击鼠标右键创建常量,输入值100。
本次需要两个for循环,拖两个出来,其中N的值都是100。
3、在函数模板上找到【数学】/【数值】/【转换成双精度浮点数】,将其放到程序框图内.
4、同样的在函数模板的【算数与比较】上找到【Express数值】,将会显示加,乘的符号,将其拖到程序框图上。
如若需要常量,可以在这些符号上单击鼠标右键,创建常量,并输入相应的常量值。
5、在函数模板上【算数与比较】/【Express数学】/【Express三角函数】上找到所需的正弦函数和余弦函数,将其拖到程序框图上。
6、如图3-2所示将个器件的节点连起来。
图3-2程序框图一的设计
7、切换到前面板窗口,单击工具栏上程序运行按钮,查看程序运行结果,并调整不同的视角进行观察。
其中的一个运行界面如图2-3所示。
8、对设计的VI进行保存.
由上图分析我们可得三维图形的三个三量分别是:
X=(cos0。
5i+5)*cos0.5j
Y=(cos0。
5i+5)*sin0。
5j
Z=sin0.5i
其中i,j都是整数,都是0~99的数。
其中当i为某一固定值时,相应的Z,(cos0。
5i+5)也为固定的,这样得到的X的平方和Y的平方就为一固定值,大小就等于(cos0。
5i+5),这样三维图形就变成了二维的,它的形状也就是图3-3的横截面。
图3—3程序运行的结果
3.2。
2三维球的设计
1、创建一个新的VI,切换到前面板设计窗口下,点击鼠标右键出现控件选板,有【图形显示控件】,在前面板上放置一个“三维参数曲面”控件,如图3-1所示,这样将会在程序框图中显示对应的图形,可根据需要适当调整其大小.
2、切换设计窗口到程序框图设计区,在空白处单击鼠标右键,在函数模板上找【编程】,把鼠标放到上面,显示【结构】,找到for循环语句,将其拖到程序框图下,并确定其大小,并在N的位置上打击鼠标右键创建常量,输入值100。
本次需要两个for循环,拖两个出来,其中N的值都是100。
3、在函数模板上找到【数学】/【数值】/【转换成双精度浮点数】,将其放到程序框图内.
4、同样的在函数模板的【算数与比较】上找到【Express数值】,将会显示加,乘的符号,将其拖到程序框图上。
如若需要常量,可以在这些符号上单击鼠标右键,创建常量,并输入相应的常量值。
5、在函数模板上【算数与比较】/【Express数学】/【Express三角函数】上找到所需的正弦函数和余弦函数,将其拖到程序框图上.
6、如图3-4所示将个器件的节点连起来。
图3—4程序框图设计二
7、切换到前面板窗口设计窗口,单击工具栏上程序运行按钮,查看程序运行结果,并调整不同的视角进行观察。
其中的一个运行界面如图3—5所示。
8、对设计的VI进行保存。
由上图分析我们可得三维图形的三个参量分别是:
X=10cosi*sinj
Y=10sini*sinj
Z=10cosj
其中i,j都是整数,是0~99的数.
当j为某一定值时,相应的Z,sinj都是定值,这样就成了一个半径为10sinj的圆,图也又三维的变成了二维图形。
图3-5程序运行的结果
结论
本课题完成了三维曲面图形的绘制,从上面的两个例子中我们可以看到了它运用了数学的方法,在LabVIEW软件上运行,使三维曲面图形的绘制更加的方便