一种步进电机的驱动控制装置和方法转让专利

申请号 : CN201010527688.0

文献号 : CN102005997B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄兵钟莲隋娜刘旭青

申请人 : 北京和利康源医疗科技有限公司

摘要 :

本发明公开了一种步进电机的驱动控制装置和方法;装置包括:上层控制机,用于生成电机控制命令,设置配置数据;处理模块,用于接收所述电机控制命令及配置数据,当所述电机控制命令指示驱动电机时,根据所述配置数据输出步进电机脉冲信号;接口模块,用于根据所述步进电机脉冲信号输出驱动信号给步进电机。本发明对上层控制机要求较低,能够降低成本和实现复杂度。

权利要求 :

1.一种步进电机的驱动控制装置,其特征在于,包括:

上层控制机,用于生成电机控制命令,设置配置数据;所述配置数据包括若干个频率等级各对应的运行频率和电机加速因子;各频率等级对应的所述电机加速因子分别用于指定在该频率等级上要运行的脉冲个数;

处理模块,用于接收所述电机控制命令及配置数据,当所述电机控制命令指示驱动电机时,根据所述配置数据输出步进电机脉冲信号,具体是指:所述处理模块当启动步进电机时,按照运行频率从低到高的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;当停止步进电机时,从当前频率等级开始,按照运行频率从高到低的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;其中,在各频率等级输出的步进电机脉冲信号数等于该频率等级对应的电机加速因子所指定的脉冲个数;

接口模块,用于根据所述步进电机脉冲信号输出驱动信号给步进电机。

2.如权利要求1所述的装置,其特征在于:

所述配置数据还包括电机运行频率和电机起停频率;

所述处理模块当启动步进电机时,从运行频率为所述电机起停频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机运行频率的频率等级为止;当停止步进电机时,从运行频率为所述电机运行频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机起停频率的频率等级为止。

3.如权利要求1或2所述的装置,其特征在于,所述处理模块具体包括:现场可编程门阵列FPGA;

RS232芯片,与所述上层控制机相连;

单片机,用于通过所述RS232芯片和所述上层控制机进行通信、根据所述电机控制信号控制所述FPGA;

所述FPGA用于根据所述单片机的控制输出步进电机脉冲信号。

4.如权利要求3所述的装置,其特征在于,所述处理模块还包括:若干个寄存器组,每组对应于一个步进电机;

所述FPGA分别根据各组寄存器的值输出若干路步进电机脉冲信号;

所述接口模块分别根据各路步进电机脉冲信号输出驱动信号给不同的步进电机。

5.如权利要求4所述的装置,其特征在于,各寄存器组分别包括:电机配置寄存器,用于保存所述配置参数,所述配置参数还包括运行脉冲数;

电机控制寄存器,包括表示“脉冲方式”的值和表示“定位方式”的值;

所述单片机还用于将所述配置参数保存在所述电机配置寄存器里,并设置电机控制寄存器的值;

所述FPGA启动步进电机时,读取电机控制寄存器的值;如果为表示“脉冲方式”的值,则从电机配置寄存器中读出运行脉冲数,当输出的步进电机脉冲信号个数等于所述运行脉冲数后停止步进电机;如果为表示“定位方式”的值,则到运行频率达到所述电机运行频率后停止步进电机。

6.如权利要求1所述的装置,其特征在于:

所述上层控制机和处理模块之间采用主/从式点对点通信协议,所述上层控制机为主机,所述处理模块为从机,当一方发出通信请求后,另一方应答请求;

所述上层控制机/处理模块用于发出请求信息帧,请求信息帧包括帧头,以及功能号、数据长度、请求数据、错误检验四个数据域;其中功能号定义了要对从机进行操作的命令类型;

所述处理模块/上层控制机收到所述请求信息帧后,按对应的功能号进行操作,并返回应答信息帧;当接收到的请求信息帧检查正确则回应正常应答信息帧,错误则回应异常应答信息帧;所述正常应答信息帧包括帧头,以及帧长度、功能号、应答数据、错误校验四个数据域;所述异常应答信息帧包括帧头,以及帧长度、功能号、应答数据三个数据域。

7.一种步进电机的驱动控制方法,包括:

生成电机控制命令,设置配置数据;所述配置数据包括若干个频率等级各对应的运行频率和电机加速因子;各频率等级对应的所述电机加速因子分别用于指定在该频率等级上要运行的脉冲个数;

当所述电机控制命令指示驱动电机时,根据所述配置数据输出步进电机脉冲信号,具体包括:当启动步进电机时,按照运行频率从低到高的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;当停止步进电机时,从当前频率等级开始,按照运行频率从高到低的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;其中,在各频率等级输出的步进电机脉冲信号数等于该频率等级对应的电机加速因子所指定的脉冲个数;

根据所述步进电机脉冲信号输出驱动信号给步进电机。

8.如权利要求7所述的方法,其特征在于:

所述配置数据还包括电机运行频率和电机起停频率;

当启动步进电机时,从运行频率为所述电机起停频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机运行频率的频率等级为止;当停止步进电机时,从运行频率为所述电机运行频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机起停频率的频率等级为止。

9.如权利要求7或8所述的方法,其特征在于,还包括:

设置若干个寄存器组,每组分别对应于一个步进电机;

所述根据配置数据输出步进电机脉冲信号的步骤具体包括:

分别根据各组寄存器的值输出若干路步进电机脉冲信号,分别根据各路步进电机脉冲信号输出驱动信号给不同的步进电机。

10.如权利要求9所述的方法,其特征在于,各寄存器组分别包括:电机配置寄存器,用于保存所述配置参数,所述配置参数还包括运行脉冲数;

电机控制寄存器,包括表示“脉冲方式”的值和表示“定位方式”的值;

所述方法还包括:

将配置数据保存在电机配置寄存器中,并设置电机控制寄存器的值;

启动步进电机时,读取电机控制寄存器的值;如果为表示“脉冲方式”的值,则从电机配置寄存器中读出运行脉冲数,当输出的步进电机脉冲信号个数等于所述运行脉冲数后停止步进电机;如果为表示“定位方式”的值,则到运行频率达到所述电机运行频率后停止步进电机。

说明书 :

一种步进电机的驱动控制装置和方法

技术领域

[0001] 本发明涉及工控领域,具体涉及一种步进电机的驱动控制装置和方法。

背景技术

[0002] 步进电机的转速取决于脉冲频率、转子齿数和拍数。其角速度与脉冲频率成正比,而且在时间上与脉冲同步。因而在转子齿数和运行拍数一定的情况下,只要控制脉冲频率即可获得所需速度。由于步进电机是借助它的同步转矩而启动的,为了不发生失步,启动频率是不高的。为了充分发挥电机的快速性能,通常使电机在低于启动频率下启动,然后逐步增加脉冲频率直到所希望的速度,所选择的变化速率要保证电机不发生失步,并尽量缩短启动加速时间。为了保证电机的定位精度,在停止以前必须使电机从最高速度逐步减小脉冲率降到能够停止的速度(等于或稍大于启动速度)。因此,步进电机拖动负载高速移动一定距离并精确定位时,一般来说都应包括“启动-加速-高速运行(匀速)-减速-停止”五个阶段,速度特性通常为梯形,如果移动的距离很短则为三角形速度特性,如图1所示。
[0003] 为实现这种加减速曲线,需要有大量的运算,如果采用动态算法更需要有高性能的运算处理芯片和高速数据接口如PCI(外设组件互连标准)接口,在这种控制场合中就对上层控制机有较高要求如工控主板,会增加系统价格和系统的复杂程度。

发明内容

[0004] 本发明要解决的技术问题是提供一种步进电机的驱动控制装置和方法,对上层控制机要求较低,能够降低成本和实现复杂度。
[0005] 为了解决上述问题,本发明提供了一种步进电机的驱动控制装置,其特征在于,包括:
[0006] 上层控制机,用于生成电机控制命令,设置配置数据;
[0007] 处理模块,用于接收所述电机控制命令及配置数据,当所述电机控制命令指示驱动电机时,根据所述配置数据输出步进电机脉冲信号;
[0008] 接口模块,用于根据所述步进电机脉冲信号输出驱动信号给步进电机。
[0009] 优选地,所述配置数据包括若干个频率等级各对应的运行频率和电机加速因子;各频率等级对应的所述电机加速因子分别用于指定在该频率等级上要运行的脉冲个数;
[0010] 所述处理模块根据所述配置数据输出步进电机脉冲具体是指:
[0011] 所述处理模块当启动步进电机时,按照运行频率从低到高的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;当停止步进电机时,从当前频率等级开始,按照运行频率从高到低的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;其中,在各频率等级输出的步进电机脉冲信号数等于该频率等级对应的电机加速因子所指定的脉冲个数。
[0012] 优选地,所述配置数据还包括电机运行频率和电机起停频率;
[0013] 所述处理模块当启动步进电机时,从运行频率为所述电机起停频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机运行频率的频率等级为止;当停止步进电机时,从运行频率为所述电机运行频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机起停频率的频率等级为止。
[0014] 优选地,所述处理模块具体包括:
[0015] 现场可编程门阵列FPGA;
[0016] RS232芯片,与所述上层控制机相连;
[0017] 单片机,用于通过所述RS232芯片和所述上层控制机进行通信、根据所述电机控制信号控制所述FPGA;
[0018] 所述FPGA用于根据所述单片机的控制输出步进电机脉冲信号。
[0019] 优选地,所述处理模块还包括:
[0020] 若干个寄存器组,每组对应于一个步进电机;
[0021] 所述FPGA分别根据各组寄存器的值输出若干路步进电机脉冲信号;
[0022] 所述接口模块分别根据各路步进电机脉冲信号输出驱动信号给不同的步进电机。
[0023] 优选地,各寄存器组分别包括:
[0024] 电机配置寄存器,用于保存所述配置参数,所述配置参数还包括运行脉冲数;
[0025] 电机控制寄存器,包括表示“脉冲方式”的值和表示“定位方式”的值;
[0026] 所述单片机还用于将所述配置参数保存在所述电机配置寄存器里,并设置电机控制寄存器的值;
[0027] 所述FPGA启动步进电机时,读取电机控制寄存器的值;如果为表示“脉冲方式”的值,则从电机配置寄存器中读出运行脉冲数,当输出的步进电机脉冲信号个数等于所述运行脉冲数后停止步进电机;如果为表示“定位方式”的值,则到运行频率达到所述电机运行频率后停止步进电机。
[0028] 优选地,所述上层控制机和处理模块之间采用主/从式点对点通信协议,所述上层控制机为主机,所述处理模块为从机,当一方发出通信请求后,另一方应答请求;
[0029] 所述上层控制机/处理模块用于发出请求信息帧,请求信息帧包括帧头,以及功能号、数据长度、请求数据、错误检验四个数据域;其中功能号定义了要对从机进行操作的命令类型;
[0030] 所述处理模块/上层控制机收到所述请求信息帧后,按对应的功能号进行操作,并返回应答信息帧;当接收到的请求信息帧检查正确则回应正常应答信息帧,错误则回应异常应答信息帧;所述正常应答信息帧包括帧头,以及帧长度、功能号、应答数据、错误校验四个数据域;所述异常应答信息帧包括帧头,以及帧长度、功能号、应答数据三个数据域。
[0031] 本发明还提供了一种步进电机的驱动控制方法,包括:
[0032] 生成电机控制命令,设置配置数据;
[0033] 当所述电机控制命令指示驱动电机时,根据所述配置数据输出步进电机脉冲信号;
[0034] 根据所述步进电机脉冲信号输出驱动信号给步进电机。
[0035] 优选地,所述配置数据包括若干个频率等级各对应的运行频率和电机加速因子;各频率等级对应的所述电机加速因子分别用于指定在该频率等级上要运行的脉冲个数;
[0036] 所述根据所述配置数据输出步进电机脉冲的步骤具体包括:
[0037] 当启动步进电机时,按照运行频率从低到高的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;当停止步进电机时,从当前频率等级开始,按照运行频率从高到低的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;其中,在各频率等级输出的步进电机脉冲信号数等于该频率等级对应的电机加速因子所指定的脉冲个数。
[0038] 优选地,所述配置数据还包括电机运行频率和电机起停频率;
[0039] 当启动步进电机时,从运行频率为所述电机起停频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机运行频率的频率等级为止;当停止步进电机时,从运行频率为所述电机运行频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机起停频率的频率等级为止。
[0040] 优选地,所述的方法还包括:
[0041] 设置若干个寄存器组,每组分别对应于一个步进电机;
[0042] 所述根据配置数据输出步进电机脉冲信号的步骤具体包括:
[0043] 分别根据各组寄存器的值输出若干路步进电机脉冲信号,分别根据各路步进电机脉冲信号输出驱动信号给不同的步进电机。
[0044] 优选地,各寄存器组分别包括:
[0045] 电机配置寄存器,用于保存所述配置参数,所述配置参数还包括运行脉冲数;
[0046] 电机控制寄存器,包括表示“脉冲方式”的值和表示“定位方式”的值;
[0047] 所述方法还包括:
[0048] 将配置数据保存在电机配置寄存器中,并设置电机控制寄存器的值;
[0049] 启动步进电机时,读取电机控制寄存器的值;如果为表示“脉冲方式”的值,则从电机配置寄存器中读出运行脉冲数,当输出的步进电机脉冲信号个数等于所述运行脉冲数后停止步进电机;如果为表示“定位方式”的值,则到运行频率达到所述电机运行频率后停止步进电机。
[0050] 本发明的技术方案适用于步进电机控制及IO控制系统中,利用静态步进电机加减速曲线实现步进电机加减运动控制,能够以低成本实现对步进电机的驱动控制;其优化方案同时可控制4路步进电机;本发明的另一优化方案自定义了基于RS232的通讯协议,上层控制机只需要支持RS232(如单片机)即可实现对步进电机的驱动控制。

附图说明

[0051] 图1为现有技术中步进电机的加减速曲线图;
[0052] 图2为实施例一的步进电机的驱动控制装置的示意框图;
[0053] 图3为实施例一中步进电机加减速曲线;
[0054] 图4为实施例一中处理模块的示意框图;
[0055] 图5为实施例一中处理模块的地址映射示意图;
[0056] 图6为实施例一中电机配置寄存器MotorConf示意图;
[0057] 图7为实施例一中的电机控制单元的逻辑示意图;
[0058] 图8为实施例一的步进电机的驱动控制装置通信过程;
[0059] 图9为实施例一的自定义通信协议模型与ISO/OSI参考模型对比图;
[0060] 图10a为实施例一的通信协议帧间超时间隔示意图;
[0061] 图10b为实施例一的通信协议帧内字符间超时间隔示意图;
[0062] 图11a为实施例一的通信协议请求与应答过程图;
[0063] 图11b为实施例一的通信协议帧格式示意图;
[0064] 图12为实施例一的通信协议状态变迁图。

具体实施方式

[0065] 下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
[0066] 实施例一,一种步进电机的驱动控制装置,如图2所示,包括:
[0067] 上层控制机,用于生成电机控制命令,设置配置数据;
[0068] 处理模块,用于接收所述电机控制命令及配置数据,当所述电机控制命令指示驱动电机时,根据所述配置数据输出步进电机脉冲信号,以完成电机控制。
[0069] 接口模块,其中搭建有针对具体应用的外围开关量及电机驱动电路,与外围设备相连,用于根据所述步进电机脉冲信号输出驱动信号给外部的步进电机驱动器,完成对步进电机的驱动控制。
[0070] 所述上层控制机还可以进一步用于生成IO操作命令;所述IO操作命令包括:IO复用使能、中断使能;
[0071] 所述处理模块还可以进一步用于接收所述IO操作命令,并根据该IO操作命令与所述接口模块进行IO控制信号的交互,包括进行所述接口模块中IO通道输入上传和输出控制,读写配置数据等;
[0072] 所述接口模块还用于在所述处理模块的控制下进行开关量的控制,包括输入开关量和输出开关量。
[0073] 本实施例中,所述处理模块和接口模块各为一电路板,所述接口模块可以但不限于通过20针板间连接器与所述处理模块连接,实现外围IO及电机驱动控制。
[0074] 本实施例中,所述上层控制机可以但不限于通过RS232接口和所述处理模块相连。
[0075] 本实施例中,所述上层控制机预先设定若干个(可以但不限于16个)频率等级(0-15),当步进电机需要启动时,使其频率按从频率等级0开始逐级上升最终到达给定的所述电机运行频率,在该电机运行频率上运行;当步进电机需要停止时,使其频率从所述电机运行频率逐级下降直到最终停止。这时需要指出的是所述电机运行频率必须小于或等于最高频率等级(15)的频率(该频率为电机极限频率),如图3所示。
[0076] 本实施例中,所述配置数据具体可以包括:若干个频率等级各对应的运行频率和电机加速因子;还可以包括电机运行频率和电机起停频率;还可以包括电机极限频率;各频率等级对应的所述电机加速因子分别用于指定在该频率等级上要运行的脉冲个数。
[0077] 所述处理模块根据所述配置数据输出步进电机脉冲具体可以是指:
[0078] 所述处理模块当启动步进电机时,按照运行频率从低到高的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号(即按照图3中的升速曲线运行);当停止步进电机时,从当前频率等级开始,按照运行频率从高到低的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号(即按照图3中的降速曲线运行);其中,在各频率等级输出的步进电机脉冲信号数等于该频率等级对应的电机加速因子所指定的脉冲个数。
[0079] 当配置数据包括电机运行频率和电机起停频率时,所述处理模块当启动步进电机时,是从运行频率为所述电机起停频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机运行频率的频率等级为止(包括该频率等级);当停止步进电机时,则是从运行频率为所述电机运行频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机起停频率的频率等级为止(包括该频率等级)。
[0080] 本实施例中,所述处理模块可以是根据所述电机控制命令指示来启动或停止步进电机;
[0081] 也可以是根据所述电机控制命令指示启动步进电机,当输出的步进电机脉冲信号个数等于一预设的运行脉冲数后停止;所述运行脉冲数可以包括在所述配置参数中,也可以设置在处理模块里,或为默认值;
[0082] 还可以是根据所述电机控制命令指示启动步进电机,当运行到所述电机运行频率后停止步进电机。
[0083] 所述电机加速因子越大,每个频率台阶运行的脉冲数越多,电机上升或下降越缓慢,反之则越迅速。这样上层控制机就可以通过设置配置参数中的电机运行频率、电机加速因子两个参数控制步进电机升速性,而通过运行脉冲数实现步进电机运动定位,从而灵活地满足具体应用场合。
[0084] 本实施例中,所述处理模块如图4所示,具体可以包括:
[0085] RS232芯片,与所述上层控制机相连;
[0086] 单片机,可以但不限于为8位MCU,用于通过所述RS232芯片和所述上层控制机进行通信、根据所述电机控制信号对FPGA控制,按地址访问FPGA内部功能模块、对外扩32K*8SRAM(Static random access memory,静态随机存储器)和EEPROM(Electrically Erasable Programmable Read-OnlyMemory,电可擦可编程只读存储器)的读写控制。
[0087] FPGA(现场可编程门阵列),用于进行数据地址复用总线地址锁存、SRAM的片选信号、步进电机升降速控制,并根据所述单片机的控制,输出步进电机脉冲信号及IO控制信号。
[0088] 还可以包括一电源,用于输出直流5V电压,实现5V到3.3V、1.5V电源为所述MCU、FPGA、RS232芯片、SRAM等供电。
[0089] 本实施例中,所述单片机可以但不限于采用SST89E58单片机,所述FPGA可以但不限于采用EP1C3T144C8N。
[0090] 本实施例中,所述FPGA具体可以包括如下功能单元:
[0091] 地址锁存单元,用于实现所述单片机数据地址复用总线锁存功能。
[0092] 片选逻辑单元,用于选择各功能单元。
[0093] 电机控制单元,用于输出若干路所述步进电机脉冲信号,可以但不限于4路,以进行4路步进控制及各自对应的脉冲发生器的控制。
[0094] IO控制单元,用于输出所述IO控制信号,以进行6路入16路出IO通道输入检测和输出控制。
[0095] 各功能单元的寄存器地址映射如图5所示。
[0096] 本实施例中,所述处理模块还包括若干个(比如但不限于四个)寄存器组,每组分别对应于一个步进电机,所述FPGA中的电机控制单元分别根据各组寄存器的值输出若干路步进电机脉冲信号,所述接口模块分别根据各路步进电机脉冲信号输出驱动信号给不同的步进电机,从而对不同的步进电机进行控制。
[0097] 各寄存器组分别包括:
[0098] 电机配置寄存器MotorConf,用于保存所述配置参数,包括:运行脉冲数、电机运行频率、电机加速因子、最大脉冲数、定位IO地址、保护IO地址,如图6所示。
[0099] 电机控制寄存器MotorCtrl,用于控制电机的起停方式,包括表示“脉冲方式”的值和表示“定位方式”的值;采用哪种方式可以由上层控制机设置,或在单片机中设置。
[0100] 电机状态寄存器MotorStat,用于保存步进电机当前运行状态。
[0101] 所述单片机将所述配置参数保存在所述电机配置寄存器里,并设置电机控制寄存器的值;
[0102] 如图7所示,启动步进电机时,所述FPGA中的电机控制单元首先读取电机控制寄存器的值;
[0103] 如果为表示“脉冲方式”的值,电机控制单元首先从电机配置寄存器中读出所述运行脉冲数N,控制电机按升降速曲线输出N个步进电机脉冲信号后停止步进电机。但在运行过程有保护位有效后,电机会自动停止。其中,所述保护位是MotorConf中保护IO地址所指定的数字输入DI。
[0104] 如果为表示“定位方式”的值,则电机控制单元从电机配置寄存器中读出电机运行频率,按升速曲线启动步进电机后一直运行,直到运行频率达到所述电机运行频率后开始近减速曲线停止步进电机。同样在运行过程有保护位有效后,电机停机。
[0105] 本实施例中,所述上层控制机和处理模块之间采用主/从式点对点通信协议,所述上层控制机为主机,所述处理模块为从机,当一方发出通信请求后,另一方应答请求。每次通信过程请求、应答成对出现。如图8所示。
[0106] 由于所采用的为点对点式协议,因而网络中只能有唯一个主机,唯一个从机。任何多于两个节点的网络此协议都不适用。
[0107] 所述上层控制机和处理模块之间在物理层采用EIA-RS-232C通信,图9为驱动控制协议与7层ISO/OSI参考模型对应关系。
[0108] 本实施例中,所述上层控制机和处理模块之间的通信参数如下:
[0109] 传送速度 57600bps
[0110] 数据位 8位
[0111] 校验位 1位(奇校验)
[0112] 起始位 1位
[0113] 停止位 1位
[0114] 物理接口:DB9接插头。
[0115] 通信线长:不超过20m,
[0116] 本实施例中,所述上层控制机和处理模块之间的接口定义如下表。
[0117] 表1、DB9引脚定义
[0118]
[0119] 通信状态显示:
[0120] 对于无人机界面设备,可以用一个LED灯显示,显示定义可以如下:
[0121]
[0122] 实际应用时,对于有人机界面的设备,可自行定义通信状态显示方式。
[0123] 所述上层控制机和处理模块之间进行通信过程为请求应答式,如图11a所示。所述上层控制机和处理模块之间进行通信采用的信息帧分为请求信息帧和应答信息帧。
[0124] 上层控制机发出请求信息帧,如图11b所示,请求信息帧包括帧头,以及功能号、数据长度、请求数据(包括寄存器地址和值)、错误检验四个数据域。其中功能号定义了一系列要对从机进行操作的命令类型。
[0125] 处理模块收到所述请求信息帧后,按对应的功能号进行操作,并形成应答信息帧给上层控制机;当接收到的请求信息帧检查正确则回应正常应答信息帧,错误则回应异常应答信息帧。
[0126] 如图11b所示,应答信息帧包括帧头,以及帧长度、功能号、应答数据(包括寄存器地址和值)、错误校验(异常应答信息帧无此域)四个数据域。
[0127] 同样也可以由处理模块发出请求信息帧,上层控制机返回应答信息帧。
[0128] 本实施例中,所述应答信息帧包括两种:正常应答信息帧和异常应答信息帧,如图10b所示。
[0129] 请求信息帧:由通信发起者发出,需要对记回应的信息帧,帧头为0xF5;
[0130] 正常应答信息帧:通信的被对方发出,对请求帧做出回应的信息帧,帧头为0xF6。
[0131] 帧时间处理:
[0132] 包括应答时间Tr(如图10a)和帧内时间Tc(如图10b);
[0133] 从发出请求信息帧开始,到收到对方发回的应答信息帧为止的一段时间如果大于应答时间Tr,则触发Tr通信超时,需要重发三次请求帧,三次失败后报错;本实施例中,应答时间Tr可以但不限于取为5s;
[0134] 一个信息帧的字符流必须在一定时间内传输完毕,因此接收信息帧时帧内各相邻字符间的接收时间间隔如果大于帧内时间Tc,则触发Tc通信超时,进入通信报错;本实施例中,帧内时间Tc可以但不限于取为1s。
[0135] 本实施例中,所述上层控制机和处理模块在通信过程中的状态变迁如图12所示。对各状态具体说明如下:
[0136] (1)系统上电后初始化通信协议后,直接进入空闲状态,做好两方面准备:来自通信对方的请求信息帧的接收;本地发给对方请求信息帧的准备。
[0137] (2)在空闲状态下,当本地需要向通信对方发送请求信息帧时,进入请求发送状态,此时本地不能接收对方请求信息帧。
[0138] (3)请求帧发送完成后(以发出帧最后一个字符为准,即CRC高8位为标志),进行应答接收准备状态。
[0139] 应答信息帧的帧头应在Tr内接收到,否则,触发Tr通信超时,需要重发三次请求帧,三次失败后报错。
[0140] (4)如果Tr内接收到应答信息帧帧头,此时进入应答信息帧接收状态,按字符接收应答信息帧,各相邻字符的接收时间间隔不得超过Tc,若在接收到一字符后在Tc内没收到下一字符,进入通信报错。
[0141] (5)如果各相邻字符的接收时间间隔都未超过Tc,完成应答信息帧的接收后,对应答信息帧进行检查,应答信息帧检查工作如下:
[0142] i.区分应答信息帧是否为正常应答信息帧(应答帧功能码若为0x8x为异常应答,否则为正常应答)。
[0143] ii.若为异常应答,需要重发请求信息帧,返回请求发送状态;
[0144] iii.若为正常应答,进行CRC校验,如果CRC校验正确,则存储帧信息,返回空闲状态;CRC校验错误,需要重发请求信息帧,返回请求发送状态。
[0145] (6)在空闲状态下,本地接收到通信对方的请求信息帧帧头后,进入请求接收状态。
[0146] (7)开始请求信息帧接收工作,接收按字符接收,各相邻字符的接收时间间隔不得超过Tc。若在接收到一字符后在Tc内没收到下一字符,则进入报错状态。
[0147] (8)如果各相邻字符的接收时间间隔都未超过Tc,完成应答信息帧的接收后,对请求信息帧进行检查,检查工作有如下四项:
[0148] i.功能码检查(对应异常码0x01);
[0149] ii.数据地址非法性检查(对应异常码0x02);
[0150] iii.数据值非法性检查(对应异常码0x03);
[0151] iv.CRC检查(对应异常码0x04)
[0152] 以上4项若有一项出错,进入异常应答状态,形成异常应答信息帧回发给通信对方;若4项全部检查正确,表明接收到请求信息帧正确,进入正常应答状态。
[0153] 正常应答状态中除了形成正常应答信息帧并回发给对方外,还要按请求帧信息中的命令完成对本地设备的操作(DO的状态改变等)。
[0154] 实施例二,一种步进电机的驱动控制方法,包括:
[0155] 生成电机控制命令,设置配置数据;
[0156] 当所述电机控制命令指示驱动电机时,根据所述配置数据输出步进电机脉冲信号;
[0157] 根据所述步进电机脉冲信号输出驱动信号给外部的步进电机驱动器,完成对步进电机的驱动控制。
[0158] 所述方法还可以进一步包括生成IO操作命令;根据该IO操作命令进行IO通道输入上传和输出控制,读写配置数据,进行开关量的控制等;所述IO操作命令包括:IO复用使能、中断使能。
[0159] 本实施例中,预先设定若干个(可以但不限于16个)频率等级(0-15),当步进电机需要启动时,使其频率按从频率等级0开始逐级上升最终到达给定的所述电机运行频率,在该电机运行频率上运行;当步进电机需要停止时,使其频率从所述电机运行频率逐级下降直到最终停止。这时需要指出的是所述电机运行频率必须小于或等于最高频率等级(15)的频率(该频率为电机极限频率)。
[0160] 本实施例中,所述配置数据具体可以包括:若干个频率等级各对应的运行频率和电机加速因子;还可以包括电机运行频率和电机起停频率;还可以包括电机极限频率;各频率等级对应的所述电机加速因子分别用于指定在该频率等级上要运行的脉冲个数。
[0161] 所述根据所述配置数据输出步进电机脉冲的步骤具体可以包括:
[0162] 当启动步进电机时,按照运行频率从低到高的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;当停止步进电机时,从当前频率等级开始,按照运行频率从高到低的顺序,逐个频率等级地根据该频率等级对应的运行频率输出步进电机脉冲信号;其中,在各频率等级输出的步进电机脉冲信号数等于该频率等级对应的电机加速因子所指定的脉冲个数。
[0163] 所述配置数据包括电机运行频率和电机起停频率时,当启动步进电机时,是从运行频率为所述电机起停频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机运行频率的频率等级为止(包括该频率等级);当停止步进电机时,则是从运行频率为所述电机运行频率的频率等级开始输出所述步进电机脉冲信号,直到运行频率为所述电机起停频率的频率等级为止(包括该频率等级)。
[0164] 本实施例中,可以是根据所述电机控制命令指示来启动或停止步进电机;
[0165] 也可以是根据所述电机控制命令指示启动步进电机,当输出的步进电机脉冲信号个数等于一预设的运行脉冲数后停止;所述运行脉冲数可以包括在所述配置参数中,也可以设置或为默认值;
[0166] 还可以是根据所述电机控制命令指示启动步进电机,当运行到所述电机运行频率后停止步进电机。
[0167] 所述电机加速因子越大,每个频率台阶运行的脉冲数越多,电机上升或下降越缓慢,反之则越迅速。这样就可以通过设置配置参数中的电机运行频率、电机加速因子两个参数控制步进电机升速性,而通过运行脉冲数实现步进电机运动定位,从而灵活地满足具体应用场合。
[0168] 本实施例中,所述方法还包括:
[0169] 设置若干个寄存器组,每组分别对应于一个步进电机;
[0170] 所述根据配置数据输出步进电机脉冲信号的步骤具体可以包括:
[0171] 分别根据各组寄存器的值输出若干路步进电机脉冲信号,分别根据各路步进电机脉冲信号输出驱动信号给不同的步进电机,从而对不同的步进电机进行控制。
[0172] 本实施例中,各寄存器组分别包括:
[0173] 电机配置寄存器MotorConf,用于保存所述配置参数,包括:运行脉冲数、电机运行频率、电机加速因子、最大脉冲数、定位IO地址、保护IO地址。
[0174] 电机控制寄存器MotorCtrl,用于控制电机的起停方式,包括表示“脉冲方式”的值和表示“定位方式”的值;
[0175] 电机状态寄存器MotorStat,用于保存步进电机当前运行状态。
[0176] 本实施例中,所述方法还可以包括:
[0177] 将配置数据保存在电机配置寄存器中,并设置电机控制寄存器的值;
[0178] 当启动步进电机时读取电机控制寄存器的值,如果为表示“脉冲方式”的值,则从电机配置寄存器中读出运行脉冲数N,控制电机按升降速曲线输出给定的运行脉冲数N个步进电机脉冲信号后停止步进电机。但在运行过程有保护位有效后,电机会自动停止。其中,所述保护位是MotorConf中保护IO地址所指定的数字输入DI。
[0179] 如果为表示“定位方式”的值,则从电机配置寄存器中读出电机运行频率,按升速曲线启动步进电机后一直运行,直到运行频率达到所述电机运行频率后开始近减速曲线停止步进电机。同样在运行过程有保护位有效后,电机停机。
[0180] 其它实现细节可参见实施例一。
[0181] 当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。