APP下载

远程双向可视化控制系统

2014-01-15朱明富

电子设计工程 2014年16期
关键词:舵机控件串口

谢 兰,朱明富

(华中科技大学 自动化学院,湖北 武汉 430074)

LabVIEW是美国国家仪器公司(National Instruments,NI)开发的一种程序开发平台,它具有丰富的数据采集、显示、分析和存储函数,GPIB、串口控制以及各种仪器通信标准的所有功能函数。友好的人机对话界面以及图形化编程语言——G语言为工程师们提供了一个设计和修改非常便捷的环境,因此大大降低了系统开发周期、编程量,提高了开发效率[1]。

MATLAB(MATrix LABoratory)是 Mathworks公司开发的一种基于矩阵运算的高效的科学计算程序语言软件。MATLAB主要包括:MATLAB应用开发环境、数值计算和统计、M文件变成、高质量的图形可视化技术、SIMULINK、WEB功能等。MATLAB不仅具有传统的交互编译功能,并且提供了丰富精确的矩阵运算、图形绘制、信号和图形处理工具,再加上具有与其他程序和语言便捷的接口,它已经成为自动控制、电子、通信、数字信号处理、动态系统仿真等诸多学科非常高效的工具[2]。

但鉴于本系统不仅要求良好的人机交互界面和仪器连接控制,还要求数据传输、处理实时性,同时,其中还含有大量的数据运算,因此,需要结合LabVIEW和matlab两者的优势,进行混合编程。

1 系统设计概述

本系统由串口数据采集、数据处理及存储、数据显示3部分模块构成。出于结构可视性及时序控制要求,程序整体为层叠式顺序结构,以助于严格控制数据初始化到主程序的顺序执行。

2 串口数据采集模块

目前,有多种软件平台可开发串口通信,颇为常用的方法有基于VC++6.0开发的串口通信程序、基于LABVIEW开发的串口通信程序等。在VC++6.0环境下开发的串口通信程序等。在VC++6.0环境下开发的串口通信程序通常利用MSComm控件。

MSComm是微软公司提供的简化Windows串行通信编程的ActiveX控件。虽然简单易用,但是存在实时性不高、高速通信时准确性较差、处理速度较慢等缺陷。文中是基于LabVIEW环境下开发的串口数据采集平台,图形化语言方便简洁,功能强大,实时性与可靠性高[3]。

LabVIEW提供了丰富的仪器控制功能,支持VI-SA、SCIP和 IVI等程控软件标准。在串口通信方面,串口操作的功能节点均使用VISA节点。VISA是调用低层驱动器的高层的API,本身并不具备编程能力,而是为用户提供了一套独立的可方便调用的标准I/O底层函数。用户调用这些标准函数,VISA自动调取对应的接口驱动程序例程,以实现上层应用程序与接口总线仪器的通信。

本模块主要使用了4个VISA节点:

1)VISA 配置函数(VISAConfigureSerialPort):用于串口的初始化,选择串口,设置波特率、数据位、停止位和校验位,文中的串口波特率为9600bps,8位数据位,1位停止位,无奇偶校验位。

2)VISA读取函数(VISA Read):将指定串口接收缓冲区中的数据按指定字节数读取到计算机内存中。是本程序的重要节点。

3)VISA 串口字节数函数(VISA Bytes at SerialPort):返回指定串口接收缓冲区中的数据字节数。

4)VISA关闭(VISAClose):结束与指定的串口资源会话,关闭串口资源。

利用串口配置函数设置好串口参数,添加一个While循环保证数据的持续采集、处理、存储及显示。同时,运用等待下一个整数倍毫秒函数同步各操作,严格控制主程序的while循环执行速率,该函数为异步系统调用,但函数节点却为同步操作。本系统的控制周期为500 ms,由倍毫秒函数控制while循环的执行速率。并加上一个case结构,运用人工控制的开关控件来开启程序运行。为避免串口杂波及乱码干扰数据处理及分析,本模块设计了严密的滤波部分。在zigbee无线通讯模块传输的舵机数据存入缓冲区后,先利用VISA Bytes at Serial Port函数查询VISA resource name指定的串口接收缓冲区中的数据字节数,并将其转换成无符号长整型,判断其非0位后,才可开启VISA读取函数接受数据并进行数据存储。为便于监控整个程序的运行,在发送及接收数据的同时,开启正在发送/接收信号灯。

数据接收如图1所示,发送子模块如图2所示。

图1 数据接收图Fig.1 Data reception

图2 发送子模块Fig.2 Sending sub-module

3 数据处理及存储模块

本模块主要使用了LabVIEWmathscript节点,嵌入MATLAB程序进行混合编程。LabVIEW与MATLAB混合编程方法分别有:LabVIEW mathscript和 LabVIEW matlabscript。

LabVIEW matlabscript节点与 LabVIEW mathscript节点的使用非常相似,LabVIEW与MATLAB交换数据是通过matlabscript节点实现,节点中的脚本完全是MATLAB中的.m文件,其支持的函数由MATLAB提供。但是matlabscript节点始终不能脱离MATLAB软件的支持,运行此节点时,必须先启动MATLAB软件,调用MATLAB脚本服务器,造成PC机CPU资源耗费,响应迟缓,不利于数据信息的实时性监测。

LabVIEWMathscript节点包含了600多个数学分析与信号处理函数,并具有丰富的图形功能。此外,它还具有面向数学的数据类型,强大的兼容性及可扩展性,而且完全可脱离MATLAB软件单独在LabVIEW内运行,使用者只需安装系统的安装程序,便可流畅使用,而不必再安装MATLAB软件,因此本系统选用它作为接收数据信号处理的工具,如图3所示[4]。

图3 LabVIEW mathscript节点Fig.3 LabVIEW mathscript node

1)数据处理模块是由下位机atmege8通过zigbee无线通讯模块传递给上位机PC机的数据进行解包及解算处理成为真正的舵机角度位置信息,下位机每帧发送的反馈包数据格式为8字节十六进制数,其中每2个字节可以换算成一路舵机角位格式,需要通过字符串至字节数组转换成字节数组。本系统利用整数拼接将索引出数组中的元素拼接起来,再进行计算,使计算结果可以真实反映舵机角位信息,并显示在前面板。

2)数据的存储是在将处理后的数据进行保存,便于事后分析和参考。本程序在舵机信息实时显示之前,先要完成数据的存储,目的是当发现显示数据有误时可以分析存储数据,以找出出错环节LabVIEW中具备与测量文件有关的各种文件 I/O节点,例如文本文件的读写、电子表格文件的读写、二进制文件的读写等。文中利用写入文本文件节点实现对数据的存储。需要注意的是,在每次从 Whlie循环进入读取数据和数据处理的条件结构时,写入文本文件节点写入新的数据时都默认将原有数据覆盖,这样影响了数据的完整保存。而本系统利用设置文件位置函数,把写入指针始终设置为指向文件末尾,使其每帧新的数据续写在旧数据之后,保证了数据的完整保存,并将数据利用数组至电子表格转换节点设置精度和格式,便于读取。具体程序图如图4所示。

图4 文件读写Fig.4 Document literacy

4 数据显示模块

LabVIEW与MATLAB混合编程的一个突出特点是具有对采集到的数据处理和显示的强大功能。并对显示的图形附加个性化功能,比如局部放大、显示时间波形位置等。最常用的两个显示数据的空间就是波形图表控件和波形图控件。它们的区别在于前者能够显示历史数据,将新得到的数据追加到原有数据上显示,而后者不保存历史数据,一次性显示完整波形。本程序为了实时观察舵机反馈的角位置信号,所以选择波形图表控件来显示。数据显示模块的程序框图部分如图 5所示[5]。

图5 LabVIEW与MATLAB混合编程Fig.5 LabVIEW and MATLAB mixed programming

强度图类似于强度图表,但它不保存先前的数据,也不接收刷新模式。每次将新数据传送至强度图时,新数据将替换旧数据。和波形图相比,强度图多了一个用颜色表示大小的Z轴。它最大的特点为可以通过颜色在二维图上显示三维数据,可视性强。故本系统选用强度图作为识别目标的可视化效果,通过强度图可以很直观地得出目标的当前位置。强度图及整个系统前面板的远程数据接收动态显示如图6所示。

图6 远程双向可视化控制系统Fig.6 Two-way remote control system visualization

此外,三维曲面图也可以比较直观地显示出某些量在空间的分布,如图7所示。

图7 三维曲面图Fig.7 3D surface chart

本系统在机器人的开发与调试中有良好的应用,系统总结构如图8所示。

图8 本系统在机器人的开发与调试Fig.8 The system development and debugging of the robot

5 结 论

本文综合论述了远程双向可视化控制系统的设计,利用LabVIEW搭建的平台嵌入MATLAB运算,通过大量实践证明,可以充分利用两种编程语言的优势,方便地解决了各个领域的仪器连接和数学分析等问题。在工业控制中,一方面可以直观地监控远程设备情况,另一方面也可以进行远程通讯,在嵌入式系统开发过程中,如机器人、智能汽车的开发中,大大提高了开发效率,在无人机的开发中,也可作为地面站。在开发的过程中,数据流的传输以及数据传到可视化仪表中时,数据类型的转换以及信号滤波成为开发的一个难点;数据保存时如何使每次接收的数据不覆盖之前的数据也是开发时的一个难点。

[1]彭勇,潘晓烨,谢龙汉.LabVIEW虚拟仪器设计及分析[M].北京:清华大学出版社,2011.

[2]曲丽荣,胡容,范寿康.LabVIEW、MATLAB及其混合编程技术[M].北京:机械工业出版社,2011.

[3]Travis J,Wells L K.LabVIEW for Everyone with Cdrom[M].Prentice Hall PTR,2001.

[4]HU Y,PENG T,ZHU L.Mixed programming with MATLAB&LabVIEW and its application in control system[J].Machine Tool&Hydraulics,2009,10:67.

[5]Katsuhiko Ogata.MATLAB for control engineers[M].北京:电子工业出版社,2012.

[6]Beyon J Y.LabVIEW programming,data acquisition and analysis[M].Prentice Hall PTR,2000.

猜你喜欢

舵机控件串口
浅谈AB PLC串口跟RFID传感器的通讯应用
基于.net的用户定义验证控件的应用分析
含齿隙弹载舵机的全局反步模糊自适应控制
关于.net控件数组的探讨
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
基于云模型的舵机同步控制