我不理解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
积分在开始时设置为零。然后在循环中它整合了错误随着时间的推移。当我对测量值或设定值进行(正)变化时,误差将变为正值,积分将在整个时间内(从头开始)“吃掉”值。但我不明白的是,当误差稳定回零时,积分部分仍然会有一些值(随时间积分的误差)并且仍然会对控制器的输出值有所贡献,但它不应该。
有人可以解释一下吗?
答案 0 :(得分:9)
将输出视为稳定状态...您希望measured_value为设定值,误差为零,输出为将过程保持稳定在测量值所需的任何值。 (在某些情况下可能为零,但输出可能并不总是需要为零 - 例如:您需要将加热器设置为标记6.5以将房间保持在72F。)
如果误差为零,则比例误差项对输出没有任何贡献。
如果进程处于稳定状态,则error-previous_error为零,且派生词没有任何作用。
如果输出是使过程保持稳定状态的适当设置,则积分项必须是提供输出值的唯一项。它累积了适当的误差记忆,以测量单位乘以观测时间,可以通过Ki项转换为输出单位,以outputUnits /(error * measurementTime)为单位。
作为恒温器示例,如果房间内电加热器旋钮上的输出为0-11单位,并且您正在测量房间中的度数F而不是每1分钟72F的设定值,那么积分总结你记录的DegreeFtooCold *分钟,Ki项将把观察到的错误的总和转换成表盘上的单位。
完全没问题,并且预期积分在稳定状态下不为零。
答案 1 :(得分:1)
让我们这样看:错误本身稳定到零是不够的。它要求积分变为零,这意味着测量值随时间的平均值与设定值匹配。
一个不好的例子是尝试从零开始达到100%的值,其中有一些Ki,Kp,Kd。
x = 0,60,80,90,98,99,100,100,100。
x的价值是多少?平均值为80.777。甚至不接近100。
答案 2 :(得分:1)
根据您要控制的系统和传感器的质量,控制器和系统/工厂之间总会存在某种干扰。当存在这样的干扰时,控制器的积分部分不会变为零,而是反作用!这是因为积分将一直变化,直到系统的输出等于参考值(即积分值与干扰相反)。
参见例如描述控制参数的this page:当系统和输入具有特定字符时,steady state error是可能的,积分将尝试反对这导致更低的最终错误,但在某些情况下会出现更多的过冲。
此外,传感器的精度/噪声可能会限制积分值的准确性,积分值可能会在零附近振荡。
答案 3 :(得分:1)
稳态错误需要I项。查看维基百科上的示例图。
http://en.wikipedia.org/wiki/File:Change_with_Ki.png
您可以通过更改I术语的增益来查看图表中的更改。显然,由于积分饱和,Ki = 2是通向高的方式,这是引起剧烈超调的原因。 Ki = .5看起来没问题,但如果你想尽快达到一个稳定的价值,你需要再增加一点Ki。看看Ki = 1,它略微超调,但仍然比Ki = .5更快地达到稳定。所以你必须决定这种权衡是否值得。
答案 4 :(得分:1)
我认为这里的部分解释是,当积分部分超调时,比例部分将开始反对它。因此,第二次过冲将更小,第三次更小,等等。但如上所述,通常会有一些过程噪声导致误差为非零,控制器可能永远不会达到恒定输出,但输出的变化应该非常小。
答案 5 :(得分:0)
在充分尊重的情况下,您有理由质疑PID定义,因为它相对于Intergral术语会使PID控制中的错误永久化。 错误可以说明如下: 1)即使没有错误,Intergral术语也会导致输出动作。 2)Intergral基于之前不再相关的错误。 如果控制器将输入与输出进行比较并通过负反馈并将误差驱动为零,则比例控制会产生0错误。
正确的PID术语: D term:将变化(微分)添加到稳态INPUT,以便在求和点中进行组合。
I term:将变化(微分)添加到稳态OUTPUT的负(负反馈),以便在求和点中进行组合。
整合是在(反对)负面反馈时进行区分
输出连接到求和点,具有非常高的游戏和负极性(反转)。
P term:是所需的OUTPUT除以所需的INPUT,或者是由OUTPUT输出的求和点的信号除以 INPUT通过信号馈送求和结。
D term,Differentiation加快输出对输入的响应,使输出更快接近正确的值。
当接近正确/期望值时,积分会降低输出响应。