刘建河,赵玉丹,张玉强
LIU Jian-he1,ZHAO Yu-dan2,ZHANG Yu-qiang3
(1. 长春理工大学 机电工程学院,长春 130022;3. 长春理工大学 理学院,长春 130022)
计算机串口是使用得最为广泛的接口,也是历史最为悠久的通信接口,通常称为COM口或RS-232口。大部分的智能仪器和仪表都配备了RS-485接口,RS-485是RS-422的改进版,它能更好地抗噪声,也增加了可通信设备的数量,最多可达32台,同时增加了传输的距离,可靠传输距离为1200m,实际上在3000m左右也可以正常工作。变频器是该类智能仪器一个典型代表,用它驱动电机安全,稳定,可实现连续无级调速,无冲击S曲线加减速运动等,也简化了整个机电系统的机械结构。用PC通过变频器对电机进行控制时,在硬件方面,使用一个RS-232和RS-485转换器就可以非常容易地建立起PC与变频器之间的硬件连接,在软件方面,美国NI公司开发的LABVIEW在数据采集与仪器控制方面最具有核心竞争力。1993年,NI联合许多在技术领域处于领先地位的公司,如HP,Tektronix,Racal等,成立了VXIplug&play系统联盟,其目标是确保多厂商的仪器具有协同工作的能力。虚拟仪器架构VISA(Virtual Instrument Software Architecture)是VXIplug&play系统联盟最重要的成果之一,它的目的是通过减少系统的建立时间来提高效率。随着仪器类型的不断增加和测试系统复杂化的提高,人们不希望为每一种硬件接口都要编写不同的程序,因此I/O接口的无关性对于I/O控制软件来说变得至关重要。当用户编写完一套仪器控制程序后,总是希望该程序在各种硬件接口上都能工作,VISA的出现使这种希望成为可能,通过调用相同的VISA库函数并配置不同的设备参数,就可以编写控制各种I/O接口仪器的通用程序。因此本文所述软件的编制中,所有对串口的操作全都基于对LABVIEW的VISA库函数的调用。下面就详细介绍在LABVIEW环境下,通过调用VISA库函数对串口进行操作,以实现对电机的控制。
硬件的配置非常简单,如图1所示。交流异步电动机由变频器直接驱动,PC输出的RS-232信号经转换器转换为RS-485信号后送进变频器。需要说明两点,一是市售转换器质量良莠不齐,在选用时一定要选用质量好些的,当然价格也会高点,二是个人PC如果是笔记本电脑的话,大部分已经没有RS-232串口了,需要在笔记本上再增加一个串口转接卡。
图1 控制系统的硬件配置
在编程之前首先要对变频器的参数进行设置。不同的变频器对RS-485通信参数设置方法不尽相同,本文采用的是台达VFD-A系列交流马达变频器,与RS-485通信相关的参数设置如下:
1)主频率输入来源选择
Pr-00=d0002,主频率输入由RS-485串联通讯介面控制。
2)运转指令来源设定
Pr-01=d0004,运转指令由RS-485串联通讯介面控制。
3)资料传输速率设定
Pr-77=d0002,资料传输速率4800baud。
4)通讯位址
Pr-78=d0000,单台,通讯位址为00。
该软件主要实现电机的正转,反转,点动正转,点动反转,停机及变频器状查询等功能。LABVIEW程序分为前面板和程序框图,前面板为图形用户界面GUI(Graphic User Interface),程序框图相当于其他编程语言的源代码。本软件前面板设计如图2所示。主要包括三个部分,左边为参数设定区,用于输入变频运转频率和对VISA资源的选择,还可显示运转指令字、运转指令以及通讯是否正常的指示;中间部分为电机运转方式选择按钮,点击相应的按钮后电机执行相应的动作;右边为变频器运行状态显示,主要显示变频器的输出电流和电机的运行状态。
图2 软件的前面板配置
所设计的程序框图在执行时是位于一个窗口下的,为了表述清楚,将其分成三个部分,分别如图3,图4和图5所示。
图3为电机运转方式选择部分,用while循环结构+事件结构组成。在LABVIEW中,while循环不只是循环执行数据的计算和判断,同时还可以用于构造复杂的设计模式,是LABVIEW编程中的关键和核心,事件结构一般也必须放在while循环中执行。本例程中,事件结构对前面板50ms扫描一次,主要用来判断前面板上用来控制电机运转方式的按钮是否有动作,如果有动作,就给相应的运转指令字赋对应的值,同时使标志位置位。本变频器对应“正转”的指令字是字符串“01”,对应“反转”的是字符串“03”,对应“点动正转”的是字符串“04”,对应“点动反转”的是字符串“06”,对应“停止”的是字符串“00”。
图3 电机运转方式选择部分的程序框图
串口的操作部分是本软件的核心,其程序框图如图4所示。在while循环左侧是串口初始化部分,其中VISA资源位于控制面板的I/O子面板下,用于选择可用的串口,VISA Serial Port Configuration位于函数选板Instrument I/O—serial子面板下,主要用来连接串口资源,并配置波特率,数据位和奇偶校验等初始化工作。while循环内的第一个条件结构以标志位为执行条件,当其为真时,执行电机运转操作指令,该指令由控制字头,和检查,命令认可,通讯地址位,运转指令字及运转频率等11位字符构成,因此用了一个字符连接函数将其连接成一个字符串后送入写串口节点。其中子程序1的功能是为了将输入的频率(十进制浮点数)转化为四位字符串。当数据流汇集到运转指令写操作时,变频器便驱动电机执行相应的动作。当此条件结构输入标志位为假时,便执行状态查询写串口操作,此处的写操作与运转指令写操作方法相同,只是指令的内容不同而已,且此内容与所用变频器生产厂家和型号密切相关。需要注意的是,由于该变频器是一问一答的工作模式,如果不发送查询指令(写串口),就不会返回变频器的工作状态,因此查询串口的操作不管电机是否运行都需要连续不断地执行,所以在执行运转指令写操作的同时,要将标志位复位。while循环内的右半部分是对状态查询的结果进行预处理,实际上是将变频器的应答信号压入一个队列。由于计算机执行读写指令有时间延迟,所以用了一个顺序结构进行10ms的弥补。
图4 串口的操作部分的程序框图
图5为变频器运行状态显示部分的程序框图。运行指令和状态查询指令写入变频器后,计算机都会收到一个应答信号,我们只关心状态查询的结果,因此要对所收到的字符串(位于预处理的队列中)进行筛选和处理。电机运行指令的回复信号与状态查询的回复信号均为11字符,但前者内容含“C”,而后者内容含“Q”,以此为依据进行判断,并将字符串转化为数字显示在前面板的“电流表”上。
图5 队列内容处理显示部分的程序框图
在本软件的编程中涉及到的关键技术主要有以下四个方面:
1)LABVIEW本身自然支持多线程工作,但在一个程序框图中对串口的写操作不能有两个或两个以上的线程同时进行。本程序一方面需要对串口进行运转指令的写入,另一方面还需要不断地查询串口,为了解决这个矛盾,使用了一个标志位,该标志位只有在前面板按钮有动作时为真,执行一次写操作,其他时间为假,从而可以循环进行状态查询。
2)使用队列结构实现了生产者和消费者的工作模式。图4显示的框图最右半部分相当于生产者,它将所有返回的信号都压入一个队列,从而产生一些待处理的数据到图5的程序框图中再进行处理,图5中的程序框图就自然成了消费者。
3)移位寄存器不受数据类型和数量的限制,因此本程序中使用空字符对移位寄存器进行初始化,解决了可能会出现的数据溢出和其它一些不可预见的问题。
4)对于控件的引用,一律使用Create-Property-Value的方式实现,避免了使用局部变量,提高了程序的执行效率。
完成了通过串口与变频器通信实现对电机运转方式进行控制,对变频器工作状态进行查询的软硬件设计,并给出了在设计中所用到的一些关键技术。整个系统运行状态良好,得到了用户的一致好评。
[1] 陈树学.LabVIEW宝典[M].北京:电子工业出版社,2011.
[2] 陈锡辉.LabVIEW8.20从入门到精通[M].北京:清华大学出版社,2007.
[3] 李江全,等.LABVIEW虚拟仪器数据采集与串通信测控应用实战[M].北京:人民邮电出版社,2010.
[4] 孟辉.基于LabVIEW的PC机与变频器的串口通信[J].现代电子技术.2008(17):111-113.
[5] 夏锴.基于LabVIEW读取串口数据技术[J].制造业自动化2012年(10上):21-22.