PID公式的部署与选择
连续形式PID:
离散形式PID:
若将T并入K_i 和K_d ,则:
位置式PID由连续形式PID直接离散得到,每次计算得到的是全量的输出值,可以直接给被控对象
增量式PID由位置式PID推导得到,每次计算得到的是输出值的增量,如果直接给被控对象,则需要被控对象内部有积分功能 增量式PID也可在控制器内进行积分,然后输出积分后的结果,此时增量式PID与位置式PID整体功能没有区别 位置式PID和增量式PID计算时产生的中间变量不同,如果对这些变量加以调节,可以实现不同的特性
float Target,Actual,Out;
float K_P = 0,K_I = 0,K_D = 0;
float Error0,Error1,ErrorInt;Actual = Encoder_Get();
Error1 = Error0;
Error0 = Target - Actual;if(K_I != 0){ErrorInt += Error0;}
else{ErrorInt = 0;}Out = K_P * Error0 + K_I * ErrorInt + K_D * (Error0 - Error1);if(Out > 100){Out = 100;}
else if(Out < -100){Out = -100;}