PID——输出偏移输&输入死区
输出偏移
要解决的问题:对于一些启动需要一定力度的执行器,若输出值较小,执行器可能完全无动作,这可能会引起调控误差,同时会降低系统响应速度
输出偏移实现思路:若输出值为0,则正常输出0,不进行调控;若输出值非0,则给输出值加一个固定偏移,跳过执行器无动作的阶段
输出偏移的PID输出值: 
if(Out > 0){Out -= 5;}
else if(Out < 0){Out += 5;}
输入死区
要解决的问题:在某些系统中,输入的目标值或实际值有微小的噪声波动,或者系统有一定的滞后,这些情况可能会导致执行器在误差很小时频繁调控,不能最终稳定下来
输入死区实现思路:若误差绝对值小于一个限度,则固定输出0,不进行调控 输入死区的PID输出值:

if(Error0 <= 5 && Error0 >= -5){
Out = 0;
}
else{
if(K_I != 0){ErrorInt += Error0;}
else{ErrorInt = 0;}
Out = K_P * Error0 + K_I * ErrorInt + K_D * (Error0 - Error1);
}
往往把这两种方法结合使用,来处理抖动问题
if(Error0 <= 5 && Error0 >= -5){
Out = 0;
}
else{
if(K_I != 0){ErrorInt += Error0;}
else{ErrorInt = 0;}
Out = K_P * Error0 + K_I * ErrorInt + K_D * (Error0 - Error1);
if(Out > 0){Out -= 5;}
else if(Out < 0){Out += 5;}
if(Out > 100){Out = 100;}
else if(Out < -100){Out = -100;}
}

浙公网安备 33010602011771号