您的位置:首页 > 其它

分布式多串口步进电机控制的设计与实现

2010-06-29 16:29 423 查看
摘 要: 设计了一种基于串口扩展卡的分布式步进电机控制系统。采用串口扩展卡扩展RS-232串口数,每个串口对应一个单片机。计算机通过选择串口的方式与单片机进行通信,进而控制单个步进电机。整个系统易于扩展。重点介绍了计算机与单片机之间的控制协议及系统软硬件的实现。
1 系统的构成[1]
该系统由计算机,串口扩展卡,单片机,步进电机驱动器和步进电机构成,如图1。系统构造更加灵活且易于扩展。

计算机对步进电机的控制通过单片机和步进电机驱动器实现。计算机将各种控制要求在基于VC开发的程序下转换成相应的控制指令。通过串口将控制指令发送到单片机。再由单片机通过步进电机驱动器控制步进电机行走步距,行走速度,运转方向和运行状态。计算机采用中断方式与单片机进行数据传输。
传统的多机通信,主机要给从机一个地址编号,所有的从机在收到编号后与自己的地址编号核对,若一致则与主机之间建立通。而本文设计的系统,采用扩展串口卡扩展了通信串口数,使计算机可通过一个串口控制一台步进电机,有效地简化了计算机和单片机之间的通信编程。单片机控制电路中,CPU选用AT89S52,作为控制电路的核心部件。AT89S52通过RS232串行口,接收从上位控制计算机发送的控制指令,并解释命令,完成相应的操作;同时也可按要求通过串口向上位控制计算机反馈相应的应答信息。
系统采用DCM8082作为步进电机驱动器, DCM8082使用了双极性直流斩波技术,可使电机输出功率更高,速度更快。驱动器与步进电机采用4线连接方式。   
2 软件设计
分布式多串口步进电机控制系统的软件部分包括计算机与单片机之间控制协议的构造、 单片机控制程序以及基于VC开发的步进电机工作控制界面。
2.1计算机与单片机之间控制协议的构造
为保证计算机与单片机之间进行数据通信的灵活、高效、可靠,需构造一个控制协议。而在构造控制协议之前,应先了解步进电机的动作规律及计算机与单片机之间通信要求。
步进电机动作可按周期性和非周期性方式分类。周期性动作是指步进电机执行一系列动作后,下一周期又执行相同系列的动作。非周期性方式为步进电机的随机动作。因此构造控制协议时应考虑周期性动作的标识,单片机以此标识对该命令重复运行,以减少计算机与单片机之间的信息传输量。并且步进电机在运行过程中,用户应可根据需要控制步进电机执行暂停,继续运行及复位等运行方式。此外计算机向单片机发送指令后,单片机应存在回应机制。根据用户的需要反馈给计算机相应的确认消息。
本论文根据上述的电机运动规律及计算机与单片机之间的通信要求,构造一套控制协议。电机控制命令遵照控制协议定义的格式由计算机发向单片机。协议定义了控制命令由两部分组成:命令消息头和命令消息体。
2.1.1控制命令的命令消息头格式
命令消息头含括了控制命令的主要信息,包含了用户对单片机和步进电机的工作方式的要求及确保计算机与单片机之间数据通信正常。其详细定义见表1。

Syn(同步字): 同步字为0x81ff(无符号十六进制)。计算机向单片机先发送0x81,后发送0xff。Syn表征一个命令块的开始。
Message ID(命令编号): 命令编号为无符号数,范围0-255。不同的命令编号表征不同的电机运行的状态。本论文工作中,已实现的命令编号见表2。

其中,命令的优先级共0-2级,0级最低,2级最高;按优先级的不同,高优先级的命令可中断低优先级命令的执行,直到高优先级命令执行完后,再继续执行先前被中断的低优先级的命令。
Length(数据体长度): 数据体长度为无符号数,范围0-255。用以表示命令消息体中包含的字节数量。
StatusBit(状态): 用以表征用户是否需要单片机返回相应的确认消息以及步进电机是否需要重复执行PC传来的命令。该字节各Bit详细信息见表3。

F(Finish):为1时,要求单片机在执行完该命令后返回确认消息。A(Acknowledge):为1时,要求单片机在收到该命令后返回确认消息。I(Iteration):为1时,要求单片机对该命令重复执行。R(Reserved):保留。
HeaderCheckSum(头校验和):头校验和为无符号数,范围0-255。按下列公式计算:
HeaderCheckSum=,该公式中,H[i]为命令消息头中各标识符所含的信息所占的字节数,N为命令消息头中所含的标识符数。将H[i]按无符号数相加,若有溢出,则溢出位丢弃,保留尾数部分。当发送方将命令消息头发送给单片机,单片机收到命令消息头后,即先计算头校验和并与接收到的命令消息头中最後一字节的头校验和比较。若二者相等,则表示接收正确,否则单片机丢弃刚接收到的命令消息头,并返回出错信息,等待重新接收新的命令消息头。
2.1.2控制命令的命令消息体格式
命令消息体主要是表征步进电机该以何种方式运行,它与控制命令的命令消息头中的命令编号密切相关。系统共定义了四种电机运行状态,分别为:
①.控制步进电机运行(命令编号00H)
该控制命令的命令消息体长度为5Byte,控制步进电机按用户确定的步数和脉冲周期运转。各Byte详细信息见表4。

M(Mode):电机运转的方式。Byte1为00H时表示电机顺时针转动;Byte1为01H表示电机逆时针转动。C(Circle):步进电机运转所需脉冲周期,范围0-65535,单位?s 。Byte2和Byte3分别存储脉冲周期的低八位和高八位。S(Step):步进电机运行步数,范围0-65535。Byte4和Byte5分别存储运行步数的低八位和高八位。
②.电机运行暂停(命令编号11H)
此时,命令块只包含命令消息头,无命令消息体。该控制命令可暂停电机的运行。
③.继续执行(命令编号12H)
此时,命令块只包含命令消息头,无命令消息体。该控制命令可以使处于暂停状态的步进电机从暂停时的断点处继续执行。
④.复位(命令编号20H)
此时,命令块只包含命令消息头,无命令消息体。单片机执行此命令后,单片机清除所有命令缓冲区,并使电机处于等待接收新的控制命令的状态。
在命令消息体的定义中对电机的运行步数和运转周期作出了范围限制,若想扩展电机的运行步数及运转周期,只要相应增加消息体中存储步数和周期的字节数即可。
2.1.3单片机应答消息定义
当计算机将控制指令发向单片机后,单片机亦可以根据用户的需要返回相应的确认信息或是在接收控制指令出错时向计算机返回出错信息。具体的返回消息定义下:
A0H:单片机收到正确的命令后的返回值;B0H:单片机执行完命令后的返回值;C0H:单片机未能正确接收命令时返回出错消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐