请用外行的术语解释PID如何解决温度控制中的惯性


9

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

现在,我在Arduino的帮助下手动管理温度曲线,当达到设定温度时,它会关闭加热器。例如,当我将温度设置为120摄氏度,并且加热器停止运转时,温度仍然会攀升10-20度,因此会有相当大的超调,然后会有一些振铃,然后缓慢降低。

我已经阅读并观看了许多示例,这些示例利用PID来实现更好的温度控制。否则,我只会停止加热器,例如在设定值以下10-20度,然后在短时间内打开/关闭加热器,直到温度稳定在设定值附近。我只知道增量随温度变化而变化,所以它可能不那么简单-我知道固定设置值下温度上升的指数性质。

因此,任何人都可以用通俗易懂的方式解释PID是如何计算惯性的,例如,积分部分起什么作用,微分部分起什么作用,以及如何/是否可以直观地算出对微分和积分的估计。数量而无需进行复杂的计算。


如您所见,挑战在于延误。因此,控制的关键在于检查slewrates及其派生词
Analogsystemsrf

@analogsystemsrf我想我已经知道了。如您所读,我在尝试在(理论)与(实践)之间建立联系时遇到一些困难。简而言之:补偿延迟的部分是什么如何补偿

1
延误是可怕的。可能是由于传感器距离加热器太远所致。或加热器太大,热量太大。当更改物理布置时,PID比例因子会发生很大变化。减少延迟有助于实现PID控制因子,从而产生较小的误差。
glen_geek

如果您唯一的控制是通过继电器打开和关闭加热器,则您实际上无法实现PID。
mkeith

2
我使用工业温度控制器进行工作。带继电器输出的继电器通​​常将循环时间限制为最小5 s。具有固态直流输出来驱动SSR的驱动器没有此限制。如果您考虑使用时间常数很长的应用程序(例如玻璃炉或一吨巧克力),您可能会想到30s的占空比足以控制它。
晶体管

Answers:


12

我不得不+格伦的评论。他始终把大脑放在正确的位置,恕我直言。在PID中,没有什么比延迟更难处理的了。多年来,我一直在以某种方式处理IC晶片FAB的灯加热温度控制。让我先从PID的概述开始,然后谈谈它在哪些方面不如其他情况下有用。我还将建议您也可以探索控制方法的许多其他领域之一,但是在进入其他地方之前,您应该优先采取步骤。Δt

PID控制的标准表达式为:

ut=K[et+1Ti0teτdτ+Tddetdt]

控制器参数为比例增益,积分时间和微分时间。KTiTd

  1. 比例控制:此处的控制动作仅与控制错误成比例。(上面的等式为,其中是控制器偏差或重置。)对静态过程模型的分析表明,所得过程在稳态下具有残余偏移或控制器偏差(尽管可以手动调整系统,以通过适当选择控制器偏置来在一个位置上将控制误差设为零,并且只有一个设定值。)增加增益还可以为测量噪声提供增益(不良),因此环路增益不应太高,并且没有“最佳”环路增益,因为它取决于目标。ut=Ket+ubub
  2. 比例+积分控制:积分作用的主要功能是确保过程输出与稳态下的设定值一致。通过积分作用,小的正误差将始终导致控制信号增大,而小的负误差将始终导致控制信号减小。不管误差有多小,这都是事实。
  3. PID控制:增加微分控制可提高闭环稳定性。(要花一些时间才能在过程输出中注意到控件的变化。因此,控制系统将很晚,要纠正该错误。导数项的结果是,这是通过对变量进行外推得出的一种预测。使用与误差曲线相切的误差来预测延迟结果。

上面的描述加到您自己的延迟问题描述中,将建议派生术语会为您提供帮助。但是像往常一样,没有什么事情一定那么简单。

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

对于主要动力学为二阶的过程,PID控制就足够了。在这里通常是温度控制。因此,这也许再次表明您需要添加派生控制。

然而。只有您做了其他所有可能的事情以改善一些事情之后,才考虑以上所有内容:

  • 使用您可以合理使用的响应速度最快的温度传感器(小质量,高温测定等),并将其应用于对您要控制的过程的响应延迟最小的情况下(接近,不远)。
  • 减少进行测量和执行过程控制时的延迟变化。

我想在最后一点上做一些阐述。想象一下过程控制,就像您站在某个地方,试图将一根细的,非常柔软且摇摆不定的竹竿戳进一个遥远的鸟窝中,该鸟窝位于您上方和远离您的树上。如果您很近并且竹竿很短,那很容易。您可以每次轻松快捷地进行操作。但是,如果竹竿很长,而鸟舍离您很远,则很难做。杆子一直在徘徊,这使您的预测和控制变得非常困难。

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

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

现在想象同样的情况。但是现在,竹竿的长度也在不断变化。有时它会更短,有时会更长,并且会不断变化,而您却无法预测。现在,您必须继续更改立场,而且您永远都不知道延迟何时会改变。如果您的软件不能非常谨慎地进行控制并且铁腕紧握,则存在这种情况,这是处理ADC值和生成DAC控制输出的时间延迟。

因此,尽管延迟对于PID控制系统来说已经足够糟糕了。可变延迟甚至更糟。因此,您需要特别注意您的软件设计-非常严格-请确保您没有IF语句和条件计算代码,或者草率使用计时器等,所有这些因素都可能导致采样和控制输出之间的延迟。

您需要先进行以上管理,然后再担心是否需要微分控制。首先是第一件事。清理你的行为。然后检查系统以确定剩下要做的事情(例如,使用PI与PID对比)。


我当时使用的是非常精确的高温计系统(对客户来说也是非常昂贵的)来进行PID控制系统的工作。研究人员正为从熔体中拉出的一筒砷化镓的侧面挣扎着波纹。并希望我能帮助您确定正确的PID控制变量。(在推拉过程中,您需要非常均匀的直径。)

从任何标准角度来看,他使用的控制器都相当不错。但是它增加了延迟---并且这些延迟也有所不同,因为其中的软件没有严格控制它引入整个控制回路的延迟。

因此,我告诉他的第一件事是,我要将PID控制添加到高温计的软件中,并且他应该简单地从所使用的系统中拉出外部控制器。我在不到一周的时间内就添加了该软件,并向他提供了改进的pyro系统。我对PID软件没有任何幻想。但是,我将ADC与DAC之间的差异保持在不到几微秒的范围内,并将总延迟提高到了约100微秒。我把那东西寄给了他。

下周星期一我接到了电话。圆珠几乎完全拉出,完全没有波纹。

这就像减少延迟并减少延迟的可变性一样简单。完全没有PID控制的特殊要求。这是一个普通的香草实现,任何人都可以第一次学习它。

这说明了压缩延迟和延迟可变性的重要性。当然,导数控制可以提供某种“割线/切线”预测概念。但是,没有什么能代替降低延迟并将可变性保持在绝对最小的替代方法。

只是继续考虑竹竿和鸟窝的问题。


结论?

众所周知,具有主要时间延迟的系统的控制非常困难。我建议了一些可能的原因相信派生术语将有助于时间延迟。但是,人们普遍同意,派生动作对具有主要时间延迟的过程没有太大帮助。这就是为什么我立即建议通过消除所有我可以轻松消除的延迟(例如,像外部PID盒)来帮助该研究人员的原因。我没有想到我的实现要比商业产品更好。我知道我的实现实际上并不会像经过严格审查那样。薄饼,我必须从头开始编写,测试并安装它,并用一个以前从未有过的新添加的软件发货,并在一周内完成所有这些工作。但我也知道,这种延误正在扼杀该研究人员获得他想要的结果的所有机会。因此,我立即知道最好的方法是消除延迟,而不是发明一些只有天才才能遵循的“出色”实现的魔术PID代码。最重要的是延迟,以及延迟如何变化。其余的优先级都低得多。

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

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


1
非常感谢,琼克,对我来说,这是一个深入的解释。我所说的延迟很长,恐怕我无法减少它,因为我认为这本质上是烤箱的制作方法-我将通用烤箱改制成回流烤箱,这在互联网上很常见。但是,尽管使用石英管,但温度上升速度仅为要求的速度的一半(每秒不超过1°C,而不是2-3)。至于传感器,我正在使用一对K热电偶,并且检查了它的惯性很小或没有惯性。我注意到的一件事是,如果我预热烤箱,温度滞后会降低,即大约50°C。

您是否尝试过使用Smith Smith Predictor Controller减轻延迟?

@Chu尚未,我仅在这里了解它:-D。此外,我的烤箱目前已部分拆卸,我没有手。

我首先接受了您的回答,因为它是多么详尽和详细。也因为我愿意使用任何合适的方法,即使它暗示不是PID。您的回答和晶体管为我提供了下一步的足够提示。但是,只能有一个[接受的答案]。无论如何,还是非常感谢大家

4

这并不能直接回答您的问题,但可以为您提供一些工具,以增进您的理解。

Engineers-Excel上有一个简单的Excel模拟器,您可能会觉得有帮助。

enter image description here

图1. PID模拟器模型。

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

  • 以40%的功率打开烤箱(P1),看看它稳定在什么温度下。以70%的功率重复(P2)并记录温度。在此设置范围内,过程增益为
    K=T2T1P2P1
    答案将是度/%的奇数单位。
  • 切换时,绘制随时间变化的温度响应 P1P2LS滞后时间是指从切换到温度开始升高之间的时间。
  • TS 是从响应开始到温度达到温度的63%(一个时间常数)的时间(从响应开始)。 T1T2

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

做出一些疯狂的猜测:

  • P1=40%T1=92°C
  • P1=70%T2=176°C
  • K=176927040=2.8°C/%
  • Ls=3s
  • 从92°C到176°C需要花费50 s的时间才能达到63% TS=50s

enter image description here

图2. Excel PID模拟器输出。

如果您的过程不太可能受到干扰,例如设定值的突然变化或热负荷的突然变化,则通常会获得零D项。这简化了PI控件设置的过程。

对于加热,您可以通过相对于热响应时间足够快地完全打开和关闭电源来获得比例功率。enter image description here

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


感谢您提供易于理解的技术信息。附带一提:由于我使用的继电器比SSR便宜(来源:Digi-Key),我只能完全打开或关闭加热器,不可能在0%到100%之间进行调节。另外,我不能使用零交叉来关闭加热器,但是我认为那是最不重要的。无论如何,非常感谢您的见解。

2
我的图3显示了开-关控制,这就是您要执行的操作,这很好。您将希望在0到100%之间的任何地方取平均值。实际上,这是带有AC的慢脉冲宽度调制(PWM)。您需要权衡使周期时间与继电器寿命保持相当短的平衡。零交叉的好处在于它可以减少电气噪声。如果这不是问题,那就不是问题!
晶体管

2

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

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

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

如果您将Kp调得太高,则可能会提高得太快。惯性可能导致超调和振铃。这是因为在提供一定的输出功率和测量其效果之间存在延迟。

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

对于您的惯性问题,导数部分可能最有趣。导数着眼于误差的变化率。如果误差变化率大,则意味着惯性高。使用调整因子Kd可以确保输出会及时回落。这样可以使惯性在达到最终输出值之前减速。

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


实际上,从长远来看,是P项降为零,因为I项正好积分到设定点,而输出差为零,而P乘以零即为零。
WhatRoughBeast
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.