<>一. 什么是PID

比例-积分-微分(Proportion Integration Differentiation)的简称,PID是一个负反馈闭环控制系统。

<>二. PID应用场景

PID可以应用在对压力、温度、流量、液位等工艺变量要求维持在一定的数值上。

<>三. PID的代码以及控制逻辑

PID控制分两种,分别为位置式PID和增量式PID。

<>1. 位置式PID

位置式pid公式

ek:Sv -Pv (目标值与当当前值的误差)

<>2. 增量式PID

增量式pid公式

ek:Sv -Pv (目标值与当当前值的误差)
void IncPIDInit(void); int IncPIDCalc(int CurrPoint); void PID_SetValue(PID *
pid, int sv); #define MAXOUT 100 /********************结构体定义********************/
typedef struct PID { int32 SetPoint; //设定值 float Proportion; // 比例 float
Integral; // 积分 float Derivative; // 微分 int iError; //当前误差 int iIncpid; //增量误差
int LastError; //前1次误差值 int PrevError; //前2次误差值 int Uk; //输出返回值 } PID, *PID_t;
PID pid; static PID_t sptr; /********************PID参数初始化********************/
void IncPIDInit(void) { sptr = &pid; sptr->SetPoint = 700; //设定值 sptr->
Proportion= 3.0f; //比例 sptr->Integral = 0.0f; //积分 sptr->Derivative = 0.0f; //微分
sptr->LastError = 0u; //前2次误差值 sptr->PrevError = 0u; //前1次误差值 sptr->iError = 0;
//当前误差 sptr->iIncpid = 0; //输出返回值 }
/********************PID算法实现********************/ /** * 输入参数:当前控制量 * 返 回
值:目标控制量 */ int IncPIDCalc(int CurrPoint) { //当前误差 sptr->iError = sptr->SetPoint
- CurrPoint; /* 消除抖动误差 */ if((sptr->iError<0.05f )&& (sptr->iError>-0.05f)) sptr
->iError = 0.0f; //增量误差 sptr->iIncpid = sptr->Proportion * sptr->iError //E[k]项
- sptr->Integral * sptr->LastError //E[k-1]项 + sptr->Derivative * sptr->
PrevError; //E[k-2]项 //存储误差,用于下次计算 sptr->LastError = sptr->iError; sptr->
PrevError= sptr->LastError; //输出值限幅 if (sptr->iIncpid >= MAXOUT) { sptr->iIncpid
= MAXOUT; } else if(sptr->iIncpid <= 0u) { sptr->iIncpid = 0; } else sptr->
iIncpid= sptr->iIncpid; return (sptr->iIncpid); }
/********************更改目标温度********************/ void PID_SetValue(PID *pid, int
sv) { pid->Sv = sv; }
<>3. 参数调试

调整方式(on) 上升时间超调量安定时间稳态误差稳定性
↑ Kp减少 ↓增加 ↑小幅增加 ↗减少 ↓变差 ↓
↑ Ki小幅减少 ↘增加↑增加 ↑大幅减少↓↓变差↓
↑ Kd小幅减少 ↘减少↓减少↓变动不大→变好 ↑

<>4. 二者区别

实际应用中大多用增量式PID。优点是:控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果,并且在系统发生问题时,增量式不会严重影响系统的工作。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信