51单片机PID算法程序(三)增量式PID控制算法
当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID的“增量算法”。
(2-5)
将(2-4)与(2-5)相减并整理,就可以得到增量式PID控制算法公式为:
(2-6)
其中
增量式PID控制算法与位置式PID算法(2-4)相比,计算量小得多,因此在实际中得到广泛的应用。
位置式PID控制算法也可以通过增量式控制算法推出递推计算公式:
(2-7)
(2-7)就是目前在计算机控制中广泛应用的数字递推PID控制算法。
增量式PID控制算法C51程序
typedef struct PID
{
int SetPoint;
long SumError;
double Proportion;
double Integral;
double Derivative;
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;
sptr->PrevError = 0;
sptr->Proportion = 0;
sptr->Integral = 0;
sptr->Derivative = 0;
sptr->SetPoint = 0;
}
int IncPIDCalc(int NextPoint)
{
register int iError, iIncpid;
iError = sptr->SetPoint - NextPoint;
iIncpid = sptr->Proportion * iError
- sptr->Integral * sptr->LastError
+ sptr->Derivative * sptr->PrevError;
//存储误差,用于下次计算
sptr->PrevError = sptr->LastError;
sptr->LastError = iError;
//返回增量值
return(iIncpid);
}
51单片机增量式PID控制算 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)