1、LabVIEW 在串口通信中的应用数据采集 2008-11-30 20:05:14 阅读 2099 评论 2 字号:大中小 订阅 amire chan 摘要:首先介绍了 LabVIEW 的环境及 VISA 串口通信函数的功能;其次引入了本文的采集对象 JCZ 型智能转矩转速传感器,并对其性能、物理结构及串行通信特点进行了说明,利用 LabVIEW 的开发平台编写通信源程序,实时采集转矩和转速,并计算功率值,最后把转矩、转速和功率数据以动态曲线的方式在同一张图表中显示出来。经过实验验证,该程序操作方便,采集数据准确,运行安全可靠,动态曲线显示直观,可真正在生产实际中使用。LabVIEW 是当今最
2、流行的图形化编程环境,由于其采用图形化的编程方式,因此也被称作 G 语言(graphical language)。LabVIEW 是目前国际上唯一的基于数据流的编译型开发软件,与基于文本的编程语言不同,LabVIEW 的程序由图形语言构成,用简单或图标提示的方法选择功能(图形),并用线条把各种功能(图形)连接起来的简单图形编程方式,使得不熟悉编程的工程技术人员都可以按照测试要求和任务快速 “画”出自己的程序,“ 画”出仪器面板,从而大大提高了工作效率,减轻了科研和工程技术人员的工作量。由于 LabVIEW 软件简洁直观,功能强大灵活,目前广泛应用于自动化测量系统、工业过程自动化、实验室仿真等各
3、个领域。在 LabVIEW 中编制的程序叫做虚拟仪器程序,简称 VI。一个 VI 包括前面板和框图程序。前面板类似实际仪表面板,可以放置诸如旋钮、按钮和文本框等控制和显示元件。框图程序是实现程序功能的核心部分,包括以图标为代表的常数、函数和 VI 程序等,并通过连线引导数据流,编写和调试程序都很直观方便。一 : LabVIEW 串口通信介绍仪器控制是 LabVIEW 最具竞争力的核心技术之一。在安装了适当的硬件驱动程序之后,LabVIEW 能轻松实现与任何NI 提供的硬件设备通信。不仅如此,通过通用的驱动程序(DAQmx)或接口,例如 VISA、IVI 、OPC、ActiveX、DLL 等,L
4、abVIEW 几乎能与任何厂商甚至自制的硬件通信。LabVIEW 通过 VISA 与串行接口仪器通信。VISA 是应用于仪器编程的标准 I/O 应用程序接口(API ),它本身并不具有仪器编程能力,而是为用户提供了一套独立的可方便调用的标准 I/O 底层函数。无论对于 GPIB、串口还是其他接口,用户只要调用这些标准函数,则 VISA 就会根据实际接口类型自动调取相应的接口驱动程序例程,方便实现上层应用程序与接口总线仪器的通信。 在 LabVIEW 里使 用 VISA, 必 须 安 装 NI-VISA 程 序 包 , 安 装 后 , 与 串口通信相关的 VISA 函数位于 Functions-
5、ALL Functions-Instrument I/O-Serial 子模板上,如图 1 所示。图 1 VISA 串口通信函数此模板共有 8 个操作函数,其中,第一行的 4 个函数在串口通信中经常应用。下面简单介绍这 4 个常用的 VISA 串口函数。1 VISA 配置串口设定波特率、数据位、停止位、奇偶校验位、流控制、超时处理、终止符和终止符使能等参数,将 VISA 资源名称指定的串口按特定设置初始化。注意:超时(TIMEOUT)和终止符两个参数。TIMEOUT 默认 10 秒;终止符是00A(n),默认是使能状态。另外,回车 0X0D(r)也经常作为终止符。 采用二进制通信,就要特别注意
6、终止符的情况。因为对应的十进制是 10,0是,当传输的二进制对应的十进制刚好为 10 或 13 时,如果不禁止终止符,会导致“VISA 读取”提前结束,产生错误的结果。因此,经常要把“启动终止符”的布尔输入设置为“F” 。2 VISA 写入将“写入缓冲区”的数据写入 VISA 资源名称指定的串口。注意:MSCOMM 串口通信可以选择文本或二进制方式接收或发送数据,但是,VISA通信接收或发送数据都是字符串(ASCII) 。若接收或发送的字符串是“1、2、3、4” ,在内存中存储的是 ASCII,因为 “1”31(十六进制) 、 “2”32(十六进制) 、 “3”33(十六进制)和“4”34(十
7、六进制) ,所以串口缓存接收/发送的数据实际是 16 进制的 31、32、33、34。3 VISA 读取从 VISA 资源名称所指定的串口中读取指定字节的数据,并将数据返回至读取缓冲区。有时不知道串口缓存区有多少字节的数据,以防字节总数设置错误,这时字节总数可以用属性节点 获取,即把属性节点输出端子接入“VISA 读取”节点的输入端子“字节总数” 。4 VISA 关闭关闭 VISA 资源名称指定的串口会话句柄或事件对象。二:串口通信编程实践JCZ 型智能转矩转速传感器是湖南湘仪动力测试仪器有限公司利用美国ECHELON 公司的 LonWorks 技术在原 JC 型转矩转速传感器基础上设计制造的
8、新一代产品,它的外形结构如图 2 所示。JCZ 型智能转矩转速传感器具有高精度、高可靠性的优点,同时,它还具有自动零点补偿,自动随环境温度修正传感器系数等智能化特性,在转速很低时也能精确测量转速。当使用 LonWorks网络传输时,通讯距离可达到 2 公里,还可以很方便地与计算机及其它智能传感器或智能节点组成测控网络系统。目前,JCZ 型智能转矩转速传感器在电机、风机、机车、汽车、矿山机械等许多生产部门中广泛应用。图 2 JCZ 型智能转矩转速传感器外形结构图JCZ 型转矩转速传感器的基本原理是:通过弹性轴、两组磁电信号发生器,把被测转矩、转速转换成具有相位差的两组交流电信号,这两组交流电信号
9、的频率相同且与轴的转速成正比,而其相位差的变化部分又与被测转矩成正比。因此,通过分析这两组交流电的频率和相差信号就可以实现转矩和转速的测量。电信号处理部分是以 ECHELON 公司的 3150 神经元芯片为核心组成,把电信号处理成可利用双绞线等传输介质进行网络传输的网络变量,或者处理成直接可与计算机 RS-232 串口通信的信号。本文 JCZ 型转矩转速传感器使用异步串行通信接口,其数据格式为 1 个起始位,8 位数据,无校验位,1 个停止位,波特率为 4800bps。因此,设置完串口通信参数后,通过专门配置的信号线,此传感器的输出信号就可以送到计算机中。JCZ 型转矩转速传感器发送 16 进
10、制显示的字符串来表示各种指令代码及数据,每次发送的数据包共计 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 3130 这 10 字节,为字符显示的字符串41.235 的十六进制表示 ,而 41.235 即为实际转矩数据
11、;从 32、36 30 这最后 10 个字节转换为字符显示的字符串后可得到实际的转速值。因此,要注意把串口接收的数据包先进行字节分离,再分别转换为字符显示的字符串,所得到值才是实际的物理量。通过分析 JCZ 型转矩转速传感器的串行通信特点,结合 VISA 串口函数的功能,特设计图 3 所示的程序代码流程图。图 3 串口通信程序流程代码 图 4 为本串口通信程序的前面板。“动态参数曲线显示”图表为 Chart 控件,其波形显示模式模拟波形记录仪、心电图等的工作方式。转矩、转速、功率实时曲线在图表上动态显示,图表的最右边显示最新采集的数据,而历史数据则连续不停地往左边移动。图表的正上方是三个数据输
12、出文本框,分别显示当前采集的转矩、转速和功率物理量。当参数测试完毕后,点击“退出程序”控件程序退出。图 4 串口通信程序的前面板图 5 为此程序的框图程序,程序采用流行的主/从结构( Master/Slave)设计模式。JCZ 型智能转矩转速传感器在上电的情况下,默认地不断往计算机串口发送 21 字节的 16 进制格式数据。为了完成串口的初始化、读,分别用到串口初始化函数(VISA Configure Serial Port)和串口读函数( VISA Read)。另外,由于得到的数据为 16 进制数,利用“电子表格字符串至数组转换”函数,使之换算成一维标量数组,得到实际的转矩、转速物理量的数组表示,再由转矩和转速计算出相应的功率值(注:功率扭矩 X 转速 XK,本文 k1/9.55 ,所求功率的单位是瓦特 W) ,之后转矩、转速和功率数组合并并通过自动索引隧道进入 for 循环中,由 “创建波形”节点创建波形数据,最后,波形数据流入Chart 图表中动态显示。图 5 框图程序三 结论利用 LabVIEW 的 VISA 函数开发串口通信程序,简单方便。本程序人机界面设计合理,操作方便,波形曲线显示直观。经过实验验证,此程序数据采集可靠、运行效率高,可作为获取和分析转矩和转速很好的测量工具。当然程序还有很多扩展的余地,比如数据存盘,实现远程监控,笔者希望以后继续完善。