参考: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 控制减小静差。
优缺点
数字增量式算法优点
- 由于计算机输出增量,所以误动作影响小,必要时可用逻辑判断的方法去掉;
- 增量设计只与本次的偏差值有关,与阀门原来的位置无关,因而增量算法易于实现手动/自动无扰动切换。
- 不产生积分失控,所以容易获得较好的调节品质
数字增量式算法缺点
- 积分截断效应大,有静态误差;
- 溢出的影响大,静差大点
数字位置式算法优点
- 无截断效应大,静态误差小;
数字位置式算法缺点
- 有积分累积误差
- PID计算结果直接是输出,系统故障时存在控制隐患,不易于实现手动/自动无扰动切换