运动控制 PID算法

一、自动控制简介

自动控制系统是使用自动控制装置对关键控制参数进行自动控制,使它在收到外界干扰偏离正常状态时,能够自动的调节到目标范围内。

1.1 开环控制系统

输出只受到输入控制,没有反馈回路,控制精度和抗干扰能力差,例如家用风扇。

1.2 闭环控制系统

在开环控制系统的基础上引入反馈回路,利用输出和输入值的偏差进行控制,避免偏离预定目标,例如温室大棚。

1.3 电机速度闭环控制系统

二、PID算法

PID是Propotional、Integral、Differential 的首字母缩写,它是结合比例,积分,微分的一种自动控制算法。
本质是根据比例,积分,微分的函数关系进行计算,运算结果用于输出控制。
在这里插入图片描述

2.1 比例

u k = K p ⋅ e k u_k = K_p \cdot e_k uk=Kpek

  • uk 输出
  • Kp 比例系数
  • ek 偏差
  • Kp 越大,系统响应越快,越快到达目标值。
  • Kp 过大会使系统产生过大的超调和震荡,导致系统的稳定性变差。
  • 仅有比例环节无法消除静态误差
    在这里插入图片描述

成比例的反应控制系统的偏差信号,uk与输入偏差ek成正比,用来减小系统的偏差。

2.1.1 静态误差

系统趋于稳定时,实际和目标之间的偏差。产生原因是输出被外界干扰抵消。

假设温室大棚的目标温度设定为30°C,但由于某些外部因素(如天气变化、设备老化等)导致大棚内的实际温度偏离了目标温度。此时,温度控制系统启动比例控制来尝试将温度调整回目标值。

  1. 初始状态:
    • 目标温度(setpoint):30°C
    • 实际温度(initial state):25°C
    • 静态误差(error):30°C - 25°C = 5°C
  2. 比例控制作用:
    • 假设比例系数(Kp)为0.5(这只是一个示例值,实际应用中会根据系统特性进行调整)。
    • 控制输出(u)为比例系数乘以静态误差,即u = 0.5 * 5°C = 2.5°C。
  3. 系统响应:
    • 控制输出作用于系统,尝试将温度提升2.5°C。然而,由于系统本身的惯性和外部干扰的存在,实际温度可能不会立即上升到27.5°C(25°C + 2.5°C),而是会上升到一个略低于这个值的温度,比如27°C。
  4. 静态误差仍然存在:
    • 在这个新的稳态下,静态误差变为30°C - 27°C = 3°C,虽然比初始的5°C有所减小,但仍然存在。

这个例子清楚地展示了比例控制无法消除静态误差的原因:

  • 比例控制只根据当前的静态误差来调整控制输出,而没有考虑误差的历史积累或未来的变化趋势。
  • 因此,当系统受到持续的外部干扰或存在内部惯性时,比例控制可能无法将系统精确地调整到目标状态,而是会在一个接近目标值但略有偏差的状态下稳定下来。

2.2 积分

u k = K p ⋅ e k + K i ∑ j = 0 k e j u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j uk=Kpek+Kij=0kej

  • uk 输出
  • Ki 积分系数
  • Kp 比例系数
  • ek k时刻的误差
  • Σe 误差的积分

积分环节实际上是对误差进行累加的过程。当系统存在持续误差时,积分项会累积这些误差,并通过调整输出逐渐减小误差,直到偏差为零。这种机制使得系统能够更精确地达到并维持设定值。

以温度控制系统为例,假设目标温度设定为50℃。在只有比例控制的情况下,如果系统因为外部干扰(如热量散失)导致温度偏离目标值,比例控制只能根据当前的误差来调整加热功率,但无法完全消除由于外部干扰造成的误差累积。而引入积分环节后,控制系统会对历次误差进行累加,并根据累加的误差值来逐步调整加热功率,从而消除由于外部干扰造成的误差累积,使系统更精确地稳定在目标温度。

超调震荡产生过程:

  • 当系统通过积分作用达到目标值时,此时积分值项为最大值,如果积分系数较大,必然会导致系统产生超调震荡。
  • 对于惯性较大的系统,系统的响应速度相对较慢,无法立即跟上积分环节的快速调整,从而导致系统输出超出预期,产生超调震荡。

积分系数Ki的影响:

  • Ki过大:当Ki设置得过大时,积分作用会相对较弱。这意味着系统对误差的累积速度较慢,虽然可以更快地消除静差,但也可能导致系统对误差的敏感度降低,响应速度变慢。在某些情况下,过大的Ki还可能导致系统出现振荡现象。
  • Ki过小:当Ki设置得过小时,积分作用会相对较强。这会导致系统对误差的累积速度较快,虽然可以更有效地消除静差,但也可能使系统响应过度,产生不必要的振荡。此外,过小的Ki还可能导致系统无法稳定地维持在设定值附近。

2.3 微分环节

u k = K p ⋅ e k + K i ∑ j = 0 k e j + K d ( e k − e k − 1 ) u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j + K_d(e_k - e_{k-1}) uk=Kpek+Kij=0kej+Kd(ekek1)

微分环节的作用是根据偏差的变化率来进行控制,它能够预测偏差的未来趋势。微分作用有助于提高系统的动态性能,具体表现为:

  • 加快系统的响应速度:微分项能够预测误差的变化趋势,提前作出调整,从而加快系统的响应速度。
  • 减小超调和振荡:通过预测误差的变化,微分项可以在误差达到峰值之前进行调整,从而有效减小超调和振荡。
  • 增加系统稳定性:微分项还有助于减小高频噪声对系统的影响,提高系统的稳定性。然而,需要注意的是,过大的微分作用可能导致系统对噪声过于敏感,产生不必要的调整。

以温度控制系统为例,假设我们希望将房间的温度保持在设定值。当房间的实际温度低于设定值时,控制系统会启动加热器来升温。如果仅使用比例(P)和积分(I)环节进行控制,系统可能会出现超调和振荡现象,即温度超过设定值后再回落,如此反复。

此时,如果我们引入微分(D)环节,系统就能够预测温度的变化趋势。当系统检测到温度正在迅速上升时,微分项会立即产生一个控制作用,减小加热器的输出功率,从而避免温度超过设定值。这样,系统就能够更平稳地过渡到稳态,提高控制精度和稳定性。

2.4 位置式PID

u k = K p ⋅ e k + K i ∑ j = 0 k e j + K d ( e k − e k − 1 ) u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j + K_d(e_k - e_{k-1}) uk=Kpek+Kij=0kej+Kd(ekek1)

位置式PID 特点:

  • uk 直接对应输出(例如位置),如果计算出现异常,对结果影响非常大。
  • 全量计算,需要对偏差进行累加,计算量较大。
  • 在不带积分部件中效果很好,例如电机伺服阀,温控系统等。

2.5 增量式PID

  • 先写出位置式PID公式
    u k = K p ⋅ e k + K i ∑ j = 0 k e j + K d ⋅ ( e k − e k − 1 ) u_k = K_p \cdot e_k + K_i \sum_{j=0}^{k} e_j + K_d \cdot(e_k - e_{k-1}) uk=Kpek+Kij=0kej+Kd(ekek1)
  • 把K-1带入上述公式中,得到如下公式
    u k − 1 = K p ⋅ e k − 1 + K i ∑ j = 0 k − 1 e j + K d ⋅ ( e k − 1 − e k − 2 ) u_{k-1} = K_p \cdot e_{k-1} + K_i \sum_{j=0}^{k-1} e_j + K_d \cdot(e_{k-1} - e_{k-2}) uk1=Kpek1+Kij=0k1ej+Kd(ek1ek2)
  • 使用第一个公式减去第二个公式得到∆u
    ∆ u k = K p ⋅ ( e k − e k − 1 ) + K i ⋅ e k + K d ⋅ ( e k − 2 ⋅ e k − 1 + e k − 2 ) ∆u_k = K_p \cdot (e_k - e_{k-1}) + K_i \cdot e_k + K_d \cdot (e_k - 2 \cdot e_{k-1} + e_{k-2}) uk=Kp(ekek1)+Kiek+Kd(ek2ek1+ek2)

增量式PID特点:

  • 增量式PID计算的是相对于上一次输出等增量,即: u k = u k − 1 + ∆ u k u_k = u_{k-1} + ∆u_k uk=uk1+uk
  • 只与最近三次的偏差有关,计算出错对系统影响较小。
  • 计算量小,实时性好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕咚.萌西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值