PID控制算法

参考:https://www.cnblogs.com/steed/p/7808303.html

概述

在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点
在这里插入图片描述

分类

模拟PID控制算法

模拟PID(一般由硬件组成,比如电子原件)由硬件实现。

数字PID控制算法

数字PID(通过AD/DA,结合数字编程来实现)
数字位置式算法:适用当前的输出与过去的所有状态都有关系(积分累加也就是误差累加),并且控制器的输出就是实际的输出结果,一旦控制输出出错,那么整个系统都可能奔溃,并且在整定参数时,要防止过冲现象。
数字增量式算法:增量式的PID输出只是控制量的增量,计算输出的结果是实际输出的增量。而实际的计算结果 + 当前的位置值 才是最终的输出,当控制输出出错时,对系统影响会小很多。
位置式算法和增量式算法区别:唯一的区别就是位置式PI需要同时设置积分限幅和输出限幅,而增量式PI只需输出限幅。

数字增量式算法

公式:
△u(k)= u(k)- u(k-1)
△u(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]
代码实现:

float pid_realise(float speed)//实现pid  
{
    pid.set_speed = speed;//设置目标速度  
    pid.error = pid.set_speed - pid.actual_speed;
    float increment_speed;//增量
     
    increment_speed = pid.kp*(pid.error-pid.error_next)+pid.ki*pid.error+pid.kd*(pid.error-2*pid.error_next+pid.error_last);//增量计算公式  
    
    pid.actual_speed+= increment_speed;
    pid.error_last = pid.error_next;//下一次迭代  
    pid.error_next = pid.error;
    return pid.actual_speed; 
    
}

数字位置式算法

在这里插入图片描述
代码实现:

 /**************************************************************************
    函数功能:位置式PID控制器
    入口参数:编码器测量位置信息,目标位置
    返回  值:电机PWM
    根据位置式离散PID公式 
    pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]
    e(k)代表本次偏差 
    e(k-1)代表上一次的偏差  
    ∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,,k;
    pwm代表输出
    **************************************************************************/
    int Position_PID (int Encoder,int Target)
    {   
         float Position_KP=80,Position_KI=0.1,Position_KD=500;
         static float Bias,Pwm,Integral_bias,Last_Bias;
         Bias=Encoder-Target;                                  //求出速度偏差,由测量值减去目标值。
         Integral_bias+=Bias;                                    //求出偏差的积分
         Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);       //位置式PID控制器
         Last_Bias=Bias;                                       //保存上一次偏差 
         return Pwm;                                           //增量输出
    }

参数整定

参考https://yq.aliyun.com/wenji/270316?spm=a2c4e.11155472.blogcont.22.35252743YzHhsz

控制系统要求

控制系统的 3 个要求:稳定性、快速性、准确性

评估指标:

在这里插入图片描述
最大超调量:响应曲线的最大峰值与稳态值的差,是评估系统稳定性的一个重要指标
上升时间:指响应曲线从原始工作状态出发,第一次到达输出稳态值所需的时间,是评估系统快速性的一个重要指标
静差: 被控量的稳定值与给定值之差,一般用于衡量系统的准确性

PID参数整定的一般方法

  • 实验凑试法,整定步骤为"先比例,再积分,最后微分,这也是初接触PID的人常使用的。

  • 理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。

  • 实验经验法,扩充临界比例度法,实验经验法调整PID参数的方法中较常用的是扩充临界比例度法,其最大的优点是,参数的整定不依赖受控对象的数学模型,直接在现场整定、简单易行。

不同的控制系统对控制器效果的要求不一样。比如平衡车、倒立摆对系统的快速性要求很高,响应太慢会导致系统失控。智能家居里面的门窗自动开合系统,对快速性要求就不高,但是对稳定性和准确性的要求就很高,所以需要严格控制系统的超调量和静差。
一个控制系统的控制难度,一般取决于系统的转动惯量和对响应速度的要求等。转动惯量越小、对响应速度要求越低,PID 参数就越不敏感。比如现在我们控制电机转 90°,需要严格控制超调量、和静差。但是对响应速度无要求。因为电机处于轻载的情况下,转动惯量很小,这是一个很容易完成的工作。根据上面的理论分析和实践,因为响应速度无要求,一般 P 应该给小一点,然后加大系统的阻尼防止超调,也就是 D 参数尽量大,另外因为 P 值较小,应该加入I 控制减小静差。

优缺点

数字增量式算法优点

  1. 由于计算机输出增量,所以误动作影响小,必要时可用逻辑判断的方法去掉;
  2. 增量设计只与本次的偏差值有关,与阀门原来的位置无关,因而增量算法易于实现手动/自动无扰动切换。
  3. 不产生积分失控,所以容易获得较好的调节品质

数字增量式算法缺点

  1. 积分截断效应大,有静态误差;
  2. 溢出的影响大,静差大点

数字位置式算法优点

  1. 无截断效应大,静态误差小;

数字位置式算法缺点

  1. 有积分累积误差
  2. PID计算结果直接是输出,系统故障时存在控制隐患,不易于实现手动/自动无扰动切换
  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值