LabVIEW小组
直播中

魏紫瑜

7年用户 135经验值
私信 关注
[Labview经验]

基于LabVIEW的仪器串行控制智能小车

labview 8.5常用功能与编程实例精讲

10.4  仪器串行控制智能小车

仪器串行控制就是用串行通信的方式控制系统。串行通信是一种重要通信方式,它广泛应用于各类场合。下面通过具体的实例来讲解。
10.4.1  实例内容说明

本例所讲解的例子为智能玩具小车在LabVIEW程序的控制和监视下自动运行的系统。首先在系统中实现对小车的监视,再对小车进行控制,让其在控制下按要求运动。这样就实现了系统的自动化运行。
1.仪器的控制

仪器的控制就是通过上位的控制,让下位能按要求执行有关的动作。在LabVIEW中经常用的是对下位的监视、数据采集分析等。这里不但对下位进行了监视,还进行了一些控制。这也是对LabVIEW应用的一种创新。
用LabVIEW实现仪器控制有许多种方式,这里用到的是PID控制。这种控制的最大好处是能对系统的情况作出较为稳定的决策。本系统采用单闭环、双控制器的控制策略,其中双控制器为模糊控制器和PID控制器,分别控制小车的速度和舵机角度,另外有一个异常处理器,用来处理小车可能出现的异常情况。其中只有PID控制是在LabVIEW中应用的,其他控制算法是在下位上用单片机控制实现的。本节给出的是将单片机和LabVIEW通信结合实现的实例,这里侧重讲解的是上位LabVIEW编程及对仪器的控制这一部分内容。
2.USB串行通信

USB是英文Universal Serial Bus的缩写,含义是“通用串行总线”。它不是一种新的总线标准,而是应用在计算机领域的接口技术。USB用一个4针插头作为标准插头,采用菊花链形式可以把所有的外设连接起来,最多可以连接127个外部设备,并且不会损失带宽。USB需要主机硬件、操作系统和外设三个方面的支持才能工作。目前的主板一般都采用支持USB功能的控制芯片组,主板上也安装有USB接口插座,而且除了背板的插座之外,主板上还预留有USB插针,可以通过连线接到机箱前面作为前置USB接口以方便使用。
本例中用USB的好处是操作方便,在任何计算机上都可以实现。不像RS232在一些台式机和笔记本上就没有,会产生很多的不便。
3.智能小车

在本例设计中,小车是利用电动玩具车改装得来的。在下位装了一个单片机,用来控制小车的运行速度及方向。同时也连接了一个无线接收模块,是和上位机的USB无线模块配套的。这样就实现了小车的无线监控。
下位由蓄电池供电,提供动力和单片机等电子器件的能量。上位只在计算机的USB上连接一个无线收发模块,并在计算机上装LabVIEW软件。这样就构成了一个完整的仪器串行控制智能小车系统。
10.4.2  开发思路分析

在本例中只讲解上位的开发过程,也就是USB通信和LabVIEW软件编程这一块。在开发过程中,先进行USB设置,包括USB驱动安装,再进行整个系统的编程,包括系统管理界面、监视界面以及最后的系统登录界面的设计。
USB设置要用到VISA控件,所以要安装VISA组件包。整个程序控制界面中,用到了PID控制算法,因此还要安装PID组件包。在编程前先安装所有用到的这些组件工具,再从最小的模块开始编程。
10.4.3  具体开发过程

下面将详细介绍VISA驱动的安装及编程过程。本例的界面开发框架如图10-83所示。

图10-83  程序开发框架
1.VISA驱动安装

VISA是Virtual Instrument Software Architecture的简称。它是一个用来与各种仪器总线进行通信的高级应用编程接口(API),不受平台、总线和环境的限制。USB是一种串行通信方式,每个USB设备都有各自的指令集,可以使用NI-VISA 的读写功能向仪器发送这些指令,并读取仪器的反馈。用户可向仪器制造商索要仪器的有效指令清单。
VISA的安装及USB的配置步骤如下:
(1)将VISA驱动光盘放入计算机光驱,系统将自动打开安装界面,并自行加载一些光盘内容,如图10-84所示。
(2)加载完后,单击“Next”按钮,进入安装路径选择界面,如图10-85所示。

图10-84  VISA启动                       图10-85  选择VISA安装路径
(3)默认安装路径是在C盘,用户自己可以按需要调整,然后单击“Next”按钮,进入组件选择界面,如图10-86所示。
(4)按需要选择要安装的组件,单击“Next”按钮,进入软件许可协议界面,如图10-87所示。

图10-86  选择组件                            图10-87  许可协议
(5)选择“I accept the license Agreement(s)”,此时“Next”按钮变为可用,并单击此按钮进入安装提示界面,如图10-88所示。
(6)单击“Next”按钮,出现安装界面,显示安装进度条,如图10-89所示。
(7)安装完成后,出现安装成功提示界面,如图10-90所示。

图10-88  安装提示                             图10-89  安装进度
(8)单击“Finish”按钮后,出现对计算机的操作选择对话框,一般选择第一项“Restart”,重启计算机即可,如图10-91所示。
               
图10-90  安装成功                                  图10-91  选择重启计算机
2.VISA配置

安装好VISA后,必须对VISA进行配置,才能在LabVIEW中调用USB通信模块。下面讲解VISA和USB配置的具体过程。
(1)单击“开始”|“所有程序”|“National Instruments”|“VISA”|“VISA Driver Development Wizard”命令,弹出“VISA Driver Development Wizard”设置界面,如图10-92所示。
(2)在单选框中选择“USB”,单击“下一步”按钮,进入VISA DDW 基本设备信息设置窗口,如图10-93所示。

图10-92  VISA驱动设置                   图10-93  VISA USB 信息设置
(3)在上图所示的界面中,主要是对USB ID和Code进行设置,这是通信中对USB的标识。这两组数据可以从要应用的USB器件上查找到,若上面没有标注,也可以向厂家询问。设置好以后单击“下一步”按钮,进入INF信息生成界面,如图10-94所示。
(4)可以在图10-93所示的界面中修改INF文件的名称和地址,修改完以后单击“下一步”按钮,出现确认对话框,如图10-95所示。
   
图10-94  生成INF信息                           图10-95  信息确认
(5)查看生成信息是正确的后,单击“是”按钮,出现组件选择界面,单击“确定”按钮即可完成USB的所有设置工作。
(6)下面就可以安装生成的INF文件,选择生成的INF文件夹,将其复制到操作系统的INF文件夹中。在Windows XP操作系统中,这个文件夹的位置通常是:C:WINDOWSINF。由于INF文件夹可能是隐藏的,因此需要将文件夹选项改成“显示隐藏文件”。复制到系统INF文件夹后,单击鼠标右键,选择“安装”命令即可开始安装。
3.PID安装

PID模块在安装LabVIEW时并没有被一起安装,需要用户自行安装,下面对PID的安装进行详细叙述。
(1)插入PID安装盘,系统将自动运行安装程序并弹出安装界面,如图10-96所示。
(2)单击“Next”按钮,进入安装组件选择界面,如图10-97所示。

图10-96  PID安装界面                          图10-97  组件选择
(3)在图10-96中可以看到有两个组件可以安装。通过下拉选项执行安装选择,完成后单击“Next”按钮,进入信息确认对话框,如图10-98所示。
(4)单击“Next”按钮,进入安装进度界面,如图10-99所示。

图10-98  信息确认框                         图10-99  安装进度
(5)安装完成后,单击“Finish”按钮,安装完成,如图10-100所示。

图10-100  安装完成
4.采集模块编程

将采集到的数据传送到USB后,要从USB上读取数据以便分析和处理。下面将讲解从USB读取数据以及对端口界面进行设置的编辑。
(1)从端口读取数据时,要进行VISA设置,所以要放置一个VISA对USB的操作控件,主要用于打开VISA,写入USB,读出USB等。下面先配置VISA端口,打开VISA端口,如图10-101所示。
端口的配置包括设置VISA资源名称、数据位数、停止位等,并设置对前面板的装饰,将对各控件放置整齐,并加一个底框着色。通信端口设置完成后前面板界面如图10-102所示。
   
图10-101  VISA端口配置                图10-102 “通信端口设置”界面
(2)然后进行端口的读写操作。本例中对端口的读写是通过一个层叠式顺序结构来控制的。当VISA端口打开后,先读取初始化值,并通过“字节数组至字符串转换”函数对初始化值转换后传送到分析处理模块,再显示数据,在进行分析决策后发出指令。
这一步只设置VISA对USB的读写转换及操作。在顺序结构的第0帧中设置为对USB端口的读取,如图10-103所示。
在第1帧中实现对USB端口的写入,它主要是把要发送的一些内容写入端口。VISA函数读写操作完成后,要关闭VISA函数,以节省系统资源。如图10-104所示。

        图10-103  VISA读取USB数据                  图10-104  VISA写入程序
5.主界面编程

下面详细讲解主体界面编程,主要涉及一些常用控件的应用,以及一些装饰控件的布局安排技巧。
(1)编写小车参数设置界面。按控制需要创建一个界面,系统运行后在此界面中用户按要求写入参数后就可以控制下位小车运行。先在前面板上放置一些要用的控件,再对其进行装饰和布局安排。本例用到6个数值控件,用于输入各类信息。中间有一个旋钮,用来控制小车报警的音量。两个按钮分别用来控制小车的夜间行驶和是否需要报警,还有一个布尔控件用来整体控制小车的运行状态。前面板界面如图10-105所示。

图10-105  小车控制界面
(2)编写监控界面。为了能对小车的运行情况进行监视,要从下位读取数据并处理,让界面上显示出小车的基本运行情况。我们先放置好控件,再进行布局和装饰。监视界面上最多的是指示灯,用来指示各运行状态;还有一个速度转盘,用来形象地显示速度;最后用一个波形图显示小车运行时偏离正常轨道情况。监控界面如图10-106所示。

图10-106  监控界面
(3)查看历史记录。这个界面主要用来查看系统运行的记录。系统运行时单击“读取“按钮,就可读出记录,如图10-107所示。
(4)系统退出,这是操作完后本系统的退出界面,如图10-108所示。

图10-107  读取记录                        图10-108  退出系统
6.监视程序

监视程序是本系统的首要功能。做好前面板后,就要对其后面板进行编程。在前面板找到连线控件,双击以转到程序框图界面,并显示接线端。
(1)先对从USB上读取的数据进行分解,不同的字段代表不同的控制对象。对字符的识别用“截取字符串”函数来实现。此函数通过“函数”|“编程”|“字符串”|“截取字符串”命令调用。截取特定长度的字符串后,调用一个把字符串转换为数字的子程序,如图10-109所示。
(2)在小车的参数设置中,包括一个小车电量最低限设置。它用来控制小车在电量低于此值时执行相关动作,在监控界面有一个小车的电量指示灯。这一块的程序框图如图10-110所示。低电量设置值在这里设置为局部变量,主要是考虑到这个值在后面要输出到USB。
       
      图10-109  字符分节及转换                    图10-110  电量设置模块
(3)对小车速度的控制及监视,是一个比较重要的模块。先对速度进行比较,判断小车是前进还是后退,再显示速度和里程。里程通过速度与运行时间相乘而得到,这部分的程序如图10-111所示。

图10-111  速度控制
(4)设置公式节点,这里主要是处理对小车进行控制的逻辑。它可以通过“函数”|“编程”|“结构”|“公式节点”命令打开。在公式节点中编程要符合C语言结构和语法。你可以理解为是在C界面编程,只不过它的变量是在公式节点的边框上定义。输入与输出变量通过右键单击公式节点的边框,选择“添加输入”或“添加输出来”添加,如图10-112所示。
添加好输入和输出变量后,就可以编程了,公式节点的定义及编程如图10-113所示。
        
         图10-112  添加输入输出                图10-113  公式节点的应用
从图10-113中可以看到,读取的字符串被转换后送到公式节点作为输入,在公式节点内处理后再输出,进行显示和PID控制。同时程序还通过路径传感器传来的数据判断小车偏离正常轨道的情况,并通过图表显示。
(5)为了让系统在运行出错后能自动停止,这里加一个条件结构来与停止按钮并列工作,如图10-114所示。
(6)对端口的写入操作,这里主要是用一个数组把各个命令参数组合在一起。同时这部分还用到了一些局部变量,如图10-115所示。

图10-115  USB输出量
在图中有一个布尔按钮,用来选择系统的工作状态。此按钮拨到左边时,系统工作在自动控制模式,系统会输出这些设置量;拨到右边时,系统输出全是0,小车由下位的单片机控制,上位只作监视。
7.文件操作

本程序中,要对小车运行中出现地异常情况或故障情况进行记录,这样方便对系统进行维护和修理;同时也要读取记录,以便随时查看。这里采用文本文件进行记录。文本文件最大的好处是能方便地用多种方式打开,存储容量大,占用空间小。下面分别讲解文件的写和读取过程。
(1)文件写操作
写文本文件前,先要打开一个文本。因为此文本文件和程序放置在同一个文件夹中,所以先要通过“函数”|“编程”|“文件I/O”|“文件常量”|“当前路径”命令调用“当前路径”函数;再通过“函数”|“编程”|“文件I/O”|“拆分路径”命令调用“拆分路径”函数。
应用“当前路径”函数得到当前执行程序的路径,并在此路径上添加一个当前时间作为文件名,然后以此文件名创建一个新的文件,写入相应的数据即可。文本写入函数通过“函数”|“编程”|“文件I/O”|“写入文件”命令调用。最后要关闭文件。这部分程序如图10-116所示。

图10-116  写入文本
(2)文件读取
在查看记录时,要读取文本文件中的值。这与前面的写操作类似,只不过写文本是把数据送到写控件;读文本是把读控件得到的数据送到文本框显示,其他的完全一样。文件读取部分的程序框图如图10-117所示。

图10-117  读文本文件
8.子VI操作

子VI操作就是在LabVIEW中调用另一个VI,被调用的那个VI称为子VI。在本程序中,调用了一个子VI处理字符串。
(1)先创建一个字符串处理VI,这个VI就是被调用的VI,它实现对字符串的转换。这个子VI在前面板的控件较少,只有三个字符串输入和输出框,如图10-118所示。
(2)进入后面板进行程序设计。先把输入的字符串通过“字符串至字节数组转换”函数转换成数组,然后通过“索引数组”函数获取数组的第1个值,最后通过“十六进制数字符串至数值转换”函数和“十进制数字符串至数值转换”函数将此值转换为十六进制字符串和十进制字符串。后面板程序如图10-119所示。
           
        图10-118  ASCII码转换                    图10-119  子VI的程序框图
(3)在前面板设置子VI被调用时的端口。先在前面板右上角的程序图标上右键单击鼠标,此时会弹出下拉列表,如图10-120所示。
然后在下拉列表中选择“显示连线板”命令,图标自动变化为连线板,而且连线板上面会出现不同的格子,代表可以用的几个端口。这种端口的数量可以通过右键单击增加或减少,具体方法是右键单击连线板,选择“添加接线端”或“删除接线端”命令。
设置好端口个数后就可以进行连线了。将光标放到接线板上某一小格中,光标将自动变为接线状态,单击后当前格会变黑,此时再把光标移动到某一控件上单击即可。完成后右上角接线板上对应的小格就会变为粉色,表示这些端口设置成功,以后就直接可以在这些端口上接线。
对子VI调用前要进行属性设置,通过“文件”|“VI属性”|“窗口外观”|“自定义”命令来实现,如图10-121所示。同时在其他程序中调用子VI时,也要以子VI端口对应的属性进行。如果子VI中的输入是一个数值型的量,那在其他程序中调用时,在此端口输入的量也只能是数值型。
         
        图10-120  图标右键单击菜单                     图10-121  子VI的属性设置
子VI属性比较多,这里关键是左下角的“调用时显示前面板”这一项。选择此项后在调用子VI时会自动打开子VI并显示执行情况。若不想在调用子VI时显示前面板,就不必设置这一项。
9.整体调整

为了使整个操作界面更便于控制,最后需要添加一个选项卡控件,该控件可通过“控件”|“系统”|“系统选项卡控件”命令打开。这样设置的最大好处是单击相应的选项卡,对应的界面就会产生变化。将光标放在选项卡上面右键单击会出现下拉列表,选择其中的“在后面添加选项卡”命令,把前面编写的界面拖入刚才添加的选项卡界面。在界面中插入一个纯蓝色图片,然后从工具栏中选择排序按钮,弹出下拉列表如图10-122所示。
选择“移至后面”命令,就可以把上面所布局好的选项卡控件全部放到图片之上。整个界面最后如图10-123所示。单击上面的选项卡可以在几个界面之间转换。
   
        图10-122  控件组合                         图10-123  整个界面
10.系统调试

完成所有的编程后,还要对其进行测试,以检验结果和编程目的是否一致,程序运行是否正常等。这项工作比较简单,限于篇幅,这里不再赘叙。
10.4.4  实例总结

本节详细讲解了LabVIEW中的USB控制技术。首先从编程的原理入手,讲解通信及控制的技术,然后结合应用实例,讲解了USB控制的LabVIEW程序实现。本例中用到的重要方法有局部变量、事件结构、对文件的读写操作、选项卡的操作等,希望读者学习时候认真领会。

回帖(3)

黄彩萍

2019-5-16 09:38:13
etong 2011-12-28 23:21:31
        有得下载可以看清楚就更好啦
举报

张嘉

2019-5-16 09:49:26
位海辉 2011-05-02 20:43:54
        太及时了,我正***这个了,谢谢啊
举报

谢辅仁

2019-5-16 09:57:42
wwj20010620 2011-02-21 09:47:04
        非常棒,解说的比较详细,谢谢o(∩_∩)o...
举报

更多回帖

发帖
×
20
完善资料,
赚取积分