该代码实现了一个电机自动加减速控制程序。通过设置加减速标志MtAdDc_FLAG,程序分为加速和减速两个阶段:加速时根据运行距离分三个阶段调整速度(3mm内3倍延时、3-20mm内2倍延时、20mm以上正常速度);减速时根据剩余距离分三个阶段(30-20mm内2倍延时、20-10mm内3倍延时、10mm以下4倍延时)。通过调整脉冲间隔时间实现速度控制,最终输出高低电平脉冲驱动电机运行。程序包含距离判断、速度调节和脉冲输出等功能模块,实现了电机的平滑启停控制。
/***电机运行子程序运动值valmt运动值缓冲器val10*/
/******自动加减速 ------------*****/
/******进入子程序加减速标志MtAdDc_FLAG置1******/
/*---电机起始加速-----------------------------*/
/***电机起始3mm脉冲延时*3,3-20mm脉冲延时*2. ***/
/***大于200mm脉冲延时等于设置值 ***/
/*--------------------------------------------*/
/*---电机停止减速-----------------------------*/
/***小于30mm大于20mm开始减速(val_mtspeed*2) ***/
/***小于20mm大于10mm减速延时(val_mtspeed*3) ***/
/***缓冲器值小余10mm减速延时(val_mtspeed*4) ***/
/*--------------------------------------------*/
void Motor_Run1() /**/
{
MtAdDc_FLAG=1; //加减速标志置1,加速延时判断。加速结束置0,减速脉冲延时判断
for(val10>0;val10--;) //实际值与自动设定值之差
{
/////
if(MtAdDc_FLAG==1) //起步电机慢速 中速 全速三个阶段
{
if(valmt-val10<30) //电机运行总值减缓冲器值 3mm
MtAdDc_mtspeed=val_mtspeed*3; //3倍定时设定值 慢速启动
else if(valmt-val10<200&valmt-val10>30) //20mm---3mm
MtAdDc_mtspeed=val_mtspeed*2; //2倍定时设定值
else if(valmt-val10<300&valmt-val10>200) //30mm---20mm
{ //定时设定值
MtAdDc_mtspeed=val_mtspeed;
// P0=MtAdDc_mtspeed; //??? P0
MtAdDc_FLAG=0; //加减速标志置零,判断结束
}
}
/////
/////
else if(MtAdDc_FLAG==0) //电机减速判断
{
if(val10<300&val10>200) //小于30mm大于20mm开始减速(val_mtspeed*2)
{
MtAdDc_mtspeed=val_mtspeed*2;
}
else if(val10<200&val10>100) //小于20mm大于10mm减速延时(val_mtspeed*3)
{
MtAdDc_mtspeed=val_mtspeed*3;
}
else if(val10<100) //缓冲器值小余10mm减速延时(val_mtspeed*4)
{
MtAdDc_mtspeed=val_mtspeed*4;
}
}
/////
/////
for(k=0;k<coefficient;k++) //电机比例因子,K循环等于coefficient发一次脉冲
{
MTORCP=0; /*子函数开始*/
delay1ms(MtAdDc_mtspeed); //
MTORCP=1;
delay1ms(MtAdDc_mtspeed);
}
/////
}
}