z515776036 z515776036
关注数: 4 粉丝数: 24 发帖数: 114 关注贴吧数: 5
新人,求助。。 int g_Pc_motor=11,g_Pi_motor=15,g_Pd_motor = 0; int16 g_motor_plus=0; int Current_Speed_Err=0; //当前的值 static int Last_Speed_Err=0; //上次的值 static int Pre_Speed_Err=0; //上上次的值 static int err_sum = 0; static int i =0; void Motor_plus(int16 next_speed) { Pre_Speed_Err = Last_Speed_Err; Last_Speed_Err = Current_Speed_Err; Current_Speed_Err = next_speed - g_pacnt_plus; //err_sum = err_sum + Current_Speed_Err - Err_Array[i]; //Err_Array[i++] = Current_Speed_Err; //if(i >= 11) // i = 0; //err_sum = Update_Array_Sum(Current_Speed_Err,Err_Array); g_motor_plus = g_motor_plus + g_Pc_motor * (Current_Speed_Err - Last_Speed_Err) + (int) g_Pd_motor * (Current_Speed_Err - 2*Last_Speed_Err + Pre_Speed_Err)/20 + (int)g_Pi_motor * Current_Speed_Err/30; //g_motor_plus = g_Pc_motor * Current_Speed_Err + g_Pi_motor * err_sum / 4; if(g_motor_plus > 1200) g_motor_plus = 1200; if(g_motor_plus < -1200) g_motor_plus = -1200; if(g_pacnt_plus < 10 && stop_flag ==1) { g_motor_plus = 0; g_Pc_motor=0;g_Pi_motor=0;g_Pd_motor = 0; } } int speed_k; /*int Motor_Countrl(int max_speed) { if(stop_flag == 1) { speed_k = 0; g_Pc_motor=5; g_Pi_motor=4; //g_motor_plus = 0; //PTM = 0x20; } else if((mid_err > 10) || (mid_err < -10)) { speed_k = (max_speed + 40); } else speed_k = max_speed; if(0 != renziflag) { speed_k = 0; } else PTM = 0x00; if(1== stop_flag) { speed_k = 0; } return(speed_k); } */ int Motor_Countrl_1(int max_speed) { if(stop_flag == 1) { speed_k = 0; g_Pc_motor=5; g_Pi_motor=4; } else if((mid_err_err > 10) || (mid_err_err < -10)) { speed_k = (max_speed - 20); } else speed_k = max_speed; if(1== stop_flag) { speed_k = 0; } return(speed_k); } 这段pid程序 是什么类型的pid啊 求高手 好心人解答
1 下一页