您的位置 首页 模拟

51单片机PID算法程序(三)增量式PID操控算法

当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID的增量算法。增量式PID控制算法可以通过(2-

当执行机构需求的不是操控量的绝对值,而是操控量的增量(例如去驱动步进电动机)时,需求用PID的“增量算法”。

增量式PID操控算法能够经过(2-4)式推导出。由(2-4)能够得到操控器的第k-1个采样时间的输出值为:

(2-5)

将(2-4)与(2-5)相减并收拾,就能够得到增量式PID操控算法公式为:

(2-6)

其间

由(2-6)能够看出,假如核算机操控系统选用稳定的采样周期T,一旦确认A、B、C,只需运用前后三次丈量的偏差值,就能够由(2-6)求出操控量。

增量式PID操控算法与方位式PID算法(2-4)比较,核算量小得多,因此在实践中得到广泛的使用。

方位式PID操控算法也能够经过增量式操控算法推出递推核算公式:

(2-7)

(2-7)便是现在在核算机操控中广泛使用的数字递推PID操控算法。

增量式PID操控算法C51程序

typedef struct PID

{

int SetPoint;//设定方针Desired Value

long SumError;//差错累计

double Proportion;//份额常数Proportional Const

double Integral;//积分常数Integral Const

double Derivative;//微分常数Derivative Const

int LastError; //Error[-1]

int PrevError; //Error[-2]

} PID;

static PID sPID;

static PID *sptr = &sPID;

void IncPIDInit(void)

{

sptr->SumError = 0;

sptr->LastError = 0;//Error[-1]

sptr->PrevError = 0;//Error[-2]

sptr->Proportion = 0;//份额常数Proportional Const

sptr->Integral = 0;//积分常数Integral Const

sptr->Derivative = 0;//微分常数Derivative Const

sptr->SetPoint = 0;

}

int IncPIDCalc(int NextPoint)

{

register int iError, iIncpid;//当时差错

iError = sptr->SetPoint – NextPoint;//增量核算

iIncpid = sptr->Proportion * iError//E[k]项

– sptr->Integral * sptr->LastError//E[k-1]项

+ sptr->Derivative * sptr->PrevError;//E[k-2]项

//存储差错,用于下次核算

sptr->PrevError = sptr->LastError;

sptr->LastError = iError;

//回来增量值

return(iIncpid);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/260189.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部