步进电机加减速控制子程序

 /****************XY电机后移*******************/
//uint           XMtPParameter;           //X电机位置参数(上料动作)
//uint           YMtSParameter;           //Y电机编辑前移
                void XYMTBack()
                {
                 uchar  ss;                   //延时系数
                 uint XYSpeed,XYPosition;  //电机延时参数 Y电机运动位置参数
                 bit    Start;               //起步标志
                 ss=20;                       //延时系数初始化
                 XYSpeed=XMtSParameter;    //速度
                 XYPosition=XMtPParameter; //位置 XMtPParameter第一步到位置X轴加
                 DIR1=1;                   //左移
                 DIR2=0;                   //后退
                 Start=1;                   //起步标志置一
                 do
                 {
                  if(Start==1)               // 起步
                  {
                  CP1=!CP1;     //输出脉冲
                  CP2=!CP2;     //输出脉冲
                  delay(XYSpeed+ss*5);//20×5..19*5...1*5
                  CP1=!CP1;     //输出脉冲
                  CP2=!CP2;     //输出脉冲
                  delay(XYSpeed+ss*5);
                  XYPosition--;
                  ss--;
                   if(ss<1)        //小于1加速段完成
                   {
                   ss=0;
                   Start=0;        //加速标志置零,结束加速
                   }            // ss=20循环结束,执行else循环体
                  }
                  else
                  {
                  CP1=!CP1;     //输出脉冲
                  CP2=!CP2;     //输出脉冲
                  delay(XYSpeed+ss*5);//XYPosition大于20ss=0
                  CP1=!CP1;     //输出脉冲
                  CP2=!CP2;     //输出脉冲
                  delay(XYSpeed+ss*5);
                  XYPosition--;
                  if(XYPosition<20)    //小于20启动减速
                  ss++;                //减速延时加 1*5..2*5..3*5
                  }
                 }
                 while(XYPosition);
               }

猜你喜欢

转载自blog.csdn.net/czhaii/article/details/80780351
今日推荐