我不得不+格伦的评论。他始终把大脑放在正确的位置,恕我直言。在PID中,没有什么比延迟更难处理的了。多年来,我一直在以某种方式处理IC晶片FAB的灯加热温度控制。让我先从PID的概述开始,然后谈谈它在哪些方面不如其他情况下有用。我还将建议您也可以探索控制方法的许多其他领域之一,但是在进入其他地方之前,您应该优先采取步骤。Δt
PID控制的标准表达式为:
ut=K⋅[et+1Ti∫t0eτdτ+Tddetdt]
控制器参数为比例增益,积分时间和微分时间。KTiTd
- 比例控制:此处的控制动作仅与控制错误成比例。(上面的等式为,其中是控制器偏差或重置。)对静态过程模型的分析表明,所得过程在稳态下具有残余偏移或控制器偏差(尽管可以手动调整系统,以通过适当选择控制器偏置来在一个位置上将控制误差设为零,并且只有一个设定值。)增加增益还可以为测量噪声提供增益(不良),因此环路增益不应太高,并且没有“最佳”环路增益,因为它取决于目标。ut=K⋅et+ubub
- 比例+积分控制:积分作用的主要功能是确保过程输出与稳态下的设定值一致。通过积分作用,小的正误差将始终导致控制信号增大,而小的负误差将始终导致控制信号减小。不管误差有多小,这都是事实。
- PID控制:增加微分控制可提高闭环稳定性。(要花一些时间才能在过程输出中注意到控件的变化。因此,控制系统将很晚,要纠正该错误。导数项的结果是,这是通过对变量进行外推得出的一种预测。使用与误差曲线相切的误差来预测延迟结果。
上面的描述加到您自己的延迟问题描述中,将建议派生术语会为您提供帮助。但是像往常一样,没有什么事情一定那么简单。
当过程动力学为一阶时,按比例积分控制就足够了。通过测量阶跃响应很容易发现这一点。(如果Nyquist曲线仅位于第一象限和第四象限。)它也适用于不需要严格控制的过程,即使该过程不是一阶的。
对于主要动力学为二阶的过程,PID控制就足够了。在这里通常是温度控制。因此,这也许再次表明您需要添加派生控制。
然而。只有在您做了其他所有可能的事情以改善一些事情之后,才考虑以上所有内容:
- 使用您可以合理使用的响应速度最快的温度传感器(小质量,高温测定等),并将其应用于对您要控制的过程的响应延迟最小的情况下(接近,不远)。
- 减少进行测量和执行过程控制时的延迟变化。
我想在最后一点上做一些阐述。想象一下过程控制,就像您站在某个地方,试图将一根细的,非常柔软且摇摆不定的竹竿戳进一个遥远的鸟窝中,该鸟窝位于您上方和远离您的树上。如果您很近并且竹竿很短,那很容易。您可以每次轻松快捷地进行操作。但是,如果竹竿很长,而鸟舍离您很远,则很难做。杆子一直在徘徊,这使您的预测和控制变得非常困难。
(如果不清楚,竹竿的长度就像循环延迟时间一样。)
因此,延迟可能是控制系统最糟糕的噩梦。更多的延迟是非常糟糕的。因此,尽一切力量减少这种延迟非常重要。但是还有一个更重要的一点。
现在想象同样的情况。但是现在,竹竿的长度也在不断变化。有时它会更短,有时会更长,并且会不断变化,而您却无法预测。现在,您必须继续更改立场,而且您永远都不知道延迟何时会改变。如果您的软件不能非常谨慎地进行控制并且铁腕紧握,则存在这种情况,这是处理ADC值和生成DAC控制输出的时间延迟。
因此,尽管延迟对于PID控制系统来说已经足够糟糕了。可变延迟甚至更糟。因此,您需要特别注意您的软件设计-非常严格-请确保您没有IF语句和条件计算代码,或者草率使用计时器等,所有这些因素都可能导致采样和控制输出之间的延迟。
您需要先进行以上管理,然后再担心是否需要微分控制。首先是第一件事。清理你的行为。然后检查系统以确定剩下要做的事情(例如,使用PI与PID对比)。
我当时使用的是非常精确的高温计系统(对客户来说也是非常昂贵的)来进行PID控制系统的工作。研究人员正为从熔体中拉出的一筒砷化镓的侧面挣扎着波纹。并希望我能帮助您确定正确的PID控制变量。(在推拉过程中,您需要非常均匀的直径。)
从任何标准角度来看,他使用的控制器都相当不错。但是它增加了延迟---并且这些延迟也有所不同,因为其中的软件没有严格控制它引入整个控制回路的延迟。
因此,我告诉他的第一件事是,我要将PID控制添加到高温计的软件中,并且他应该简单地从所使用的系统中拉出外部控制器。我在不到一周的时间内就添加了该软件,并向他提供了改进的pyro系统。我对PID软件没有任何幻想。但是,我将ADC与DAC之间的差异保持在不到几微秒的范围内,并将总延迟提高到了约100微秒。我把那东西寄给了他。
下周星期一我接到了电话。圆珠几乎完全拉出,完全没有波纹。
这就像减少延迟并减少延迟的可变性一样简单。完全没有PID控制的特殊要求。这是一个普通的香草实现,任何人都可以第一次学习它。
这说明了压缩延迟和延迟可变性的重要性。当然,导数控制可以提供某种“割线/切线”预测概念。但是,没有什么能代替降低延迟并将可变性保持在绝对最小的替代方法。
只是继续考虑竹竿和鸟窝的问题。
结论?
众所周知,具有主要时间延迟的系统的控制非常困难。我建议了一些可能的原因相信派生术语将有助于时间延迟。但是,人们普遍同意,派生动作对具有主要时间延迟的过程没有太大帮助。这就是为什么我立即建议通过消除所有我可以轻松消除的延迟(例如,像外部PID盒)来帮助该研究人员的原因。我没有想到我的实现要比商业产品更好。我知道我的实现实际上并不会像经过严格审查那样。薄饼,我必须从头开始编写,测试并安装它,并用一个以前从未有过的新添加的软件发货,并在一周内完成所有这些工作。但我也知道,这种延误正在扼杀该研究人员获得他想要的结果的所有机会。因此,我立即知道最好的方法是消除延迟,而不是发明一些只有天才才能遵循的“出色”实现的魔术PID代码。最重要的是延迟,以及延迟如何变化。其余的优先级都低得多。
有一些东西叫做“死时间补偿器”。但是,归根结底,您需要尽一切可能消除延迟并消除延迟中的可变性。然后,在完成所有可能的操作后,如果仍然存在问题,则可能需要的控件比PID允许的更为复杂。在这里,我可能会进行傅立叶变换(并使用逆变换来分析阶跃响应并开发系统响应的描述)。您可以对PID不能触及的内容做很多事情。实际上,如果您可以对响应函数进行足够好的建模,那么几乎可以得到奇迹般的结果。
但是在您的情况下,我将重点放在消除延迟及其可变性上。我认为,如果可能的话,您也应该考虑避免使用简单的开/关灯控制。如果您可以控制灯的强度,那就太好了。但我不知道您是否可以考虑。