零成本学Arduino单片机之LabVIEW虚拟仪器
0赞

LabVIEW(Laboratory Virtual Instrumentation Engineering Workbench,实验室虚拟仪器工程平台)是由美国国家仪器(NI)公司所开发的图形化程序编译平台,发明者为杰夫·考度斯基(Jeff Kodosky),程序最初于1986年在苹果电脑上发表。LabVIEW早期是为了仪器自动控制所设计,至今转变成为一种逐渐成熟的高级编程语言。
LabVIEW是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是LabVIEW的程序模块,类似于C和BASIC的子函数。
LabVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。用户界面在LabVIEW中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G代码。LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。
Labview官方中文网址:http://china.ni.com/。
Labview中文门户网站:http://www.gsdzone.net/classroom.aspx。
美国国家仪器公司NI 通过LabVIEW软件平台率先引入了特别的虚拟仪表(VI)的概念,用户可通过人机界面直接控制,自行开发仪器。虚拟仪器的引入,引发了传统仪器领域的一场重大变革,使得计算机和网络技术得以长驱直入仪器领域,计算机技术和仪器技术结合起来,从而开创了“软件即是“仪器”的先河。
虚拟仪器包括Labview图形化编程软件和模块化硬件采集设备,Labview提供了两者之间相互通信的多种协议,如VXI、GPIB,RS232和RS485等,其中最基本的通信协议就是RS232串口通信协议。因为Labview支持RS232协议,使得Labview与各种嵌入式微控制器的通信变得很容易实现,Arduino控制器作为嵌入式微控制器的一种,当然可行。Arduino控制器在处理I/O信号方面很在行,但是在人机界面方面的能力,却是软肋,正好Labview可以弥补Arduino这方面的不足。
我的博客文章《基于Labview与Arduino的上下位机的蓝牙通信实验》,网址:http://blog.chinaaet.com/detail/28557.html。介绍了LabVIEW与Arduino结合,通过串口上下位机通信,制作出“温湿度”虚拟仪表,如下图。

Arduino如何在Proteus仿真环境下,与上位机串口通信,我刚刚写得两篇文章进行了详细介绍,这两篇文章为:《零成本学Arduino单片机之串行通讯》,网址:http://blog.chinaaet.com/detail/30674.html。《零成本学Arduino单片机之Processing互动媒体》,网址:http://blog.chinaaet.com/detail/30672.html。
那么LabVIEW软件如何编写串口通信程序呢?看看这篇文章介绍的虚拟电压表项目,就知道了,该项目的全景图如下图所示。

本篇文章的仿真项目任务是:在Proteus仿真图中,用鼠标调节电位计滑动抽头与地之间的电压,Arduino控制器采集这个电压值,正比转换后,通过串口通信,发送到上位机软件LabVIEW。LabVIEW再处理后,在LabVIEW前面板显示电压的数值和波形图。如视频所示。
双击网址,全屏看仿真实验现象,
http://www.tudou.com/v/AytwNvJpY3E/&rpid=96368873&resourceId=96368873_04_05_99/v.swf
Labview虚拟仪器程序由前面板和框图程序组成,前面板是人机交互的界面,界面上有用户输入和显示输出两类控件;框图程序则是用户编制的程序源代码,以定义和控制在前面板上的控件输入和输出功能。下面分别为虚拟数字电压表的前面板和框图程序。

虚拟数字电压表的前面板

虚拟数字电压表的框图程序
LabVIEW前面板的UI设计比较酷,但支撑它的后台框图程序,却很简单,花短短20分钟来设计这个程序足以。在这个框图程序中就包含了LabVIEW串口通信程序段。
要编写串口通信程序,不仅要具备Labview软件,还必须另外安装NI_VISA串口通讯协议驱动。NI_VISA串口驱动是一个免费的Labview附加组件,可以在官网下载到,或者点击网址下载:ftp://ftp.ni.com/support/visa/drivers/win32/4.0/visa400full.exe。
安装完NI_VISA,在框图程序界面右击鼠标,出现函数工具库面板,再点击“仪表I/O”→“串口”,就会出现串口函数VI子面板,如下图。

框图程序是采用NI_VISA“串口”函数来访问和控制串口的。VISA中的“串口”函数库里包含如上图所示的八个子函数VI。本设计用到的三个VISA串口子函数分别是VISA 配置串口、VISA读取和VISA关闭。

VISA 配置串口函数的作用是完成串口参数的初始化设置,包括了串口资源名称,波特率,奇偶校验、数据比特、是否启用终止符等,虚拟数字电压表的框图程序中该函数连接了两个输入变量,它们分别连在串口资源名称和波特率参数端子上,变量值由前面板上的相应控件来设定,另外该函数在“是否启用终止符”的端子上还连接了一个布尔常量,常量值为false,含义是不启用终止符,其它输入参数采用默认值。VISA串口配置函数有两个输出端子,它的图标上面输出端子输出的是串口资源名称,下面输出端子输出的是错误码,输出端子向下游函数传递信息。

