基于Proteus 的PC 机对步进电机运动控制仿真
时间:01-02
来源:互联网
点击:
1引言
步进电机在简单的开环工作方式下能够达到相当高的定位精度,且低速运行时又可输出很大的转矩,因此在运动控制中得到了广泛的应用[1]。PC机步进电机控制系统,应用于多个领域如数控机床、机器人、激光加工设备等各种仪器设备。一个完整的PC机步进电机控制系统,下位机与PC机构成主从式控制结构:PC机负责人机交互界面的管理,包括键盘和鼠标的管理、系统状态的显示、控制指令的发送等部分工作;下位机完成运动控制的所有细节,包括脉冲和方向信号的输出、自动升降速的处理等部分工作。实际下位机开发过程复杂,主体包含硬件电路设计和控制程序设计两方面。控制程序设计过程需要软件调试、硬件调试、系统调试3个过程。软件调试一般比较容易进行,但如果要进行牵涉硬件的硬件调试或系统调试,包括元器件选用、PCB板制作、元器件焊接、程序烧录环节,其中任一环节的疏漏都可能造成程序调试失真。通过Proteus中各虚拟仪器所构建硬件电路,调试所设计程序的控制效果,达到虚拟硬件调试、虚拟系统调试程序的目的,为PC机步进电机系统开发提供有效的理论实践依据,避免因硬件电路设计过程错误引起的程序异常或硬件实验条件限制影响开发。
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件实现了单片机仿真和SPICE电路仿真相结合,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘、LCD、虚拟仪器、示波器、逻辑分析仪系统仿真的功能;支持主流单片机系统的仿真功能;在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态;支持第三方的软件编译和调试环境,如KeiluVision2、MTLAB等软件。由于Proteus软件本身的优良仿真特性,所设计程序能于Proteus中完成仿真过程的同时,即基本证明了所设计程序的准确性,从而基本完成了系统开发中的控制程序设计部分,并为系统硬件电路设计提供指导意义。
2设计要求
以构建基于Proteus的PC机对步进电机运动控制仿真系统为例,上位机人机交互界面由VB开发完成;下位机硬件电路由Proteus中各虚拟仪器所构建完成;下位机控制程序由KeiluVision2开发完成;期间还要采用虚拟串口(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下位机软件设计
下位机软件由KeiluVision2开发完成。程序本身通用于仿真Proteus、实际步进电机控制系统。下位机程序包括:初始化程序,串行中断程序,定时器T0中断程序,LCD显示函数(含几条控制命令子函数)及程序主函数体五部分构成。程序设计流程,如图2所示。
程序设计中要注意设置串行中断的优先级应高于T0中断,因为默认的ET0中断优先级是高于串行中断ES的[6],使用语句PT0=0;//低优先级,PS=1;//高优先级即可,因为只要当串行通信优先级最高时,才能实现上位机对下位机的实时控制,十分重要。串行中断中需应用字符型数据与ASCII码转化的算法。因为MSComm1.Output中送出去的是字符型数据,而AT89C51会把接收到的字符数据转化成ASCII码,这样如果上位机发送一个数据“0”,而下位机转化成ASCII码后即变成了“48”,显然这不是事先跟下位机约定的控制指令,所以需要对接收到的指令数据做一定的计算处理,然后再交给CPU进行判断。因为上位机的控制指令数据只有七个,使用语句if(temp=57temp>=48)temp=temp-0x30;即可实现。整个串行中断程序设计如下:
staticvoidcom_isr(void)interruptSIO_VECTORusing1
{
if(RI)//RI=0申请串行中断
{
temp=SBUF;
//从接收寄存器中读取指令数据
if(temp=57temp>=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公司提供的MicrosoftCommunicationsControl串行通信编程的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)
步进电机在简单的开环工作方式下能够达到相当高的定位精度,且低速运行时又可输出很大的转矩,因此在运动控制中得到了广泛的应用[1]。PC机步进电机控制系统,应用于多个领域如数控机床、机器人、激光加工设备等各种仪器设备。一个完整的PC机步进电机控制系统,下位机与PC机构成主从式控制结构:PC机负责人机交互界面的管理,包括键盘和鼠标的管理、系统状态的显示、控制指令的发送等部分工作;下位机完成运动控制的所有细节,包括脉冲和方向信号的输出、自动升降速的处理等部分工作。实际下位机开发过程复杂,主体包含硬件电路设计和控制程序设计两方面。控制程序设计过程需要软件调试、硬件调试、系统调试3个过程。软件调试一般比较容易进行,但如果要进行牵涉硬件的硬件调试或系统调试,包括元器件选用、PCB板制作、元器件焊接、程序烧录环节,其中任一环节的疏漏都可能造成程序调试失真。通过Proteus中各虚拟仪器所构建硬件电路,调试所设计程序的控制效果,达到虚拟硬件调试、虚拟系统调试程序的目的,为PC机步进电机系统开发提供有效的理论实践依据,避免因硬件电路设计过程错误引起的程序异常或硬件实验条件限制影响开发。
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件实现了单片机仿真和SPICE电路仿真相结合,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘、LCD、虚拟仪器、示波器、逻辑分析仪系统仿真的功能;支持主流单片机系统的仿真功能;在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态;支持第三方的软件编译和调试环境,如KeiluVision2、MTLAB等软件。由于Proteus软件本身的优良仿真特性,所设计程序能于Proteus中完成仿真过程的同时,即基本证明了所设计程序的准确性,从而基本完成了系统开发中的控制程序设计部分,并为系统硬件电路设计提供指导意义。
2设计要求
以构建基于Proteus的PC机对步进电机运动控制仿真系统为例,上位机人机交互界面由VB开发完成;下位机硬件电路由Proteus中各虚拟仪器所构建完成;下位机控制程序由KeiluVision2开发完成;期间还要采用虚拟串口(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下位机软件设计
下位机软件由KeiluVision2开发完成。程序本身通用于仿真Proteus、实际步进电机控制系统。下位机程序包括:初始化程序,串行中断程序,定时器T0中断程序,LCD显示函数(含几条控制命令子函数)及程序主函数体五部分构成。程序设计流程,如图2所示。
程序设计中要注意设置串行中断的优先级应高于T0中断,因为默认的ET0中断优先级是高于串行中断ES的[6],使用语句PT0=0;//低优先级,PS=1;//高优先级即可,因为只要当串行通信优先级最高时,才能实现上位机对下位机的实时控制,十分重要。串行中断中需应用字符型数据与ASCII码转化的算法。因为MSComm1.Output中送出去的是字符型数据,而AT89C51会把接收到的字符数据转化成ASCII码,这样如果上位机发送一个数据“0”,而下位机转化成ASCII码后即变成了“48”,显然这不是事先跟下位机约定的控制指令,所以需要对接收到的指令数据做一定的计算处理,然后再交给CPU进行判断。因为上位机的控制指令数据只有七个,使用语句if(temp=57temp>=48)temp=temp-0x30;即可实现。整个串行中断程序设计如下:
staticvoidcom_isr(void)interruptSIO_VECTORusing1
{
if(RI)//RI=0申请串行中断
{
temp=SBUF;
//从接收寄存器中读取指令数据
if(temp=57temp>=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公司提供的MicrosoftCommunicationsControl串行通信编程的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)
- 基于PROTEUS技术的ARM7显示系统设计与仿真实现(11-22)
- 单片机虚拟试验箱设计与研究(03-08)
- 基于PROTEUS软件的数字电压表印刷电路板设计(05-01)
- 基于51单片机的数字电压表仿真设计(05-29)
- Proteus在单片机教学和科技制作中的应用与实践(03-02)
- Proteus软件仿真与Keil的单片机系统设计(09-08)