调试增量式PID时遇到的问题

最近有一项目带一恒温部件,于是打算采用PID,查阅资料,PID分为位置式和增量式两种,我采用增量式。一轮操作后(复制粘贴),把PID控温部分写完了,然后准备开始调参,于是在某度开始搜索调参方式,翻了几篇文章后,大致都是这样子:

a)、积分时间置于最大,微分时间置于最小

b)、改变比例度,求起振点。

c)、加大微分时间使振荡停止,接着把比例度调得稍小一些,使振荡又产生,加大微分时间,使振荡再停止,

         来回这样操作,直至虽加大微分时间,但不能使振荡停止,以求得微分时间的最佳值,

         此时把比例度调得稍大一些直至振荡停止。

d)、把积分时间调成和微分时间相同的数值一般情况下是没有什么问题的,如果又产生振荡则加大积分时间直至振荡停止。

好,方法找到了,开始操作,积分和微分置0,调比例,结果如下:

 

 额,怎么我比例值怎么调都不振荡,怎么回事?无奈,分析一下算法吧。以下是我找到的增量式PID:

void PIDIncrementalCalc(PID_Incremental *vPID, float pv)
{
    float thisError;
    float increment;
    float pError, dError, iError;

    thisError = vPID->setpoint - pv;

    pError = thisError - vPID->lasterror;
    iError = thisError;
    dError = thisError - 2 * (vPID->lasterror) + vPID->preerror;

    increment = vPID->kp * pError + vPID->ki * iError + vPID->kd * dError;

    vPID->result += increment;

    vPID->preerror = vPID->lasterror;
    vPID->lasterror = thisError;
}

 一通理解发现:

比例项是当前误差减去前一个误差,那就是求误差的变化率

积分项是当前误差。唔?没有积分

微分项大致意思是求误差变化率的变化率

然后再查阅位置式PID代码:

void PIDRegulationCalc(PID_Regulation *vPID, float pv)
{
  float thisError;
  thisError = vPID->setpoint - pv;
  vPID->integral += thisError;
  vPID->result = vPID->kp * thisError + vPID->ki * vPID->integral + vPID->kd * (thisError - vPID->lasterror);
  vPID->lasterror = thisError;
}

一通理解发现:

比例项是误差

积分项是误差的累加

微分项是误差的变化率

咦?怎么增量式PID没积分,增量式PID的积分项是跟位置式的比例项是一样的,增量式PID的比例项是跟位置式的微分项是一样的,难道......?

再次查看网络的调参教程,发现他们都是用位置式PID的......。难怪,增量式PID的比例项相当于位置式的微分项,那我肯定怎么调都没用啊。而且增量式PID压根就没有积分,所谓的积分项其实是位置式的比例项。

所以,再次一番思考,增量式PID的调参方式应该是这样:

首先把比例项和微分项置0

然后调整积分项,求起振点

接着调节比例项,抑制振荡

最后调节微分项,削弱超调

按照这个来调,终于可以把PID调起来了。第一次搞PID,没想到踩了一个大坑。

其实我觉得增量式PID应该改成这样:

increment = vPID->kd * dError + vPID->kp * pError + vPID->kdd * ddError;

意思是增量=微分+比例+二阶微分

最后我发现网络上有的人在增量式PID上做积分分离、变积分等积分操作,我觉得都是扯,增量式PID都没积分,分离个啥积分、变个啥积分哦。

增量式PID调试是一种基于反馈控制原理的方法,用于优化和稳定系统的控制效果。在实际应用中,如果存在波动问题,可以通过以下几个方面来进行优化,减少系统的波动。 首先,可以从PID参数调整的角度入手。增量式PID控制器有三个参数,即比例系数Kp、积分间Ti和微分间Td,可通过调整这些参数来减少系统的波动。具体来说,可以适当减小Kp的值,增加Ti和Td的值,以降低系统对于干扰的敏感程度。 其次,可以考虑调整采样间和控制周期。合适的采样间和控制周期可以有效减少波动。如果采样间太长,可能导致对系统的响应不及,波动加大;如果采样间太短,可能会导致过多的抖动和干扰。因此,根据具体的系统特点,选择适当的采样间和控制周期,能够降低系统的波动。 此外,对于增量式PID控制器,也可以采用自适应控制策略。自适应控制策略能够根据系统的实际特性自动调整参数,从而减少波动。例如,可以引入模型参考自适应控制的思想,基于系统的模型进行参数调整,以适应不同的工况和外部干扰,从而减小波动。 总结起来,要减少增量式PID调试中的系统波动,可以从参数调整、采样间和控制周期的优化以及自适应控制策略的应用等多个方面入手。通过不断的实验和调试,找到最佳的控制策略和参数设置,能够有效地提高系统的稳定性和控制效果。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值