数字PID控制算法

增量式PID控制算法

量式PID控制算法

2009-07-18 10:33

 

(转载 出处blog.ednchina.com/tengjingshu )blog.ednchina.com/tengjingshu/211739/message.aspx#

当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用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程序

/*==================================================================================================== 
PID Function 
The PID (比例、积分、微分) function is used in mainly 
control applications. PIDCalc performs one iteration of the PID 
algorithm. 
While the PID function works, main is just a dummy program showing 
a typical usage. 
=====================================================================================================*/

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;

/*==================================================================================================== 
Initialize PID Structure PID参数初始化
=====================================================================================================*/

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;

}

 

/*==================================================================================================== 
增量式PID计算部分 
=====================================================================================================*/

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);

}

转载于:https://www.cnblogs.com/Yz81128/p/3305012.html

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于数字PID控制算法实验结果分析,我可以给您提供一些思路和建议。 首先,数字PID控制算法是一种经典的控制算法,它的目的是通过对控制对象的反馈信号进行处理,来调节控制器的输出,达到控制目标。在实验中,我们通常会选取一个具有明确控制目标的控制对象,并对其进行一系列的实验操作,以测试PID控制算法的性能和效果。 针对数字PID控制算法实验结果分析,我们可以从以下几个方面来考虑: 1. 实验过程的设计和操作情况。这个方面我们可以考虑实验过程中是否存在干扰、噪声等因素,以及实验操作者的技术水平和实验设备的质量等因素。这些因素都会对实验结果产生影响,需要进行评估和控制。 2. 实验结果的数据采集和处理。在实验中,我们需要对控制对象的反馈信号进行采集和处理,获得控制器的输出和控制对象的状态等数据。这些数据需要进行清洗、处理和分析,以得到可靠的实验结果。 3. 实验结果的性能评价。在实验中,我们通常会选取一些指标来评价PID控制算法的性能,如超调量、调节时间、稳态误差等。需要对这些指标进行计算和分析,以得出控制算法的性能评价结果。 4. 实验结果的分析和总结。最后,我们需要对实验结果进行分析和总结,得出控制算法的优缺点和改进方向等结论。这个过程需要综合考虑整个实验过程中的各种因素,并进行适当的归纳和总结。 综上所述,数字PID控制算法实验结果分析涉及到多个方面的内容,需要从实验设计、数据处理、性能评价和结果分析等多个角度进行考虑和分析。希望以上内容能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值