PID算法详解(1)

根据偏差的比例(P)、积分(I)、微分(D)进行控制(简称PID控制),是

控制系统中应用最为广泛的一种控制规律。

        PID调节器之所以经久不衰,主要有以下优点:

        (1)技术成熟,通用性强

        (2)原理简单,易被人们熟悉和掌握

        (3)控制效果较好

(一)、PID的形式:

P:Proportion(比例),就是输入偏差乘以一个常数。
I  :Integral(积分),就是对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。

注:输入偏差=读出的被控制对象的值-设定值。比如说我要把温度控制在26度,但是现在我从温度传感器上读出温度为28度。则这个26度就是”设定值“,28度就是“读出的被控制对象的值”。

PID控制律的表达式:

对应的模拟PID调节器的传递函数为           

其中KP为比例增益;TI为积分时间常数;TD为微分时间常数;u(t)为控制
量(控制器输出);e(t)为被控量与给定值的偏差。

(二)PID参数对控制性能的影响

1.随着比例系数Kp的增加,超调量增大,系统响应速度加快,

2.积分时间常数Ti对控制性能的影响
        积分作用的强弱取决于积分常数Ti。Ti越小,积分作用就越强,反之
Ti大则积分作用弱。积分控制的主要作用是改善系统的稳态性能,消除
系统的稳态误差。当系统存在控制误差时,积分控制就进行,直至无
差,积分调节停止,积分控制输出一常值。
        加入积分控制可使得系统的相对稳定性变差。Ti值的减小可能导致
系统的超调量增大,Ti值的增大可能使得系统响应趋于稳态值的速度减
慢。

3.微分时间常数Td对控制性能的影响
        随着微分时间常数Td的增加,闭环系统响应的响应速度加快,调节
时间减小。微分环节的主要作用是提高系统的响应速度。由于该环节对
误差的导数(即误差变化率发生作用),它能在误差较大的变化趋势时施加
合适的控制。
        但是过大的Kd值会因为系统造成或者受控对象的大时间延迟而出现
问题。微分环节对于信号无变化或变化缓慢的系统不起作用。 

总结:

*比例控制能迅速反映误差,从而减小误差,但比例控制不能消除稳态误
  差,KP的加大会引起系统的不稳定;
 

*积分控制的作用是,只要系统存在误差,积分控制作用就不断地积累,
  输出控制量以消除误差。因此只要有足够的时间,积分控制将能完全消
  除误差,但是积分作用太强会使系统超调加大,甚至使系统出现振荡;


*微分控制可以减小超调量,克服振荡,使系统的稳定性提高,同时加快
  系统的动态响应速度,减小调整时间,从而改善系统的动态性能。

(三)数字PID控制器的基本算法(计算机编程实现,大家最关心的部分)

     由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计
算控制量。
        在计算机控制系统中,PID控制规律的实现必须用数值逼近的方法。
当采样周期相当短时,用求和代替积分、用后向差分代替微分,使模拟
PID离散化变为差分方程。
        (1) 数字PID位置型控制算法
        (2) 数字PID增量型控制算法

1.位置型控制算法

2.增量型控制算法

增量式控制算法的优点


        (1) 增量算法不需要做累加,控制量增量的确定仅与最近几次误差采
样值有关,计算误差或计算精度问题,对控制量的计算影响较小。而位
置算法要用到过去的误差的累加值,容易产生大的累加误差。
        (2)增量式算法得出的是控制量的增量,例如阀门控制中、只输出阀
门开度的变化部分,误动作影响小,必要时通过逻辑判断限制或禁止本\
次输出,不会严重影响系统的工作。而位置算法的输出是控制量的全量
输出,误动作影响大。
        (3) 采用增量算法,易于实现手动到自动的无冲击切换。
        (4) 利用增量算法,也很容易得出位置算法u(k)= u(k-1)+△u(k)

数字PID控制算法流程 

下文将讲解PID控制算法集中改进。

1.积分项改进

2.微分项改进

3.带死区的PID控制算法

  • 63
    点赞
  • 375
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PID算法是一种广泛应用于工业控制的控制算法PID算法的全称为“比例-积分-微分控制算法”,它通过对控制误差进行比例、积分和微分三项处理来生成控制输出。下面详细介绍PID算法的三项控制处理及其在C语言中的实现。 1. 比例控制 比例控制是指控制输出与控制误差成比例的关系,即控制输出正比于控制误差。比例控制的作用是快速响应,通过增加比例系数可以提高控制系统的灵敏度和响应速度,但是比例控制不能消除稳态误差。 在C语言中实现比例控制,可以使用以下代码: ```c float Kp = 1.0f; // 比例系数 float error = setpoint - process_variable; float output = Kp * error; ``` 2. 积分控制 积分控制是指控制输出与控制误差积分成比例的关系,即控制输出正比于控制误差的积分。积分控制的作用是消除稳态误差,通过增加积分系数可以提高控制系统的稳定性和精度,但是积分控制容易引起系统的超调和振荡。 在C语言中实现积分控制,可以使用以下代码: ```c float Ki = 0.1f; // 积分系数 float error_sum = 0; float error = setpoint - process_variable; error_sum += error * Ts; // Ts为采样周期 float output = Ki * error_sum; ``` 3. 微分控制 微分控制是指控制输出与控制误差微分成比例的关系,即控制输出正比于控制误差的微分。微分控制的作用是抑制系统的超调和振荡,通过增加微分系数可以提高控制系统的响应速度和抑制能力,但是微分控制对控制误差的噪声敏感,容易引起系统的抖动。 在C语言中实现微分控制,可以使用以下代码: ```c float Kd = 0.01f; // 微分系数 float last_error = 0; float error = setpoint - process_variable; float error_rate = (error - last_error) / Ts; // Ts为采样周期 float output = Kd * error_rate; last_error = error; ``` 综合三项控制处理,可以得到完整的PID控制算法的C语言实现,如下所示: ```c float pid_control(float setpoint, float process_variable, float Kp, float Ki, float Kd, float Ts) { static float error = 0; static float error_sum = 0; static float last_error = 0; float output = 0; // 计算比例项 error = setpoint - process_variable; float p_term = Kp * error; // 计算积分项 error_sum += error * Ts; float i_term = Ki * error_sum; // 计算微分项 float error_rate = (error - last_error) / Ts; float d_term = Kd * error_rate; // 计算输出 output = p_term + i_term + d_term; // 更新上一次的误差 last_error = error; return output; } ``` 在实际应用中,需要根据被控对象和控制要求对PID控制算法的参数进行调整,以达到最优的控制效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值