if(set - now > 1) num = kp*err_now + ki*error_add + kd*(err_now - err_bef); else num = 0.1*kp*err_now + ki*error_add + kd*(err_now - err_bef); } else { if(now - set > 1) num = kp*err_now + ki*error_add + kd*(err_now - err_bef); else num = 0.1*kp*err_now + ki*error_add + kd*(err_now - err_bef); } */ if(num>num_bef) { printchar(1,10,'+'); printuint(1,11,4,num - num_bef); } else if(num void main() { lcd_init(); timer_init(); TH1 = TL1 = 255; printword(0,0,\ //比例系数 printword(0,5,\ //设定值 printword(1,0,\ //当前占空比 printword(0,10,\ //当前电机反馈的每秒脉冲数 while(1) { if(GORB == 1) { ZZ; } else { FZ; } if(ADDSPEED == 0) set++; if(SUBSPEED == 0) set--; if(Just_Get == 1) { Just_Get = 0; GetPulse(); } else if(t2_over == 1) { t2_over = 0; Just_Get = 1; pulse = t0_flag; bbef = bef; bef = now; now = t0_flag; if(set != 0) { TR1 = 1; } else { TR1 = 0; PWM = 0; } // tpwm = tpwm + PID(); tpwm = PID2(); } //增量式PID //位置式PID } } if(UP == 0) kp = kp + 1; if(DOWM == 0) kp = kp - 1; printuint(0,2,3,kp); printuint(0,7,3,set); printuint(1,5,4,tpwm); printuint(0,13,5,pulse);
PID控制步进电机转速仿真及c程序(2)
2019-08-30 23:52
PID控制步进电机转速仿真及c程序(2).doc
将本文的Word文档下载到电脑
下载失败或者文档不完整,请联系客服人员解决!