1 / 6
文档名称:

电机spta控制算法.doc

格式:doc   大小:198KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

电机spta控制算法.doc

上传人:相惜 2020/8/9 文件大小:198 KB

下载得到文件列表

电机spta控制算法.doc

文档介绍

文档介绍:电机SpTA控制算法SpTA即StepsperTimealgorithm,它与步进电机S形曲线控制算不同,S形曲线控制算法思想是根据电机的步数来计算时间,即所谓的TimeperSteps,该控制算法先计算电机每一步运行频率,再根据运动曲线计算得到时间参数,而SpTA算法则是以时间计算为中心,根据时间来计算运动步数相关参数,它的做法是将电机的运动时间分割成若干个合适的小时间片,在每个时间片内它都将速度参数加到位置参数上,如果位置参数溢出,它就会输出一个脉冲,速度参数根据加速度参数和时间而改变,随着时间推移,速度参数越来越大,位置参数溢出频率越来越高,则电机的运行频率也越来越高[38]。为了实现根据速度参数控制脉冲输出频率,需要定义以下变量:umulator 位置累加器PosAdd 位置增加值ActualPosition 实际位置TargetPosition 目标位置,用户输入步进电机运动的步数在时间片到来后进行如下计算:umulator+=ActualVelocity;//位置累加器+实际速度PosAdd=umulator>>17;//移位,umulator-=PosAdd<<17;//位置累加器去掉溢出部分if(PosAdd!=0)//位置累加器溢出,产生一个不进脉冲{ActualPosition+=1;产生一个步进脉冲; } 这样控制器输出的脉冲频率就随着实际速度的增大而增高,随着实际速度减小而降低。为了根据时间实现实际速度的变化,需要定义以下变量:umulator eleration 实际加速度,用户设定的加速度数值VelAdd 速度增加值ActualVelocity 实际速度TargetVelocity 目标速度在时间片到来后进行如下计算:if(ActualVelocity!=TargetVelocity){//如果实际速度!=umulator+=eleration;//速度累加器+实际加速度VelAdd=umulator>>17;//移位,判断速度累加器是否溢出 umulator-=VelAdd<<17;//速度累加器去掉溢出部分 if(ActualVelocity<TargetVelocity){//如果实际速度<目标速度 ActualVelocity=MIN(ActualVelocity+VelAdd,TargetVelocity);//实际速度为两者中小者}elseif(ActualVelocity>TargetVelocity){//如果实际速度>大于目标速度ActualVelocity=MAX(ActualVelocity-VelAdd,TargetVelocity);//实际速度为两者中大者}}else{ //实际速度=目标速度,umulator=0;VelAdd=0;}这样,就实现了通过时间和目标速度改变电机实际速度参数,进而间接改变控制器输出脉冲的频率,时间参数是随着电机运行而递增的,目标速度参数数值是使用一个状态机根据当前的运行状态来确定的,该状态机具有四种状态:0:RAMP_IDLE-空闲状态1:ELERATE-加速状态2:RAMP_DRIVING-匀速状态3:RAMP_DECELERATE-减速状态状态状态切换及其条件如图3-11所示:图3-11SpTA控制算法状态机状态切换图SpTA算法同样是通过定时器来实现的,与S形