步进电机控制系统由一套光纤-485信号转换电路、一个单片机控制模块、步进电机驱动器、步进电机、13位的绝对式轴编码器和限位器组成。其中每部电机需要上下两个限位器,使得被控的机械部分在上下两个极限位置间来回移动。在一条标准485总线内理论上可以同时接入32个控制模块。485总线采用差分信号传输方式,具有抗干扰性高、信号传输距离远(达到4000英尺)、最大传输速率为10M,实现成本低、接口简单等特点。步进电机控制系统图如图1所示。
13位的绝对式轴编码器以格雷码的编码形式将实际位移回传给单片机,单片机将数据作简单处理后通过485总线和光纤接口将数据上传至网络终端,由网络终端将光信号转化为数据包发送到服务器,在专用局域网内即可接收到数据并对设备加以控制。使用绝对式编码器,可使任意一个位置只对应唯一的一组编码,便于进行编码与实际位置之间的关系处理。
限位器与电机动作的协调由单片机中的程序自动完成,无需上位机干预。系统内部的单片机电路与外部被控电路间都有光电隔离器分隔,反向隔离电压为5000V保证系统内部的电气安全和单片机的正常工作。
光电转换电路与光纤接口的一体化设计使得整个控制系统按照各自的独立功能完全分开,可直连于RS-485总线。既增加了跨系统的兼容性,更便于更换与维护。所设计的控制模块大多具有很强的通用性,现场维护工作只需更换相应的功能模块即可。
在远程控制前必须进行现场控制测试,通常采用PC机直联控制方式,而控制程序(通常指控制界面)由VB6编写完成。界面力求简单明了,并涵盖所有的控制测试项目包括电机、编码器、限位器等等。控制测试程序具有通用性,适当变换即可完成包括485通信测试、光纤通信测试等功能。
系统软件
部分C源程序
#include <REG1210.H> /* special function register 8052 */
#include <stdio.h> /* standard I/O .h-file */
#include <rtx51tny.h> /* RTX-51 tiny functions & defines */
#include <stdlib.h>
... ...
#ifdef MONITOR51
char code reserve [3] _at_ 0x23;
#endif
... ...
sbit CON_TXD=P3^5;
void main (void)
{
/*----------------
Setup the serial port for 57600 baud at 11.0592MHz.
---------------*/
/*串行口初始化*/
PCON |=0x80;
SCON = 0x52; /* mode 1: 8-bit UART, enable receiver */
TMOD |= 0x20; /* timer 1 mode 2: 8-Bit reload */
TH1 = 0xff; /* reload value 57600 baud */
TR1 = 1; /* timer 1 run */
IE=0x80;
ES0 = 1; /* enable serial port interrupt */
CON_TXD=1; /*总线通信控制*/
while (1)
{
AddressCheck() /*地址判断函数*/
switch (Function)
{
case '1': //电机控制
if(Direction=='1')
P1_1=0; //方向:顺时针
else
P1_1=1; //方向:逆时针
... ...
ch=SBUF;
RI=0;
if(ch=='S') //如果收到停机命令,就立即停止转动电机
break;
}
break;
case '2': //读轴编码器
}... ...
结束语
通过RS485总线和光纤通信实现了步进电机控制的加速器偏转板的实时远程测控。目前,加速器偏转板自动控制系统已进入运行阶段,系统运转正常,满足工程设计要求。