器材:开发板一块(型号以Arduino Uno为例)、LabVIEW2017安装包、破解工具NI License Activator。
获取方法:Arduino开发板可以自己打板焊元件也可以直接淘宝购买(国产的几十块钱,意大利原装的需要一两百);LabVIEW2017安装包在(Index of /evaluation/labview/ekit/other/downloader (ni.com))网址获得(可以通过浏览器搜索功能,快捷键ctrl+F,搜索2017LV-WinChn.exe,点击即可下载);破解工具NI License Activator可通过百度网盘获取(链接:https://pan.baidu.com/s/1dwsyMuX8IQRYNWeB_cZoGQ 提取码:hx2v,如果链接失效,可以网上搜索)。
软件安装(以LabVIEW2018为例,其他版本类似):
(1)双击 ,进入解压软件界面,如图1-1。
图1-1 【解压LabVIEW2018】 |
(2)解压完成(如图1-2)后,自动启动setup.exe,如果未启动,请到第一步的解压路径中手动双击setup.exe。前面的安装过程直接选择下一步即可.
图1-2 【解压完成】 |
(3)这步不需要填入序列号,直接下一步,如图1-3。
图1-3 【无须填入序列号】 |
(4)选择合适路径安装,安装内容默认即可,如图1-4。
图1-4 【安装路径和安装内容】 |
(5)取消产品通知,接受许可,然后等待安装完成,如图1-5。
图1-5 【无须通知,接受许可】 |
(6)等待安装过程中,会询问如图1-6所示的问题,选择不需要支持即可,最后可以看到安装完成的通知。
图1-6 【安装问题和安装完成】 |
(7)安装完成后,先不着急运行软件,双击 ,将所有的模块都右击-Activate,Activate成功的软件或者工具包前面的方框将显示绿色,否则显示白色,如图1-7。
图1-7 【激活软件】 |
至此,LabVIEW2018中文版就安装完成,可以正常使用。
二、 连接LabVIEW和Arduino本节将详细地介绍Arduino与LabVIEW的连接方式,主要包括LabVIEW Interface for Arduino方式、串口控制方式、无线串口方式和Ethernet方式,并给出详细的实验示例,包含实现原理和具体代码其实,从本质上来说,前三种方式都是通过串口实现Arduino与LabVIEW的连接的,而且需要使用VISA插件实现LabVIEW串口编程,但是三者各有特点:
(1)LabVIEW Interface for Arduino方式,只需要将给定的Arduino程序烧写进Arduino控制器,然后完成LabVIEW部分的编程即可,由于不涉及Arduino程序设计,只使用官方给出的Arduino函数库,Arduino的传感器选用上有很大的局限性,可扩展性较差。
(2)串口控制方式,需要完成Arduino与LabVIEW两部分的编程,使用USB to Serial电缆连接,Arduino部分有着很好的可扩展性,两者需要制定合适的通信协议。
(3)无线串口方式,使用串口无线数传模块替代串口连接电缆线,实现了Arduino与LabVIEW的无线连接,扩展了Arduino与LabVIEW的应用范围,而且可以通过选择不同类型和不同功率的无线传输模块,以实现近距离、中距离和远距离的无线数据传输。
与前三种方式使用串口来实现Arduino与LabVIEW的连接不同,Ethernet方式采用网络编程来实现二者的连接。Arduino端需要采用网络扩展板,并连接至路由器上,而不是仅仅通过串口;LabVIEW端需要使用TCP协议函数库来完成程序设计,而不是使用VISA插件来实现串口编程的。与其他三种连接方式相比,Ethernet方式将Arduino与LabVIEW都接入了网络中,极大地扩展了应用范围;由于互联网无处不在,若将二者都接入互联网中,则可以通过互联网来构建基于Arduino与LabVIEW的远程测控系统。
三、LabVIEW Interface for Arduino方式LabVIEW Interface for Arduino Toolkit(LIAT)是NI公司(美国国家仪器公司)为Arduino开发的接口工具包,借助于这个工具包,可以很方便地使用LabVIEW软件与Arduino控制器实现联合开发。
目前,LIAT支持LabVIEW2010及更高版本,提供的函数库中传感器有热敏电阻、光敏电阻、8段数码管、RGB灯、舵机等。在LabVIEW中使用打开、读写、关闭等库函数,就可以实现对Arduino控制器的数字、模拟、PWM、I2C、SPI信号的读取与控制。但是,LIAT仅支持Arduino Uno、Arduino2009和Mega2560控制板,而且库函数的数量有限,传感器类型较为单一,存在一定的局限性,极大地限制了对Arduino的开发使用。当使用的传感器不是官方函数库中已有函数的传感器时,就无法使用LabVIEW对Arduino进行交互控制。
由于LabVIEW Interface for Arduino只需要对LabVIEW编程,而不需要对Arduino编程,甚至不需要底层硬件知识,适合了解LabVIEW编程而不懂Arduino编程的玩家或入门爱好者,由于其简单、易操作,所以也不失为新手入门的一个路径。
下面介绍该方法的操作方式
(1)LIAT的下载与安装。想要利用LIAT函数库来实现LabVIEW软件与Arduino控制器的交互需要安装三个软件:1)2010及以上版本的LabVIEW软件;2)与LabVIEW软件配套的VI Packge Manager;3)LabVIEW Interface for Arduino Toolkit。LabVIEW2017版本及之后的版本都已经将VI Packge Manager集成进去,不需要额外安装,所以只需要打开VI Packge Manager 搜索Arduino找到LabVIEW Interface for Arduino即可完成安装。
(2)LIAT函数库及使用。当LabVIEW安装LabVIEW Interface for Arduino工具包之后,在前面板和程序框图中的函数栏目中就会出现Arduino控件和操作函数库。Arduino控件包含模拟I/O、数字I/O、Pin Mode、Board Type和连接方式等,如图3-6所示;操作函数库包含有Arduino INIT、Arduino CLOSE、Low Level、Sensors、Examples等,如图3-7所示。其中,Arduino INIT和Arduino CLOSE是每个程序必备的,即与Arduino控制器建立连接,完成对Arduino预先设定的操作之后,断开与Arduino控制器的连接,释放Arduino控制器的串口资源。
12.2.2 串口控制方式
本节将采用有线串口连接的方式实现Arduino与LabVIEW的连接,并介绍LabVIEW VISA串口编程。VISA的下载地址是(下载NI-VISA - NI),下载版本选择最低的5.4即可 。
VISA是虚拟仪器软件体系结构(Virtual Instruments Software Architecture)的缩写,实质上是一个I/O口软件库及其规范的总称。VISA是应用于仪器编程的标准I/O应用程序接口,是工业界通用的仪器驱动器标准API(应用程序接口),采用面向对象编程,具有很好的兼容性、扩展性和独立性。用户可用一个API控制包括VXI、GPIB及串口仪器在内的不同种类的仪器。它还支持多平台工作、多接口控制,是一个多类型的函数库。
在LabVIEW中利用VISA节点进行串行通信编程。为了方便用户使用,LabVIEW将这些VISA节点单独组成一个子模块,共包含8个节点,分别实现初始化串口、串口写、串口读、中断以及关闭串口等功能。安装VISA之后,在程序框图界面上右击鼠标,依次选择“函数”→“仪器I/O”→“串口”,即会出现如图3-80所示的串口函数。
在LabVIEW中,普通串口通信的基本步骤分为3步:
(1)串口初始化,利用VISA Configure SerialPort节点设定串口的端口号、波特率、停止位、校验位、数据位。
(2)读写串口,利用VISA Read节点和VISA Write节点对串口进行读写。
(3)关闭串口,停止所有读写操作,释放串口资源。
按照串口编程的3个基本步骤,图3-85给出了典型的串口读写程序框图。首先,对所选择的串口进行配置(初始化),然后将需要发送的数据写入串口,等待合适的时间,接着判断出串口中数据的字节数并从串口中读取数据,最后关闭串口,释放串口资源。
实验:Arduino与LabVIEW串口通信的实现
实验分为两个部分:1)LabVIEW控制Arduino板载LED:LabVIEW发送开关命令,Arduino接收开关命令,并控制板载LED灯的亮灭;2)虚拟电压表:Arduino测量电压并通过串口发送,LabVIEW接收电压值并显示在前面板的仪表板上。
今天先完成实验的第一部分:LabVIEW控制Arduino板载LED
(1)实验目的
通过LabVIEW前面板上的开关按钮实现对Arduino Uno控制板上13号管脚上LED灯开关控制,实现LabVIEW与Arduino单向数据传输(由LabVIEW向Arduino控制板发送数据)。
(2)硬件连接
本实验只需要使用USB电缆将Arduino Uno控制板连接至电脑USB端口即可。
(3)Arduino程序设计
Arduino Uno控制器通过串口获取LabVIEW上位机发来的命令码,判断接收到的命令是为“打开”命令还是“关闭”命令,并执行“打开”或“关闭”命令。程序代码如下:
byte comdata; // 定义变量,用于存放串口读取的数据
int LED = 13; // 定义数字口13为LED的控制引脚
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // 初始化串口波特率为9600
pinMode(LED, OUTPUT); // 将LED控制引脚设置为输出
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available() > 0) // 不断检测串口缓冲区是否有数据
{
comdata =Serial.read(); // 从串口缓冲区读取一个字节的数据
if(comdata == 0x01) // 判断是否为关灯命令
{
digitalWrite(LED, LOW); // 关闭LED灯
}
if(comdata ==0x02 ) // 判断是否为开灯命令
{
digitalWrite(LED,HIGH); // 打开LED灯
}
}
}
由以上程序,可以知道Arduino程序的基本框架由setup()和loop()两部分组成。在Arduino控制器中程序运行时将首先执行setup()函数,然后执行loop()函数,并且不断循环执行loop()函数。每次Arduino上电或重启后,都会首先执行setup()函数,而且setup()函数只运行一次。setup()函数用于设置引脚的输入/输出类型、配置串口、引入类库文件、外围器件使用前的初始化等。loop()函数在程序运行过程中不断地循环,根据所编写的程序,完成指定的输入/输出功能。
(4)LabVIEW程序设计
LabVIEW通过事件结构来响应“打开”和“关闭”的指令,分别发送不同的指令,并通过串口电缆发送至Arduino Uno控制板,Arduino Uno控制板通过读取串口缓冲区中的数据,然后分析数据并执行“打开”或“关闭”的动作。
LabVIEW软件的前面板如图3-86所示。
LabVIEW程序框图如图3-87和图3-88所示。
分析一下这个LabVIEW的程序框图程序,该程序由函数选板->“编程”->“结构”中的 分割成三个部分,这三个部分也就对应上面介绍的串口通信的三个步骤:(1)VISA配置串口 ,完成串口初始化,LED灯初始化为关闭状态;(2)While循环结构中放置了一个事件结构,该事件结构中有两个分支,一个是打开按钮值改变时控制LED灯亮起,一个是关闭按钮值改变时控制LED灯关闭。这个控制由VISA写入 将“2”和“1”分别发送给Arduino;(3)最后一部分就是用VISA关闭 将串口连接关闭。简易错误处理器 显示错误信息。“2”和“1”的转换操作可以通过LabVIEW提供的即时帮助和LabVIEW帮助手册观察一下VISA写入 所需要的输入,就可以理解“2”和“1”的转换操作是怎么一回事了。
找了很久也没找到《Arduino与LabVIEW开发实战》中这里的配套程序,想想还是自己敲了。之前学了不少编程语言,编程语言基本要素差不多一样,不想再学一遍LabVIEW的了,就连蒙带猜地观察图3-87和图3-88,把程序给捣鼓了出来,明天和实验的第二部分一起上传到百度网盘吧,和小伙伴们分享一下。敲完这个程序终于让我有种恍然大悟的感觉,LabVIEW是可以用的。但是对比起文本编程还是感觉勉勉强强,各有各的好吧,针对人群不一样,而且LabVIEW这是把上位机编程也完成了,而且是可视化的那种,和普通的串口调试助手还不一样。
作者: 都白白, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3968342.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论