关键词:Proteus;步进电机;串口通信;MSC-51
XIAO Yun-mao,SUN Yi,ZHANG Hua-xing
Abstract:A Proteus-based simulation for the PC real-time control of stepper motor. PC softwaredeveloped by VB,the console which designed by proteus have simulation experiment through proteus. TheSimulation need a virtual serial port (VSPD)by communication between PC and console,just like a serialcommunication line. And then simulation was achieved. It provide a research method on PC control ofstepper motor in the relevant fields.
Key words:Proteus;Stepping motor;Serial communication;MSC-51
1 引言
步进电机在简单的开环工作方式下能够达到相当高的定位精度,且低速运行时又可输出很大的转矩,因此在运动控制中得到了广泛的应用[1]。PC 机步进电机控制系统,应用于多个领域如数控机床、机器人、激光加工设备等各种仪器设备。一个完整的PC 机步进电机控制系统,下位机与PC 机构成主从式控制结构:PC 机负责人机交互界面的管理,包括键盘和鼠标的管理、系统状态的显示、控制指令的发送等部分工作;下位机完成运动控制的所有细节,包括脉冲和方向信号的输出、自动升降速的处理等部分工作。实际下位机开发过程复杂,主体包含硬件电路设计和控制程序设计两方面。控制程序设计过程需要软件调试、硬件调试、系统调试3 个过程。软件调试一般比较容易进行,但如果要进行牵涉硬件的硬件调试或系统调试,包括元器件选用、PCB 板制作、元器件焊接、程序烧录环节,其中任一环节的疏漏都可能造成程序调试失真。通过Proteus 中各虚拟仪器所构建硬件电路,调试所设计程序的控制效果,达到虚拟硬件调试、虚拟系统调试程序的目的,为PC 机步进电机系统开发提供有效的理论实践依据,避免因硬件电路设计过程错误引起的程序异常或硬件实验条件限制影响开发。
Proteus 是英国Labcenter 公司开发的电路分析与实物仿真软件实现了单片机仿真和SPICE 电路仿真相结合,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘、LCD、虚拟仪器、示波器、逻辑分析仪系统仿真的功能;支持主流单片机系统的仿真功能;在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态;支持第三方的软件编译和调试环境,如Keil uVision2、MTLAB 等软件。由于Proteus 软件本身的优良仿真特性,所设计程序能于Proteus 中完成仿真过程的同时,即基本证明了所设计程序的准确性,从而基本完成了系统开发中的控制程序设计部分,并为系统硬件电路设计提供指导意义。
2 设计要求
以构建基于Proteus 的PC 机对步进电机运动控制仿真系统为例,上位机人机交互界面由VB 开发完成;下位机硬件电路由Proteus 中各虚拟仪器所构建完成;下位机控制程序由Keil uVision2开发完成;期间还要采用虚拟串口(VSPD),用于模拟一根串口通信线,实现上位机与下位机的串口通信,最终实现上位机(VB)对下位机(Proteus)中步进电机的实时控制过程。
2.1 系统总体框图
上位机通过RS232C 串口通信方式实现对下位机下达指令,下位机AT89C51 单片机根据接受到的指令,按一定的时序产生A、B、C、D 四相控制信号,分别实现单拍、双拍、单双拍的三种步进电机驱动方式。在实际运用中,单片机与步进电机之间一般还需要信号隔离、放大集成电路。下位机部分增设显示功能,由LCD1602 来完成实时地显示步进电机运动状态。Proteus 的仿真电路与实际电路可以有一定的区别,考虑到仿真的实践性验证,设计出实际仿真适用的整个控制模块,如图1 所示。
2.2 下位机仿真系统结构设计
在实际运用中,单片机控制步进电机需要隔离、放大模块。在仿真时该控制模块可省略,直接将步进电机与AT89C51 相连接,也可在仿真电路中使用,因这里主要是为了检测脉冲的控制效果,所以省去隔离、放大电路。
串口通信部分[3],非仿真控制中,上位机电平是RS232C 电平,而下位机是TTL 电平,不能直接通信的,所以增加一个电平转换芯片MAX232。在实际仿真中,由于上下位机都是在PC 中进行,所以无需电平转换芯片,否则会发生错误。实际仿真时,串口的2、3 位直接与AT89C51 的RXD、TXD 直接对接就可以了。
LCD 部分显示电路,当单片机驱动LCD 时,由于信号的传输过程会有损耗,所以在实际应用驱动LCD 时,常采用信号增益模块加以驱动。仿真过程无信号损耗,系统外部晶振电路,复位电路等在仿真过程可以省略。
综上所述,在搭建Proteus 下位机系统时,隔离放大模块、LCD 驱动模块、外部晶振电路和复位电路可有可无,而RS232 电平与TTL 电平转换模块必需省去。
3 软件设计
3.1 下位机软件设计
下位机软件由Keil uVision2 开发完成。程序本身通用于仿真Proteus、实际步进电机控制系统。下位机程序包括:初始化程序,串行中断程序,定时器T0 中断程序,LCD 显示函数(含几条控制命令子函数)及程序主函数体五部分构成。程序设计流程,如图2 所示。
程序设计中要注意设置串行中断的优先级应高于T0 中断,因为默认的ET0 中断优先级是高于串行中断ES 的[6],使用语句PT0=0;//低优先级,PS=1;//高优先级即可,因为只要当串行通信优先级最高时,才能实现上位机对下位机的实时控制,十分重要。串行中断中需应用字符型数据与ASCII 码转化的算法。因为MSComm1.Output 中送出去的是字符型数据,而AT89C51 会把接收到的字符数据转化成ASCII 码,这样如果上位机发送一个数据“0”,而下位机转化成ASCII 码后即变成了“48”,显然这不是事先跟下位机约定的控制指令,所以需要对接收到的指令数据做一定的计算处理,然后再交给CPU 进行判断。因为上位机的控制指令数据只有七个,使用语句if(temp<=57 & temp>=48)temp=temp-0x30;即可实现。整个串行中断程序设计如下:
static void com_isr(void)interrupt SIO_VECTOR using 1
{
if(RI)//RI=0 申请串行中断
{
temp=SBUF;
//从接收寄存器中读取指令数据
if(temp<=57 & temp>=48)
//判断指令寄存器数据
temp=temp-0x30;
//计算指令寄存器数据
RI=0;
//RI=0 为下一次串行中断做准备
k=0;//为显示函数执行条件
return;
}
}
设计T0 中断程序时,中段时间(它由定时计数器的初始值、工作方式共同决定)与中断次数关键内容,决定了驱动电机脉冲频率的变化,即决定了步进电机转速,需要设计一个合理的转速方便记录采集步进电机数据,观察单拍、双拍、单双拍驱动方式下电机的运动状态。
LCD 显示程序设计中因为“MODE:”是始终显示的,所以可以在程序初始化的时候就设计好LCD 的“MODE:”显示,然后再根据数据指令显示对应的步进电机运动状态,这样能节省MCU的处理时间,提高仿真系统的实时控能力。主程序体中完成最终接受来的上位机指令的处理,进而完成上位机控制步进电机的整个过程。
其中对应控制指令N,各个器件的状态。每一个N 值都意味着一条控制指令,不同N 值,步进电机、LCD、上位机Text、P1 口脉冲[5]会有对应的状态内容。具体如表1 所示。
3.2 上位机软件设计
上位机软件用VB 进行开发。采用Microsoft 公司提供的MicrosoftCommunications Control 串行通信编程的ActiveX 控件,封装了完整的所需的API 函数,为应用程序提供了通过串行口收发数据的简便方法。只要设置Settings 属性包括返回波特率、奇偶校验、数据位、停止位、对应串口等参数。然后设计对应的事件处理,以达到目标通信控制效果。程序主要开发对下位机发送的七条指令及Text 电机状态显示,实现上位机控制。
4 系统仿真运行效果及仿真分析
对应的单拍正转、双拍正转、单双拍正转种情况下由虚拟示波器(OSCILLOSCOPE)采集的脉冲驱动信号,如图3 所示。结合表1 的P1 口脉冲,剔除正常存在的毛刺与抖动,与实际驱动所需的对应脉冲信号是完全吻合的。
下位机在接收到单拍正转对应图3(a)指令后步进电机的相应运动过程,如图4 所示。此处,虚拟步进电机的虚拟步距角为90 度,图中A、B、C、D 四相红代表高电平,蓝代表低电平。图3 与图4 仿真过程记录的信息,与实际设计程序控制预期运行结果完全吻合,仿真效果明显可信。
如图5 所示,下位机在运行的条件下,上位机Option 单拍,单击正转按钮,即上位机向下位机发送指令“1”。其中的virtualTerminal(虚拟终端),是Proteus 软件的辅助分析工具,每次串口通信的指令将会被记录下来。步进电机会根据P1 的脉冲形式做对应的运动,Proteus 中LCD、上位机Text 正确显示步进电机运动状态。
5 结束语
提出了一种基于Proteus 的PC 机对步进电机运动控制仿真方法。所构建的仿真系统能很好的实现PC 机对步进电机的同步控制与状态显示整体过程,通过程序设计开发与仿真系统无缝连接,实现了程序所预期要求的控制过程,并给出了丰富的实验观察接口,仿真实现了程序硬件调试、系统调试过程。
参考文献
1 孙耀杰,左贺,康龙云,曹秉刚,史维祥. 抑制混合式步进电机转矩波动的时变重复控制[J]. 中国电机工程学报,2004,24(11):183~187
2 孟武胜,李亮. 基于AT89C52 单片机的步进电机控制系统设计[J]. 测控技术,2006,25(12):46~51
3 张俊杰,李世其,熊友军. 基于数据手套的机械手控制技术应用[J]. 计算机应用研究,2006(6):170~175
4 李河清,侯志祥. 基于串行通信的步进电机小型集散控制系统[J].计算机工程,2007,33(10):258~260
5 金建新,郑虎子. 16 位单片机控制混合式步进电机的研究[J]. 机械设计与制造,2007(9):94~96
6 李全利,迟荣强. 单片机原理及接口技术[M]. 北京:高等教育出版社,2004(1)