【问题标题】:I don't understand Integral part of PID controller我不明白 PID 控制器的积分部分
【发布时间】:2012-11-24 15:04:58
【问题描述】:

我不了解 PID 控制器的组成部分。让我们假设这个来自维基百科的伪代码:

previous_error = 0
integral = 0 
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start

Integral 在开始时设置为零。然后在循环中,它会随着时间的推移整合错误。当我对测量值或设定值进行(正)更改时,误差将变为正,并且积分将随着时间的推移(从一开始)“吃掉”这些值。但是我不明白的是,当误差稳定回零时,积分部分仍然会有一些值(随着时间的推移积分误差)并且仍然会有助于控制器的输出值,但它不应该。

有人可以解释一下吗?

【问题讨论】:

标签: controller integral control-theory pid-controller


【解决方案1】:

考虑稳定状态下的输出...您希望测量值是设定值,误差为零,输出是保持过程稳定在测量值所需的任何值。 (在某些情况下可能为零,但输出可能并不总是需要为零 - 例如:您需要将加热器设置为 6.5 以将房间保持在 72F。)

如果误差为零,则比例误差项对输出没有任何贡献。

如果过程处于稳定状态,则 error-previous_error 为零,并且导数项没有任何贡献。

如果输出是使过程保持稳定状态的适当设置,则积分项必须是提供输出值的唯一项。它已经积累了正确的误差记忆,以测量单位乘以观察时间来衡量,可以通过 Ki 项转换为输出单位,单位为 outputUnits/(error*measurementTime)。

作为恒温器示例,如果输出是房间内电加热器旋钮上的 0-11 单位,并且您正在测量房间内的华氏度与每 1 分钟 72 华氏度的设定点,那么积分总结了您一直在记录的degreeFtooCold*minute,Ki 项会将观察到的误差总和转换为刻度盘上的单位。

积分在稳态下不为零是完全正常的,并且可以预期。

【讨论】:

    【解决方案2】:

    根据您要控制的系统和传感器的质量,控制器和系统/设备之间总会存在某种干扰。当有这种干扰时,控制器的积分部分不会归零,而是会抵消它!这是因为积分会不断变化,直到系统的输出等于参考值(即积分值与扰动相反)。

    参见 this page 描述控制参数的例子:steady state error 在系统和输入具有特定字符时是可能的,积分将尝试反对这一点,从而导致最终错误低得多,但在某些情况下更多超调。

    此外,传感器的精度/噪声会对积分值的精度施加限制,可能会在零附近波动。

    【讨论】:

      【解决方案3】:

      让我们这样看:错误本身稳定为零是不够的。要求积分变为零,这意味着测量值随时间的平均值与设定值匹配。

      一个不好的例子是尝试使用一些 Ki,Kp,Kd 从零达到 100% 的值。

      x = 0,60,80,90,98,99,100,100,100。

      x 的值是多少?平均值为 80.777。甚至没有接近 100。

      【讨论】:

      • 我还是不明白。你能解释一下吗?
      • 但只有当测量值超过设定值时积分才会归零(因为我们需要负误差)。在您的示例中,如果(Ki 为 1,dt 也为 1)当测量值为 100(= 设定点)时,控制器的输出仍将非零(我认为它会振荡)。但是如果 PI(D) 控制器调整得很好,就不会出现过冲。我还是不明白:(
      • 我不同意。超调是 I 的属性。另一方面,P/D 具有未到达目的地的属性。此外,集成通常是宽容的:I(n+1) = I(n)*alpha + (1-alpha)*error 会慢慢忘记早期的错误,更加强调当下。
      【解决方案4】:

      稳态误差需要 I 项。查看 Wikipedia 上的示例图。

      http://en.wikipedia.org/wiki/File:Change_with_Ki.png

      您可以通过更改 I 项的增益来查看图表中的变化。显然,由于积分饱和,Ki = 2 太高了,这就是导致剧烈过冲的原因。 Ki = .5 看起来不错,但如果您想尽快达到稳定值,则需要将 Ki 增加一点。看看 Ki = 1,它有点过冲,但仍然比 Ki = .5 更快地达到稳定。所以你必须决定这种权衡是否值得。

      【讨论】:

        【解决方案5】:

        我认为这里的部分解释是,随着积分部分的过冲,比例部分将开始反对它。因此,第二个过冲将更小,第三个甚至更小,依此类推。但如上所述,通常会有一些过程噪声导致误差不为零,控制器可能永远不会达到恒定输出,但输出的变化应该非常小。

        【讨论】:

          【解决方案6】:

          恕我直言,您有理由质疑 PID 定义,因为它使 PID 控制中的错误与积分项有关。 错误可以说明如下: 1) 即使误差为零,积分项也会导致输出动作。 2) 积分基于不再相关的先前错误。 如果控制器将输入与输出进行比较,并通过负反馈将误差驱动为零,则比例控制可以产生 0 误差。

          正确的 PID 项: D 项:将变化(微分)添加到稳态 INPUT 以在求和结中组合。

          I term:将变化(微分)添加到稳态 OUTPUT 的负(负反馈)以在求和结中组合。

          在(围绕)负反馈结合时,整合就是差异化

          输出以非常高的博弈和负极性(反相)连接到求和点。

          P 项:是所需的 OUTPUT 除以所需的 INPUT 或馈入求和结的信号除以 OUTPUT 的比率除以 信号由 INPUT 馈送到求和结。

          D 项,微分加快输出对输入的响应,使输出更快接近正确值。

          在接近正确/期望值时,积分会减慢输出响应。

          【讨论】:

            猜你喜欢
            • 2011-04-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-02-17
            • 2013-03-31
            • 2020-03-01
            • 2015-12-31
            相关资源
            最近更新 更多