第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > pid负反馈闭环控制程序

pid负反馈闭环控制程序

时间:2019-12-07 23:05:50

相关推荐

pid负反馈闭环控制程序

一. 什么是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. 参数调试

4. 二者区别

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。