登录站点

用户名

密码

LabVIEW在串口通信中的应用

已有 209 次阅读  2011-11-11 11:58   标签LabVIEW 

 

原文出自:中国电子技术论坛—LabVIEW论坛

摘要:首先介绍了LabVIEW的环境及VISA串口通信函数的功能;其次引入了本文的采集对象JCZ型智能转矩转速传感器,并对其性能、物理结构及串行通信特点进行了说明,利用LabVIEW的开发平台编写通信源程序,实时采集转矩和转速,并计算功率值,最后把转矩、转速和功率数据以动态曲线的方式在同一张图表中显示出来。经过实验验证,该程序操作方便,采集数据准确,运行安全可靠,动态曲线显示直观,可真正在生产实际中使用。



LabVIEW是当今最流行的图形化编程环境,由于其采用图形化的编程方式,因此也被称作G语言(graphical language)。LabVIEW是目前国际上唯一的基于数据流的编译型开发软件,与基于文本的编程语言不同,LabVIEW的程序由图形语言构成,用简单或图标提示的方法选择功能(图形),并用线条把各种功能(图形)连接起来的简单图形编程方式,使得不熟悉编程的工程技术人员都可以按照测试要求和任务快速“画”出自己的程序,“画”出仪器面板,从而大大提高了工作效率,减轻了科研和工程技术人员的工作量。由于LabVIEW软件简洁直观,功能强大灵活,目前广泛应用于自动化测量系统、工业过程自动化、实验室仿真等各个领域。



在LabVIEW中编制的程序叫做虚拟仪器程序,简称VI。一个VI包括前面板和框图程序。前面板类似实际仪表面板,可以放置诸如旋钮、按钮和文本框等控制和显示元件。框图程序是实现程序功能的核心部分,包括以图标为代表的常数、函数和VI程序等,并通过连线引导数据流,编写和调试程序都很直观方便。



一 : LabVIEW串口通信介绍



仪器控制是LabVIEW最具竞争力的核心技术之一。在安装了适当的硬件驱动程序之后,LabVIEW能轻松实现与任何NI提供的硬件设备通信。不仅如此,通过通用的驱动程序(DAQmx)或接口,例如VISA、IVI、OPC、ActiveX、DLL等,LabVIEW几乎能与任何厂商甚至自制的硬件通信。



LabVIEW通过VISA与串行接口仪器通信。VISA是应用于仪器编程的标准I/O应用程序接口(API),它本身并不具有仪器编程能力,而是为用户提供了一套独立的可方便调用的标准I/O底层函数。无论对于GPIB、串口还是其他接口,用户只要调用这些标准函数,则VISA就会根据实际接口类型自动调取相应的接口驱动程序例程,方便实现上层应用程序与接口总线仪器的通信。在LabVIEW里使用VISA,必须安装NI-VISA程序包,安装后,与串口通信相关的VISA函数位于Functions->ALL Functions->Instrument I/O->Serial子模板上,如图1所示。





bmp.gif

此主题相关图片如下:1.jpg
201012282093438614.bmp 



图1  VISA串口通信函数


此模板共有8个操作函数,其中,第一行的4个函数在串口通信中经常应用。下面简单介绍这4个常用的VISA串口函数。

      1 VISA配置串口 设定波特率、数据位、停止位、奇偶校验位、流控制、超时处理、终止符和终止符使能等参数,将VISA资源名称指定的串口按特定设置初始化。 注意:超时(TIMEOUT)和终止符两个参数。TIMEOUT默认10秒;终止符是0X0A(),默认是使能状态。另外,回车0X0D()也经常作为终止符。采用二进制通信,就要特别注意终止符的情况。因为0A对应的十进制是10,0D是13,当传输的二进制对应的十进制刚好为10或13时,如果不禁止终止符,会导致“VISA读取”提前结束,产生错误的结果。因此,经常要把“启动终止符”的布尔输入设置为“F”。

      2 VISA写入 将“写入缓冲区”的数据写入VISA资源名称指定的串口。 注意:MSCOMM串口通信可以选择文本或二进制方式接收或发送数据,但是,VISA通信接收或发送数据都是字符串(ASCII)。若接收或发送的字符串是“1、2、3、4”,在内存中存储的是ASCII,因为“1”=31(十六进制)、“2”=32(十六进制)、“3”=33(十六进制)和“4”=34(十六进制),所以串口缓存接收/发送的数据实际是16进制的31、32、33、34。
      3 VISA读取 从VISA资源名称所指定的串口中读取指定字节的数据,并将数据返回至读取缓冲区。有时不知道串口缓存区有多少字节的数据,以防字节总数设置错误,这时字节总数可以用属性节点获取,即把属性节点输出端子接入“VISA读取”节点的输入端子“字节总数”。
      4 VISA关闭 关闭VISA资源名称指定的串口会话句柄或事件对象。

二:串口通信编程实践



JCZ型智能转矩转速传感器是湖南湘仪动力测试仪器有限公司利用美国ECHELON公司的LonWorks技术在原JC型转矩转速传感器基础上设计制造的新一代产品,它的外形结构如图2所示。JCZ型智能转矩转速传感器具有高精度、高可靠性的优点,同时,它还具有自动零点补偿,自动随环境温度修正传感器系数等智能化特性,在转速很低时也能精确测量转速。当使用LonWorks网络传输时,通讯距离可达到2公里,还可以很方便地与计算机及其它智能传感器或智能节点组成测控网络系统。目前,JCZ型智能转矩转速传感器在电机、风机、机车、汽车、矿山机械等许多生产部门中广泛应用。





此主题相关图片如下:6.jpg
2010122820105257461.bmp


图2  JCZ型智能转矩转速传感器外形结构图


JCZ型转矩转速传感器的基本原理是:通过弹性轴、两组磁电信号发生器,把被测转矩、转速转换成具有相位差的两组交流电信号,这两组交流电信号的频率相同且与轴的转速成正比,而其相位差的变化部分又与被测转矩成正比。因此,通过分析这两组交流电的频率和相差信号就可以实现转矩和转速的测量。电信号处理部分是以ECHELON公司的3150神经元芯片为核心组成,把电信号处理成可利用双绞线等传输介质进行网络传输的网络变量,或者处理成直接可与计算机RS-232串口通信的信号。本文JCZ型转矩转速传感器使用异步串行通信接口,其数据格式为1个起始位,8位数据,无校验位,1个停止位,波特率为4800bps。因此,设置完串口通信参数后,通过专门配置的信号线,此传感器的输出信号就可以送到计算机中。


JCZ型转矩转速传感器发送16进制显示的字符串来表示各种指令代码及数据,每次发送的数据包共计21字节,起始段为字符A,占1字节;接下分别为转矩和转速,每个数据占10字节,具体如下表所示:




头“A(1byte)

转矩数据   (10byte)

转速数据 (10byte)



假如串口接收的一个数据包为41 34 31 2E 31 38 37 31 30 30 30 32 36 2E 32 33 36 30 30 30 30等21字节十六进制数。其中,头字节41,刚好是字符A的十六进制表示;接下从34 31~30这10字节,为字符显示的字符串41.235的十六进制表示,而41.235即为实际转矩数据;从32、36~30这最后10个字节转换为字符显示的字符串后可得到实际的转速值。因此,要注意把串口接收的数据包先进行字节分离,再分别转换为字符显示的字符串,所得到值才是实际的物理量。



通过分析JCZ型转矩转速传感器的串行通信特点,结合VISA串口函数的功能,特设计图3所示的程序代码流程图。




此主题相关图片如下:7.jpg
2010122820105250004.bmp 

图3  串口通信程序流程代码

    图4为本串口通信程序的前面板。“动态参数曲线显示”图表为Chart控件,其波形显示模式模拟波形记录仪、心电图等的工作方式。转矩、转速、功率实时曲线在图表上动态显示,图表的最右边显示最新采集的数据,而历史数据则连续不停地往左边移动。图表的正上方是三个数据输出文本框,分别显示当前采集的转矩、转速和功率物理量。当参数测试完毕后,点击“退出程序”控件程序退出。


jpg.gif

此主题相关图片如下:8.jpg
2010122820105210419.jpg 
                                    图4   串口通信程序的前面板


图5为此程序的框图程序,程序采用流行的主/从结构(Master/Slave)设计模式。JCZ型智能转矩转速传感器在上电的情况下,默认地不断往计算机串口发送21字节的16进制格式数据。为了完成串口的初始化、读,分别用到串口初始化函数(VISA Configure Serial Port)和串口读函数(VISA Read)。另外,由于得到的数据为16进制数,利用“电子表格字符串至数组转换”函数,使之换算成一维标量数组,得到实际的转矩、转速物理量的数组表示,再由转矩和转速计算出相应的功率值(注:功率=扭矩X转速XK,本文k=1/9.55,所求功率的单位是瓦特W),之后转矩、转速和功率数组合并并通过自动索引隧道进入for循环中,由“创建波形”节点创建波形数据,最后,波形数据流入Chart图表中动态显示。

此主题相关图片如下:9.jpg
2010122820105245988.jpg 

图5  框图程序

  结论

    利用LabVIEW的VISA函数开发串口通信程序,简单方便。本程序人机界面设计合理,操作方便,波形曲线显示直观。经过实验验证,此程序数据采集可靠、运行效率高,可作为获取和分析转矩和转速很好的测量工具。当然程序还有很多扩展的余地,比如数据存盘,实现远程监控,笔者希望以后继续完善。

上一篇: 对于labview新手的告诫 下一篇: labview如何循环写入数据库

分享 举报