请通俗地解释一下PID如何解释温度控制中的惯性

电器工程 温度 控制 pid控制器
2022-01-26 02:17:52

我正在建造自己的爱好者微处理器控制的回流炉。我正在使用(机械)继电器来打开或关闭加热器(即石英管)。我注意到在温度开始上升之前加热会滞后几秒钟。

现在,我在 Arduino 的帮助下手动管理温度曲线,当达到设定温度时,它只会关闭加热器。例如,当我将温度设置为 120°C 并且加热器停止时,温度仍会上升 10-20 度,因此有相当多的过冲,然后是一些响铃,然后缓慢下降。

我已经阅读并观看了许多使用 PID 进行更好温度控制的示例。否则,我只会停止加热器,例如低于设定值 10-20 度,然后在短时间内打开/关闭它们,直到温度稳定在设定值附近。我只知道 delta 随温度而变化,所以它可能不那么简单——我知道温度上升的指数性质与一个固定的设定值。

所以任何人都可以用外行的术语解释 PID 如何解释惯性,例如积分部分的作用和导数部分用简单的术语起什么作用,以及我如何/如果我能相当直观地计算出导数和积分的估计数量,而不诉诸复杂的计算。

3个回答

我不得不 + Glen 的评论。恕我直言,他始终将大脑放在正确的位置。在 PID 中没有什么比 \$\Delta t\$ 延迟更难处理的了。多年来,我一直以某种方式处理 IC 晶圆 FAB 的灯加热温度控制。让我从 PID 的概述开始,并稍微谈谈它在哪些方面不像在其他情况下那样有用。我还将建议您也可以探索的许多其他控制方法领域之一,但在去其他地方之前您应该首先采取的步骤的优先级。

PID 控制的规范表达式为:

$$u_t=K\cdot\left[e_t+\frac{1}{T_i}\int_0^t e_\tau\:\textrm{d}\tau+T_d\frac{\textrm{d}\:e_t}{ \textrm{d}\:t}\right]$$

控制器参数为比例增益 \$K\$、积分时间 \$T_i\$ 和微分时间 \$T_d\$。

  1. 比例控制:这里的控制动作只是与控制误差成比例。(上述等式简化为 \$u_t=K\cdot e_t+u_b\$,其中 \$u_b\$ 是控制器偏差或重置。)静态过程模型的分析表明,生成的过程具有残余偏移或在稳态处的控制器偏置(尽管系统可以手动调整到该系统,并且通过正确选择控制器偏置,但只有一个设定值的控制误差。)增加增益也为增益提供增益测量噪声(坏),因此环路增益不应太高,并且没有“最佳”环路增益,因为它取决于目标。
  2. 比例+积分控制:积分作用的主要作用是确保过程输出与稳态设定值一致。对于积分作用,小的正误差将始终导致控制信号增加,而小的负误差将始终导致控制信号减小。无论误差多么小,这都是正确的。
  3. PID控制:增加微分控制提高了闭环稳定性(在过程输出中注意到控制的变化需要一些时间。所以控制系统会迟到,纠正那个错误。导数项的结果是它是一种通过外使用与误差曲线相切的误差,用于预测延迟的结果。

上面的描述,添加到您自己对延迟问题的描述中,表明派生项会对您有所帮助。但像往常一样,没有什么事情一定如此简单。

当过程动态为一阶时,比例积分控制就足够了。通过测量阶跃响应很容易发现这一点。(如果奈奎斯特曲线仅位于第一和第四象限。)它也适用于过程不需要严格控制的情况,即使它不是一阶的。

对于主要动态为二阶的过程,PID 控制就足够了。温度控制通常是这里的情况。因此,再一次,这可能会证明在您的情况下添加衍生控制。

然而。只有在您尽一切可能改进一些事情之后,才应考虑以上所有内容:

  • 使用您可以合理应用的最快响应温度传感器(小质量、高温测量等),并将其应用于您想要控制的过程的响应延迟最小的情况(关闭,不远)。
  • 减少进行测量和实施过程控制的延迟变化。

我想详细说明最后一点。想象一下过程控制就像你站在某个地方,试图将一根细的、非常灵活且摇晃的竹竿插入远处的鸟屋洞中,而鸟屋洞位于你上方的一棵树上,远离你。如果你靠近并且竹竿很短,那就容易了。您每次都可以快速轻松地做到这一点。但是如果竹竿很长,鸟屋离你很远,那就很难了。杆子一直在四处游荡,这使您的预测和控制变得非常困难。

(如果还不清楚,竹竿的长度就像是循环延迟时间。)

所以延迟可能是控制系统最糟糕的噩梦。更多的延迟是非常糟糕的。因此,尽一切可能减少这种延迟是非常重要的。但还有更重要的一点。

现在想象同样的情况。但现在竹竿的长度也在不断变化。有时它更短,有时更长,并且它不断变化,而您没有预测。你现在必须不断改变你的立场,你永远不知道延迟什么时候会改变。如果您的软件没有非常仔细地和铁腕地控制处理您的 ADC 值和生成 DAC 控制输出的时间延迟,就会出现这种情况。

因此,虽然延迟对于 PID 控制系统来说已经足够糟糕了。可变延迟甚至更糟。所以你需要严格注意你的软件设计——非常严格的注意——这样你就没有 IF 语句和条件计算代码,或者对定时器的草率使用等等,所有这些都会导致软件的显着变化。样品和控制输出之间的延迟。

在担心是否需要衍生控制之前,您需要将上述内容纳入管理。第一件事。清理你的行为。然后检查系统以确定还需要做什么(例如,使用 PI 与 PID。)


我正在使用极其精确的高温计系统(对客户来说也非常昂贵)来研究 PID 控制系统。我接到了一位使用我们的高温计的加拿大研究人员的电话,但我使用的是一家非常大的商业公司的单独 PID 控制器(世界上最大的公司)。世界在做这些事情。)研究人员正在努力应对他从熔体中拉出的砷化镓晶锭侧面的涟漪。并希望我帮助找出正确的 PID 控制变量。(在拉晶时,您需要非常均匀的直径。)

他使用的控制器以任何标准衡量都非常好。但它增加了延迟——而且这些延迟也各不相同,因为它内部的软件没有严格控制它引入整个控制回路的延迟。

所以我告诉他的第一件事是我要在我们的高温计的软件中添加 PID 控制,他应该简单地从他正在使用的系统中拉出外部控制器。我在不到一周的时间内添加了该软件,并将修改后的 pyro 系统发给了他。我没有对 PID 软件做任何花哨的事情。但是,我将 ADC 到 DAC 的可变性保持在不到几微秒,并将整体延迟也收紧到大约 100 微秒。我把那个寄给他了。

下周星期一我接到了一个电话。球几乎完美地拉出,一点波纹都没有。

这就像减少延迟并减少这些延迟的可变性一样简单。PID 控制没有什么特别之处。这是一个普通的实现,任何人第一次学习都会产生。

这说明了挤出延迟和延迟可变性的重要性。当然,微分控制可以提供某种“正切/正切”的预测思想。但是,没有什么能代替降低延迟并将可变性保持在绝对最低限度的方法。

一直想着竹竿和鸟窝的问题。


结论?

众所周知,控制具有主要时间延迟的系统非常困难。我已经提出了一些你可能会想到的理由相信衍生项将有助于时间延迟。但人们普遍认为,微分作用对于具有显着时间延迟的过程没有多大帮助。这就是为什么我立即建议通过消除我可以轻松消除的所有延迟(例如外部 PID 框)来帮助该研究人员。我没想到我的实现比商业产品更好。事实上,我知道我的实施几乎不会经过严格审查。Cripes,我必须从头开始编写它,测试并安装它,然后运送一个带有以前从未有过的新添加软件的单元,并在一周的时间内完成所有这些工作。但我也知道,延迟正在扼杀这位研究人员获得他想要的结果的所有机会。所以我立即知道最好的方法是消除延迟,而不是发明一些只有天才才能遵循的“出色”实现的魔法 PID 代码。这首先是关于延迟以及这些延迟如何变化的。其余的都是低得多的优先级。

有一些东西叫做“死区时间补偿器”。但归根结底,您需要尽一切努力消除延迟并消除这些延迟中的可变性。然后,在你尽你所能完成之后,如果仍然存在问题,你可能需要比 PID 允许的更复杂的控制。在这里,我可能会进行傅立叶变换(并使用逆变换来分析阶跃响应并开发系统响应的描述)。你可以做很多PID无法触及的事情。实际上,如果您可以对响应函数进行足够好的建模,那几乎是奇迹般的结果。

但是在您的情况下,我将专注于消除延迟及其可变性。如果可能的话,我认为您也应该考虑避免使用简单的开/关灯控制。如果您可以控制灯的强度,那就太好了。但是不知道你能不能考虑一下。

这不会直接回答您的问题,而是为您提供一些工具来提高您的理解。

Engineers-Excel上有一个简单的 Excel 模拟器,您可能会发现它很有帮助。

在此处输入图像描述

图 1. PID 模拟器模型。

棘手的部分是建模您的过程 - 烤箱 - 以建立K - 过程增益,Ts - 响应时间常数和Ls - 响应滞后。我建议:

  • 打开你的烤箱,比如说 40% 的功率 (\$P_1\$),看看它稳定在什么温度。例如,以 70% 的功率 (\$P_2\$) 重复并记录温度。过程增益(对于此设置范围)为 $$ K = \frac {T_2 - T_1}{P_2 - P_1} $$,答案将具有相当奇怪的度数/%单位。
  • 绘制在 \$P_1\$ 和 \$P_2\$ 之间切换时随时间变化的温度响应。\$ L_S \$,滞后时间,是从切换到温度开始上升的时间。
  • \$ T_S \$ 是从 \$ T_1 \$ 到 \$ T_2 \$ 过程中温度达到 63%(一个时间常数)的时间(从响应开始)。

之后,您可以使用 PID 参数来查看是否可以获得所需的响应。

进行一些疯狂的猜测:

  • \$P_1 = 40 \%\$ 和 \$T_1 = 92°C\$。
  • \$P_1 = 70 \%\$ 和 \$T_2 = 176°C\$。
  • \$ K = \frac {176 - 92}{70 - 40} = 2.8 °C/\% \$。
  • \$Ls = 3 \; s\$。
  • 从 92°C 到 176°C 需要 50 秒才能达到 63%,所以 \$ T_S = 50 \; s\$。

在此处输入图像描述

图 2. Excel PID 模拟器输出。

如果您的过程不太可能受到诸如设定点突然变化或热负载突然变化之类的干扰,您通常可以使用零 D 项。这将事情简化为 PI 控制设置。

对于加热,您可以通过相对于热响应时间足够快地完全打开和关闭电源来获得成比例的功率。在此处输入图像描述

图 3. 加热器交流控制的可变占空比。

在PID中有3个部分:比例,积分和微分。

比例是最简单的控制器。它放大了所需信号和实际信号之间的误差。例如,如果所需温度为 100C,实际温度为 80C,则输出 = 20 * Kp。给出多少输出由 Kp 调整。

如果您将 Kp 调得太低,则加热不足,并且可能永远无法达到所需的温度。

如果您将 Kp 调得太高,它可能会上升太快。惯性可能导致过冲和振铃。那是因为在给出一定的输出功率和测量它的效果之间存在延迟。

如果您想要低静态偏移,则必须使用不可或缺的部分。请注意,要让 P 控制器提供输出,它必须存在错误才能生成任何输出值。如果您希望误差非常接近于零,则需要 I 部分从 P 中接管。但这可能需要一些时间。

对于您的惯性问题,导数部分可能最有趣。导数着眼于误差的变化率。如果误差变化率较大,则表示惯性较大。使用经过调整的因子 Kd,您可以确保输出将及时节流。这是为了使惯性在达到最终输出值之前减慢。

这使您可以使用较高的 P 因子来获得足够积极的响应,同时使用 D 来防止过冲。I 部分用于使静态误差最终稳定为 0。