一种基于嵌入式处理器的多路步进电机控制方法与系统与流程

文档序号:16127446发布日期:2018-11-30 23:55阅读:227来源:国知局

本发明涉及电机控制技术领域,尤其涉及一种基于嵌入式处理器的多路步进电机控制方法与系统。

背景技术

随着工业自动化的发展,为了提高产品生产效率,流水线在工业生产中得到了广泛地使用,而步进电机以其优异的开环控制性能,被越来越多地应用在流水线上。工作时多路步进电机同步运转,向前推送物品。为了保证产品生产安全和提高控制系统的控制精度,要求同步控制多路步进电机时步进电机能够实时响应控制信号;同时步进电机还存在容易出现失步和过冲的问题。现有技术中采用fpga或cpld同步控制多路步进电机,电机控制系统中步进电机响应迅速,但是结构复杂、价格高昂,不利于大范围推广;也有采用多块单片机来控制多路步进电机,每一路步进电机都采用一块单片机通过定时器内部中断输出脉冲信号来控制,这种方式中步进电机响应时间长,不能实时响应控制信号,多路步进电机间同步性差,并且浪费资源。



技术实现要素:

为了实现步进电机控制系统中步进电机的实时响应,降低成本,解决步进电机容易出现失步和过冲的问题,本发明提供一种基于嵌入式处理器的多路步进电机控制方法与系统。

本发明解决上述技术问题的技术方案如下:

第一方面,本发明实施例提供了一种基于嵌入式处理器的步进电机控制方法,所述方法包括:

步骤1:接收上位机发送的指令,所述指令包括需要调用的多路步进电机的编号、多路步进电机间的运转顺序和各步进电机对应的运转参数。

步骤2:根据所述运转顺序,通过freertos操作系统的多线程任务调度顺序调用所述编号对应的步进电机。

步骤3:根据所述运转参数,以tan_sigmoid电机控制函数分别控制多路步进电机进行相应的加减速运转。

步骤4:当检测到多路步进电机全部完成所述指令时,向上位机返回指令完成信息。

第二方面,本发明提供了一种基于嵌入式处理器的多路步进电机控制系统,所述系统包括嵌入式处理器,所述嵌入式处理器采用freertos操作系统,所述嵌入式处理器分别与上位机和步进电机连接。

所述嵌入式处理器用于接收上位机发送的指令,所述指令包括需要调用的多路步进电机的编号、多路步进电机间的运转顺序和各步进电机对应的运转参数。

根据所述运转顺序,通过freertos操作系统的多线程任务调度顺序调用所述编号对应的步进电机。

根据所述运转参数,以tan_sigmoid电机控制函数分别控制多路步进电机进行相应的加减速运转。

当检测到多路步进电机全部完成所述指令时,向上位机返回指令完成信息。

本发明的基于嵌入式处理器的多路步进电机控制方法和系统的有益效果是:在嵌入式处理器上采用freertos操作系统,通过任务调度控制电机驱动模块驱动步进电机运转,由于freertos操作系统的任务调度时间非常短,多个任务之间相互切换的速度非常快,调用多路步进电机可以视为并行同时执行,步进电机响应迅速,多路步进电机同步运转,实现步进电机控制系统中步进电机的实时响应,大幅提高了步进电机控制系统的工作效率;通过装载freertos操作系统的嵌入式处理器来同步控制多路步进电机,系统结构简单,成本较低,适于大范围推广;以tan_sigmoid电机控制函数控制步进电机先加速运转,达到指定速度后匀速运转,在最后预计的步数内减速运转,使步进电机运转过程中加速度变化更平缓,避免运转过程中加速度突变导致的失步和过冲。

附图说明

图1为本发明实施例的一种基于嵌入式处理器的步进电机控制方法流程示意图;

图2为本发明实施例的步进电机加速过程中频率变化曲线示意图;

图3为本发明实施例的步进电机减速过程中频率变化曲线示意图;

图4为本发明实施例的一种基于嵌入式处理器的步进电机控制系统的电路连接示意图;

图5为本发明实施例的电机驱动芯片的引脚连接示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

步进电机工作时,每接收一个控制脉冲就移动一个步距角,向前转动一步,当连续地输入控制脉冲时,步进电机就相应的连续转动起来。步进电机失步就是漏掉了控制脉冲没有运动到指定的位置,过冲就是运动超过了指定的位置。步进电机失步和过冲会影响步进电机控制系统的稳定性和控制精度,影响产品生产。步进电机的失步和过冲现象分别常出现在步进电机启动和停止时,为了克服失步和过冲现象,则在步进电机启动停止时加入适当的加减速控制,本实施例中采用tan_sigmoid电机控制函数来控制。

如图1所示,本发明实施例的一种基于嵌入式处理器的多路步进电机控制方法流程示意图,如图1所示方法的执行主体可以是嵌入式处理器,优选为stm32处理器,所述方法包括:

步骤1:接收上位机发送的指令,所述指令包括需要调用的多路步进电机的编号、多路步进电机间的运转顺序和各步进电机对应的运转参数。

具体地,预先对所有步进电机进行编号,嵌入式处理器通过freertos操作系统调用以太网口的任务接收上位机发送的指令。

步骤2:根据所述运转顺序,通过freertos操作系统的多线程任务调度顺序调用所述编号对应的步进电机。

具体地,各步进电机可以同时运转,也可以当一路步进电机运转结束后下一路步进电机再运转,也可以部分步进电机同时运转、部分步进电机挨个依次运转;freertos操作系统采用时间片轮转调度的方式实现多线程任务调度。

步骤3:根据所述运转参数,以tan_sigmoid电机控制函数分别控制多路步进电机进行相应的加减速运转。

具体地,为了克服失步、过冲现象,采用tan_sigmoid电机控制函数控制步进电机平稳加速和减速。

步骤4:当检测到多路步进电机全部完成所述指令时,向上位机返回任务完成信息。

本实施例中,通过freertos操作系统的任务调度来控制步进电机运转,由于freertos操作系统的任务调度时间非常短,多个任务之间相互切换的速度非常快,调用多路步进电机可以视为并行同时执行,步进电机响应迅速,多路步进电机同步运转,实现步进电机控制系统中步进电机的实时响应,大幅提高了步进电机控制系统的工作效率;通过装载freertos操作系统的嵌入式处理器来同步控制多路步进电机,系统结构简单,成本较低,适于大范围推广;以tan_sigmoid电机控制函数控制步进电机先加速运转,达到指定速度后匀速运转,在最后预计的步数内减速运转,使步进电机运转过程中加速度变化更平缓,避免运转过程中加速度突变导致的失步和过冲。

优选地,所述步骤1之前包括如下步骤:

预先进行freertos操作系统的移植。

顺序进行硬件初始化。

创建所述freertos操作系统的开始任务,所述开始任务包括以太网口的任务以及与多路步进电机一一对应的电机控制任务,所述电机控制任务用于调用所述tan_sigmoid电机控制函数。

具体地,freertos移植需要在原有工程基础上添加系统内核文件,并进行内核文件、启动代码的修改和配置。首先下载freertos操作系统的官方源代码,选择相对应的嵌入式处理器的demo,demo中包括freertosconfig.h文件,将整个demo复制到嵌入式处理器中。

然后对文件进行配置,配置部分具体分为8个选项:基础配置选项,内存申请配置选项,钩子有关函数配置选项,运行时间和任务状态收集有关选项,软件定时器有关配置选项,可选函数有关配置选项,中断有关配置选项和中断服务函数有关配置选项。

基础配置选项中,可使用最大优先级configmax_priorities,由于工程任务量较大,所以将其更改为较大值32。任务名称字符串长度configmax_task_name_len适当进行扩大。时间片的调度功能为configuse_time_slicing,freertos的计数信号量则是通过时间片的调度进行切换的,所以需要使能时间片的调度功能。优先级决定了执行任务的优先顺序,任务的优先级出现错误,会导致任务的执行顺序发生错乱,处理器出现故障,因此要正确设定任务优先级。

将钩子函数的相关配置选项全部关闭。钩子函数是操作系统消息处理机制的程序段,通过系统调用,把它挂入系统,可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。

终端服务函数有关配置选项中,系统滴答定时器中断xportsystickhandlersystick_handler,由于freertos的节拍就是由滴答定时器产生的,根据freertos的系统时钟节拍设置好滴答定时器的周期,这样就会周期性触发滴答定时器中断。由于电机控制中已经包含了滴答定时器中断,所以需要删除api函数。

具体地,所述硬件初始化包括:gpio通用输入输出端口初始化、定时器设定初始化、中断优先级初始化、步进电机锁死初始化、光电传感器初始化和网络初始化。

具体地,所述开始任务包括:较高任务优先级的以太网口的任务、普通任务优先级的步进电机的控制任务和较低任务优先级的呼吸灯的显示任务。

优选地,步骤2的具体实现为:根据所述运转顺序,在freertos操作系统上通过时间片轮转调度实现多线程任务调度,依次快速调用所述编号对应的多路步进电机的所述电机控制任务。

具体地,采用时间片轮转调度来调度任务,就是当一个任务执行一段时间后强制暂停去执行下一个任务,每个任务轮流执行;任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来;这样每个任务都能得到执行,由于处理器的执行效率非常高,时间片非常短,时间片轮转就在各个任务之间快速切换,多个任务近似于同时执行,从而实现多线程任务调度。

优选地,步骤3具体包括:根据步进电机的所述运转频率,通过步进电机对应的所述电机控制任务调用所述tan_sigmoid电机控制函数。

以所述tan_sigmoid电机控制函数控制步进电机先加速运转,加速过程中步进电机的速度曲线呈s型向上延伸。

当步进电机达到指定速度时,控制步进电机匀速运转。

在最后预计的所述运转步数内控制步进电机减速运转,减速过程中速度曲线为加速过程中的速度曲线的镜像曲线。

具体地,tan_sigmoid电机控制函数的函数公式为:

f(x)=2/(1+exp(-2x))-1

如图2所示的步进电机加速过程中频率变化曲线示意图,纵轴为步进电机的实时频率,横轴为步进电机运转的步数,加速的方程公式为:

f(i)=f_min+(f_max-f_min)/(1+exp(-a*(i-num)/num))

如图3所示的步进电机减速过程中频率变化曲线示意图,减速过程中的频率变化曲线为加速过程中频率变化曲线的镜像曲线,纵轴为步进电机的实时频率,横轴为步进电机运转的步数,减速的方程公式为:

f(i)=f_max-(f_max-f_min)/(1+exp(-a*(i-num)/num))

其中f(i)为即时频率值,i为正整数。f_min为起始频率值,f_max为最大频率值。a*(i-num)/num是对s型曲线进行拉伸变化,其中a代表s曲线区间的斜率变化,a的值越大,代表曲线斜率变化越快,即加速度越大;a的值越小,曲线斜率变化越小,越接近匀加速。曲线既不可以过陡,防止丢步或过冲,也不可以过于平缓,防止周期过长,一般取a的值为7。i是在循环计算过程中的索引,也就是加速的步数索引,从0开始。num为length/2大小,这样可以使s型曲线对称,length为加速的步数。

length分为两种情况,大于2000步和小于等于2000步。当lenth大于2000步时,步进电机先加速到1000步,然后匀速转动,最后1000步做减速转动;当length小于等于2000步时,前一半步数做加速转动,后一半步数做减速转动。

优选地,步骤4的具体实现为:检测到所述调用的步进电机全部运转完所述步数后,生成指令完成信息,并将所述指令完成信息反馈至上位机。

优选地,在流水线上设置接近开关,接近开关与嵌入式处理器电连接,当物品传送到接近开关处时,嵌入式处理器接收到接近开关被遮挡的信号,则控制步进电机停止运转,同时向上位机反馈指令完成信息。

如图4所示,本发明提供一种基于嵌入式处理器的多路步进电机控制系统,所述系统包括嵌入式处理器,所述嵌入式处理器采用freertos操作系统,所述嵌入式处理器通过网络模块与上位机连接,所述嵌入式处理器通过电机驱动模块与多路步进电机电连接。

所述嵌入式处理器用于接收上位机发送的指令,所述指令包括需要调用的多路步进电机的编号、多路步进电机间的运转顺序和各步进电机对应的运转参数。

根据所述运转顺序,通过freertos操作系统的多线程任务调度顺序调用所述编号对应的步进电机。

根据所述运转参数,以tan_sigmoid电机控制函数分别控制多路步进电机进行相应的加减速运转。

当检测到多路步进电机全部完成所述指令时,向上位机返回指令完成信息。

本实施例中,在嵌入式处理器上采用freertos操作系统,通过任务调度控制电机驱动模块驱动步进电机运转,由于多个任务之间相互切换速度非常快,调用多路步进电机可以视为并行同时执行,步进电机响应迅速,多路步进电机同步运转,实现步进电机控制系统中步进电机的实时响应,大幅提高了步进电机控制系统的工作效率;通过装载freertos操作系统的嵌入式处理器来同步控制多路步进电机,系统结构简单,成本较低,适于大范围推广;以tan_sigmoid电机控制函数控制步进电机先加速运转,达到指定速度后匀速运转,在最后预计的步数内减速运转,使步进电机运转过程中加速度变化更平缓,避免运转过程中加速度突变导致的失步和过冲。

优选地,嵌入式处理器可以采用stm32的f407型号处理器。

具体地,嵌入式处理器通过spi串行外设接口与网络模块连接,嵌入式处理器通过gpio通用输入输出接口与电机驱动模块连接。

优选地,网络模块可以采用w5500网络模块。

优选地,如图5所示,电机驱动模块可以选择a4984电机驱动芯片,需要对5个引脚进行自定义,分别设置5、6脚为细分脚,与嵌入式处理器连接;11脚为时钟脚,与嵌入式处理器连接,用于控制步数以及频率;12脚为电机使能脚;14脚为电机方向脚,与嵌入式处理器连接。另外15、18、19、和22脚分别与步进电机连接。

a4984芯片可输出的最大电流为±2a电流,步进电机的电流为1.414a,因此既可以避免电机驱动模块过载,又可以尽可能的提高步进电机的效率。

优选地,所述嵌入式处理器还用于:

预先进行freertos操作系统的移植。

顺序进行硬件初始化。

创建所述freertos操作系统的开始任务,所述开始任务包括以太网口的任务以及与多路步进电机一一对应的电机控制任务,所述电机控制任务用于调用所述tan_sigmoid电机控制函数。

优选地,所述嵌入式处理器具体用于:根据所述运转顺序,在所述freertos操作系统上通过时间片轮转调度实现多线程任务调度,依次调用所述编号对应的多路步进电机的所述电机控制任务。

优选地,所述嵌入式处理器具体还用于:根据步进电机的所述运转频率,通过步进电机对应的所述电机控制任务调用所述tan_sigmoid电机控制函数。

以所述tan_sigmoid电机控制函数控制步进电机先加速运转,加速过程中步进电机的速度曲线呈s型向上延伸。

当步进电机达到指定速度时,控制步进电机匀速运转。

在最后预计的所述运转步数内控制步进电机减速运转,减速过程中速度曲线为加速过程中的速度曲线的镜像曲线。

优选地,所述嵌入式处理器具体用于:当检测到调用的步进电机全部运转完所述步数时,生成指令完成信息,并将所述指令完成信息反馈至上位机。

优选地,所述系统还包括光电传感器,光电传感器设置在步进电机的零位处,通过gpio通用输入输出接口与stm32处理器电连接。

具体地,在步进电机的零位处安装光电传感器,当步进电机运转到零位时,光电传感器发出检测信号,嵌入式处理器接收到此检测信号,控制步进电机停在零位处,通过光电传感器复位,准确可靠。

优选地,所述系统还可以包括rs232串口传输模块和can收发器模块,用于与外界通讯。rs232串口传输模块与stm32处理器通过uart通用异步收发传输器连接,can收发器模块通过can控制器局域网络与stm32处理器连接。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1