位式PD算法
- 公式
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ba8d58884ab742741e277b280f4ff6e4.png)
- 代码:
float PD_control(const float *P_value,const float *D_value,const float *set_value,const float *mea_value)
{
static float current_error=0;
static float last_error=0;
float u=0;
current_error=*set_value-*mea_value;
u=(*P_value)*current_error+(*D_value)*(current_error-last_error);
last_error=current_error;
return u;
}
增量式PID算法
- 公式(此公式图片来源于网络)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f43772d6eda95312e43bda760dc913a9.png)
- 代码
float PID_control(const float *P,const float *I,const float *D,const float *set_Value,const float *mea_value)
{
static float current_error=0;
static float last_error=0;
static float last_last_error=0;
float da_U=0;
static float U=0;
current_error=*set_Value-*mea_value;
da_U=(*P)*(current_error-last_error)+(*I)*(current_error+last_error+last_last_error)+(*D)*(current_error-2*(last_error)+last_last_error);
U=U+da_U;
last_last_error=last_error;
last_error=current_error;
return U;
}