增量式PID指数字控制器的输出只是控制量的增量∆uk。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式PID控制算法进行控制。
1、公式推导:
增量式PID控制算法可以通过位置式PID公式推导出。
①:当前误差采样后的输出值
②:上一次误差采样后的输出值
①-② 得出增量式PID的公式为:
简化后得:
2.代码实现:
float Kp=40,Ki=0.08,Kd=0.01; //PID3个参数
float Error=0,Error_1=0,Error_2=0; //本次偏差 上次偏差 上上次偏差
float Uk=0,Uk1=0; //输出值 偏差值
/***********************************************************************/
//*******函数名:void Temp_PID()
//*******用 途:对温度进行PID调节
//*******说 明:
//*******参 数:
//*******返回值:
/***********************************************************************/
void Temp_PID(uint16_t set_temp, uint16_t now_temp, uint8_t ctr)
{
if(ctr == 1)//开启控制
{
Error=(float)(set_temp-now_temp);//当前温度减去上次问温度
Uk1=Kp*(Error-Error_1)+Ki*Error+Kd*(Error-2*Error_1+Error_2); //增量式PID公式
Uk+=Uk1; //计算输出量
if(Uk>99) //限幅
Uk=99;
if(Uk<-99) //限幅
Uk=-99;
if(Uk >= 0)
{
TIM_SetCompare3(TIM4,Uk);
TIM_SetCompare4(TIM4,0);
}
else
{
TIM_SetCompare3(TIM4,0);
TIM_SetCompare4(TIM4,0-Uk);
}
Error_2=Error_1;
Error_1=Error;
}
else//关闭控制
{
Uk = 0;
Uk1 = 0;
Error = 0;
Error_1 = 0;
Error_2 = 0;
TIM_SetCompare3(TIM4,0);
TIM_SetCompare4(TIM4,0);
}
}
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。