在线工博会

用微机串口实现对交流伺服电机的控制
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
摘要:交流伺服电机是自动控制系统中较为常用的部件。本文介绍了一种采用微机串口控制交流伺服电机的方法。选用LM628运动芯片,简化了系统软硬件设计。采用本方法可以低成本实现对交流伺服电机的控制。
关键词:交流伺服电机;LM628;Mscomm;自动控制系统
1引言
在自动控制系统中,交流伺服电机的作用是把信号(控制电压或相位)变换成机械位移,也就是把接收到的电信号变为电机的一定转速或角位移。他具有精度高、低频特性好、额定转速高、速度响应时间短等特点,因而在自动控制系统中得到越来越广泛的应用。
若用微机对交流伺服电机进行控制,现在采用较多的办法是选用现成的运动控制卡。微机通过对与控制卡配套的接口板通信,进而实现对电机的控制。这种控制简单可靠,但在一些对系统各轴联动要求不高的场合,选用现成的控制卡略显浪费(控制卡价格在万元左右)。下面介绍一种控制方法,他可以较低成本实现对伺服电机的控制。系统框图如图1所示。

(图片)

2 串口通信
系统首先要实现的任务是微机与计算机之间的串口通信。在DOS操作环境下,要实现单片机与微机的串行通信,只要直接对与微机接口的通信芯片8250进行口地址操作即可。然而在Windows环境下,由于系统硬件的无关性,不再允许用户直接操作串行口地址。如果用户要进行串行通信,可以调用Windows的API应用程序接口函数,但是由于其专业化程度较高,因而使用较为复杂。微软公司的VisualBasic提供了一个通讯控件(Mscomm),使用他就可以很容易地解决这一问题。
新一代面向对象的程序设计语言VisualBasic(VB)是将Windows图形工作环境与Basic语言编程简便性的美妙结合。他简明易用,实用性强,因而得到了广泛的应用。VisualBasic 6.0提供了一个名为MSCOMM32.OCX通信控件,他具备基本的串行通信能力:即通过串行端口传输和接收数据,为应用程序提供串行通讯功能。该控件可以从VB的TOOLBOX中加入到窗体FORM,若TOOLBOX中没有此控件,则用PROJECT的COMPONENT将他从Windows的SYSTEM目录中加入到VB6.0的TOOLBOX中。这样便可自由地设置他的属性,并用VisualBasic语句与串口沟通。MSComm控件有许多重要的属性,主要的有:
(1)CommPort设置并返回通讯端口号。
(2)Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
(3)PortOpen设置并返回通讯端口的状态。也可以打开和关闭端口。
(4)Input从接收缓冲区返回和删除字符。
(5)Output向传输缓冲区写一个字符串。
借助这个控件可以很容易的实现上下位机之间的通信。
3 控制电路
在控制电路中要想实现高精度伺服控制,其位置反馈装置必须有4倍频来提高码盘的分辨率,其输出的脉冲再由可逆计数器进行加减计数,计算机在每个采样周期内首先读取可逆计数器的值做为坐标轴实际运动位置,然后与差补程序所送出的坐标轴的期望位置命令相比较,算出当前坐标轴速度指令电压,实现位置控制。这种控制存在很多缺点主要有位置控制的电路采用元器件较多,电路复杂,调试比较困难,可靠性不是很高,容易出现脉冲丢失现象;控制算法全部由计算机软件完成,采样频率低,多轴控制较难实现。与此相比采用LM628专用控制芯片将会起到事半功倍的效果。
LM628是美国国家半导体(NationalSemiconductor)公司生产的运动控制专用芯片,他具有32位的位置、速度、加速度寄存器;带有16位参数的可编程数字PID控制器,并对位置误差进行PID控制;具有速度与位置两种工作方式;他支持实时读取设定的和实际的运动参数(位置速度加速度);可以自动产生梯形波速度曲线,使得加减速平稳并对码盘脉冲自动4倍频;具有可编程微分采样间隔;支持8位或12位DAC数据输出;具有8位并行异步主机接口;可实时编程的主机中断。LM628提供了23条自带指令,包括速度设置、加速度设置、停止运动、设置PID参数等,利用这些指令可简化软硬件的开发过程。
控制过程如下所述,以三轴控制电路为例,89C52根据指令要求通过74LS138选定运动轴,将数据发给74LS245。74LS245再将数据发往LM628的8位双向数据输入输出口,LM628将指令处理后,通过DAC输出口将电压信号的数字量发往AD767;最后由AD767将数字量转为模拟量电压,控制电机转速。
4软件开发
为了使本控制系统具有一定通用性,使之今后可适用于其他三轴交流伺服电机控制,采用了开发控制库函数的方法。软件结构框图如图2所示。与控制电路上的接口相对应,将LM628提供的基本函数细化。诸如设置速度、设置加速度、急停等,这样在使用时,仅需将库函数调入,即可进行编程。

(图片)

在上位机软件系统设计中,首先建立一个基本模块Basic.bas,也就是上文中提到的库函数。他包含运动控制 和I/O开关量控制函数,通过调用这些函数可实现分别向X,Y,Z轴的LM628发出他所能识别的23条指令以及控制接口电路的I/O口。这个模块为通用模块,不同的三轴系统使用本控制系统都可采用本模块。
为了编程方便,再建一个类模块Specific.bas,将Basic.bas模块中的函数进一步细化,将命令具体化,使之成为本系统的专用模块。Specific.bas是用VB面向对象的编程方式在Basic.bas的基础上开发的类模块,其中定义了系统软件所需的函数,使得上位机的软件的编程无需直接调用Basic.bas中较为抽象的函数。例如在系统中需要经常用的打开伺服函数这样编写:
打开I/O口的函数为:

(图片)

在需要打开伺服时,直接调用OpenServe函数即可,这样具体的函数给编程带来很大的方便。
5通信协议
为使上下位机能很好的通信,制定合理高效的通信协议十分关键。通信协议可采用主从方式,上位PC机永远是主控者,单片机只是被动接收者。上下位机都采用数据帧的形式,按照下述帧的格式发送或接收数据。对PC机协议规定如下:
(1)PC机每发一帧命令,采用如下过程:清空发送与接受缓冲区→发送命令→等待→超时错→退出报错→接收到响应帧→判断正误→退出
(2)PC机每发一帧命令必须收到响应帧后才能开始与单片机的下一次通讯。
(3)PC机在不发命令字的期间与非等待响应期间,间隔一定时间间隔向单片机发送状态查询命令,显示当前系统状态。
PC方命令协议:
帧头标志0x55(1B)+命令标识(1B)+命令字(1B)+数据长度(1B)+数据区(nB)+校验字节(1B)+结束标志0x05(1B)
单片机方响应协议如下:
帧头标志0x55(1B)+命令标识(1B)+命令字(1B)+数据长度(1B)+数据区(nB)+校验字节(1B)+结束标志(1B)
PC机发出的指令分为2大类,一类是转发给LM628的,一类是发给接口电路的。指令发往哪里是通过命令标识字节中的高4位来识别的。如图3所示。

(图片)

PC机发出一条指令给单片机后,经过一段时间,单片机应返回相应的响应指令。指令正常完成与否都在命令标识字节的最后一位表示。为了统一帧的格式,单字节指令的响应也需要包含数据长度项,只不过长度为0。
6结语
采用上述方法可在低成本的前提下实现通过微机串口对交流伺服电机的控制。LM628运动控制芯片的采用,减少了系统软硬件开发的工作量。故本系统可广泛适用于在对多轴联动要求不高的场合。但其也存在一定缺陷,即在实现多轴联动方面有一定难度,特别是在对多轴进行实时位置控制时,本系统就无法胜任。 4/20/2005


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站