如何使用测量的阶跃响应来调整控制系统

电器工程 pid控制器 控制系统
2022-01-27 03:53:01

如何使用测量的阶跃响应来调整 PID 或卷积控制方案?

受到这个答案*的启发,我有兴趣更详细地解释如何根据测量的阶跃响应实现控制系统。

我不会试图猜测所有的影响。可能发生了一些不明显的事情,你不可能知道所有的参数。

我会测量阶跃响应。找到两个泵设置都导致球在管内的可测量范围内。然后让控制器突然从一种设置切换到另一种开环。同时测量球随时间的变化。这就是阶跃响应。您可以对其进行导数并获得脉冲响应。假设这是一个线性系统,您可以根据脉冲响应预测任何泵设置历史的球运动。它可能在较小的设置范围内足够线性以将球保持在其正常范围内。

您可以将其用作模拟基础来查找老式 PID 控制的参数。或者您可以直接使用脉冲响应来进行卷积控制。您必须对控制输入进行足够的低通滤波,以使卷积核不会变为负数,除非您的泵实际上是可逆的并且可以将球吸回。

这究竟是如何工作的?PID整定困难我假设“卷积控制”是使用零极点或传递函数,但不知道如何获得参数。

相关:控制系统的系统建模
*模拟管中乒乓球悬浮作为阻尼器的传递函数

4个回答

介绍

首先,我们需要考虑这个叫做系统脉冲响应的东西到底是什么,它是什么意思。这是一个抽象的概念,需要一点思考才能形象化。我不会进入严格的数学。我的意思是尝试给出一些直觉,这是什么,然后引导你如何使用它。

示例控制问题

想象一下,你有一个大功率电阻器,上面安装了温度传感器。一切都在环境温度下开始。当你打开电源时,你知道传感器的温度最终会上升并稳定下来,但确切的方程式很难预测。假设系统有一个大约 1 分钟的时间常数,尽管“时间常数”并不完全适用,因为温度不会像在具有单极的系统中那样以良好的指数上升,因此只有一个时间常数. 假设您想要准确地控制温度,并将其更改为一个新的水平并稳定地保持在那里,这比您在适当的功率水平下打开并等待的速度要快得多。

基本上,您有控制系统问题。开环响应是合理可重复的,并且在某个地方有一个方程可以很好地对其进行建模,但问题是有太多未知数,您无法推导出该方程。

PID控制

解决此问题的一种经典方法是使用 PID 控制器。回到更新世,当这必须在模拟电子设备中完成时,人们变得聪明起来,想出了一个与手头的模拟功能配合得很好的方案。该方案被称为“PID”,用于ProportionalIntegralDerivative

P 项

你开始测量误差。这只是测量的系统响应(在我们的例子中传感器报告的温度)减去控制输入(所需的温度设置)。通常这些可以被安排为电压信号,因此找到误差只是一个模拟差异,这很容易。你可能认为这很容易。您所要做的就是用更高的功率驱动电阻,误差越大。当它太冷时,它会自动尝试让它变热,当它太热时它会自动变冷。那行得通,有点。请注意,此方案需要一些错误才能导致任何非零控制输出(驱动电阻器的功率)。事实上,这意味着所需的功率越高,误差越大,因为这是获得高功率的唯一方法。现在您可能会说您所要做的就是提高增益,以便即使在高功率输出时误差也是可以接受的。毕竟,这几乎是许多电路中如何使用运算放大器的基础。你是对的,但现实世界通常不会让你侥幸逃脱。这可能适用于一些简单的控制系统,但是当响应存在各种微妙的皱纹并且可能需要很长时间时,当增益过高时,您最终会得到一些振荡的东西。换句话说,系统变得不稳定。但是当响应有各种细微的皱纹时,并且当它可能需要很长时间时,当增益太高时,您最终会得到一些振荡的东西。换句话说,系统变得不稳定。但是当响应有各种细微的皱纹时,并且当它可能需要很长时间时,当增益太高时,您最终会得到一些振荡的东西。换句话说,系统变得不稳定。

我上面描述的是 PID 的 P(比例)部分。就像您可以使输出与误差信号成比例一样,您也可以添加与时间导数和误差积分成比例的项。这些 P、I 和 D 信号中的每一个在相加以产生控制输出信号之前都有自己的单独增益。

我称

I 项允许错误随着时间的推移而消失。只要有任何正误差,I 项就会不断累积,最终将控制输出提高到整体误差消失的程度。在我们的示例中,如果温度一直很低,它将不断增加电阻器的功率,直到输出温度最终不再低。希望你能看到它变得不稳定,甚至比高 P 项更快。AI项本身很容易引起过冲,很容易变成振荡。

D 项

D 项有时会被忽略。D 项的基本用途是增加一点稳定性,以便 P 和 I 项可以更具侵略性。D 术语基本上是说如果我已经朝着正确的方向前进,请稍微放松一下,因为我现在所拥有的似乎正在让我们到达那里

调整 PID

PID 控制的基础知识非常简单,但要恰到好处地获得 P、I 和 D 项却并非如此。这通常是通过大量的实验和调整来完成的。最终目标是获得一个整体系统,其中输出尽可能快地响应,但没有过度的过冲或振铃,当然它需要稳定(不要自己开始振荡)。有很多关于 PID 控制的书籍,如何在方程中添加一点皱纹,尤其是如何“调整”它们。调整是指预测最佳的 P、I 和 D 增益。

PID 控制系统可以正常工作,而且肯定有很多知识和技巧可以让它们正常工作。然而,PID 控制并不是控制系统的唯一正确答案。人们似乎忘记了为什么首先选择 PID,这更多地与模拟电子设备的约束有关,而不是某种通用的最优控制方案。不幸的是,今天有太多的工程师将“控制系统”与 PID 等同起来,这无非是一种思维敏捷的膝跳反应。这不会使当今世界的 PID 控制出错,而只是解决控制问题的众多方法之一。

超越PID

今天,像温度示例这样的闭环控制系统将在微控制器中完成。这些可以做更多的事情,而不仅仅是获取误差值的导数和积分。在处理器中,您可以进行除法、平方根、保留最近值的历史记录等等。PID 以外的许多控制方案都是可能的。

冲动反应

因此,忘记模拟电子设备的局限性,退后一步,想想我们如何控制一个回到第一原理的系统。如果对于每一小块控制输出,我们都知道系统会做什么。连续控制输出只是许多小块的总和。由于我们知道每个部分的结果是什么,因此我们可以知道任何以前的控制输出历史的结果是什么。现在请注意,控制输出的“一小部分”非常适合数字控制。您将计算控制输出应该是什么并将其设置为该值,然后返回并再次测量输入,从中计算新的控制输出并再次设置,等等。您正在循环运行控制算法,它测量输入并在每次循环迭代时重新设置控制输出。输入在离散时间“采样”,输出同样以固定间隔设置为新值。只要你能足够快地做到这一点,你就可以认为这是在一个连续的过程中发生的。在通常需要几分钟才能稳定的电阻器加热的情况下,每秒几次肯定比系统固有地以有意义的方式响应要快得多,以至于以 4 Hz 的频率更新输出对于系统来说看起来是连续的。这与数字录制的音乐完全一样,实际上在 40-50 kHz 范围内以离散的步长改变输出值,而且速度如此之快,以至于我们的耳朵听不到它,而且听起来像原始音乐一样连续。你可以认为这是在一个连续的过程中发生的。在通常需要几分钟才能稳定的电阻器加热的情况下,每秒几次肯定比系统固有地以有意义的方式响应要快得多,以至于以 4 Hz 的频率更新输出对于系统来说看起来是连续的。这与数字录制的音乐完全一样,实际上在 40-50 kHz 范围内以离散的步长改变输出值,而且速度如此之快,以至于我们的耳朵听不到它,而且听起来像原始音乐一样连续。你可以认为这是在一个连续的过程中发生的。在通常需要几分钟才能稳定的电阻器加热的情况下,每秒几次肯定比系统固有地以有意义的方式响应要快得多,以至于以 4 Hz 的频率更新输出对于系统来说看起来是连续的。这与数字录制的音乐完全一样,实际上在 40-50 kHz 范围内以离散的步长改变输出值,而且速度如此之快,以至于我们的耳朵听不到它,而且听起来像原始音乐一样连续。当然,每秒几次比系统固有地以有意义的方式响应要快得多,以至于以 4 Hz 的频率更新输出对系统来说是连续的。这与数字录制的音乐完全一样,实际上在 40-50 kHz 范围内以离散的步长改变输出值,而且速度如此之快,以至于我们的耳朵听不到它,而且听起来像原始音乐一样连续。当然,每秒几次比系统固有地以有意义的方式响应要快得多,以至于以 4 Hz 的频率更新输出对系统来说是连续的。这与数字录制的音乐完全一样,实际上在 40-50 kHz 范围内以离散的步长改变输出值,而且速度如此之快,以至于我们的耳朵听不到它,而且听起来像原始音乐一样连续。

那么,如果我们有一种神奇的方法可以知道系统会因为任何一个控制输出样本而随着时间的推移而做什么呢?由于实际的控制响应只是一系列样本,我们可以将所有样本的响应相加,并知道最终的系统响应将是什么。换句话说,我们可以预测任意控制响应波形的系统响应。

这很酷,但仅仅预测系统响应并不能解决问题。然而,这是一个令人惊叹的时刻,您可以翻转它并找到获得任何所需系统响应所需的控制输出。请注意,这正是解决控制问题,但前提是我们能够以某种方式知道系统对单个任意控制输出样本的响应。

所以你可能在想,这很简单,只要给它一个大脉冲,看看它做了什么。是的,这在理论上可行,但在实践中通常不会。这是因为任何一个控制样本,即使是一个大样本,在整体方案中都非常小,以至于系统几乎没有可测量的响应。请记住,每个控制样本事物方案中必须很小,以便控制样本的序列对系统来说是连续的。所以并不是这个想法行不通,而是在实践中系统响应非常小,以至于它被埋没在测量噪声中。在电阻器示例中,以 100 W 的功率撞击电阻器 100 ms 不会导致足够的温度变化来测量。

阶跃响应

但是,还是有办法的。虽然将单个对照样本放入系统会直接给我们对单个样本的响应,但我们仍然可以通过将已知且受控的对照响应序列放入系统并测量其对这些响应的响应来推断它。通常这是通过放置一个控制步骤来完成的我们真正想要的是对小信号的响应,但对单个步骤的响应只是其中的一部分。在电阻器示例中,我们可以确保在 0 W 时一切都处于稳定状态,然后突然打开电源并将 10 W 输入电阻器。这最终会导致输出端出现可测量的温度变化。具有正确比例的导数告诉我们对单个对照样本的响应,即使我们无法直接测量。

总而言之,我们可以将步进控制输入放入未知系统并测量结果输出。这就是所谓的阶跃响应然后我们取它的时间导数,称为脉冲响​​应任何一个控制输入样本产生的系统输出只是脉冲响应适当地缩放到该控制样本的强度。对整个控制样本历史的系统响应是针对每个控制输入及时添加、缩放和倾斜的一整串脉冲响应。最后一个操作出现了很多,并且有一个特殊的名字卷积

卷积控制

因此,现在您应该能够想象,对于任何所需的系统输出集,您都可以提出控制输入序列来产生该输出。但是,有一个问题。如果您对您想要从系统中获得的东西过于激进,那么实现这一目标的控制输入将需要通过高值和低值来实现。基本上,您期望系统响应的速度越快,控制值就需要在两个方向上越大。在电阻器示例中,您可以从数学上说您希望它立即达到新的温度,但这需要一个无限的控制信号才能实现。您允许温度更改为新值的速度越慢,您需要能够转储到电阻器中的最大功率就越低。另一个问题是电阻器的功率有时也需要降低。你可以'

解决此问题的一种方法是控制系统在内部使用用户控制输入之前对其进行低通滤波。图用户做用户想做的事。让他们快速输入。在内部,您使用低通滤波器将其平滑并减慢到您知道的最快速度,因为您可以将最大和最小功率放入电阻器中。

现实世界的例子

这是使用真实世界数据的部分示例。这来自实际产品中的嵌入式系统,除其他外,该系统必须控制几十个加热器,以将各种化学容器保持在特定温度。在这种情况下,客户选择做 PID 控制(这是他们觉得舒服的),但系统本身仍然存在并且可以测量。这是通过步进输入驱动其中一个加热器的原始数据。循环迭代时间为 500 毫秒,考虑到系统在 2 小时后仍明显稳定在该比例图上,这显然是一个非常短的时间。

在这种情况下,您可以看到加热器以大约 0.35 的步长驱动(“Out”值)。长时间输入完整的 1.0 步会导致温度过高。可以移除初始偏移,并缩放结果以考虑小输入步骤以推断单位阶跃响应:

从这里你会认为它只是减去连续的阶跃响应值来获得脉冲响应。这在理论上是正确的,但实际上你得到的主要是测量和量化噪声,因为系统在 500 毫秒内变化很小:

还要注意值的小范围。脉冲响应按 10 6比例显示

显然,单个读数甚至几个读数之间的巨大差异只是噪声,因此我们可以对其进行低通滤波以去除高频(随机噪声),这有望让我们看到较慢的潜在响应。这是一种尝试:

这更好,表明确实有有意义的数据,但仍然有太多的噪音。这是通过对原始脉冲数据进行更多低通滤波获得的更有用的结果:

现在这是我们可以实际使用的东西。与整体信号相比,剩余噪声很小,因此不应妨碍。信号似乎仍然完好无损。看到这一点的一种方法是注意到 240 的峰值大约是从快速的视觉检查和眼球过滤前一个图。

所以现在停下来想想这个脉冲响应到底意味着什么。首先,注意它显示的是 1M 倍,所以峰值实际上是满量程的 0.000240。这意味着理论上,如果系统仅在 500 ms 时隙之一内使用单个满量程脉冲驱动,则这将是相对于它被单独放置的结果温度。任何一个 500 ms 周期的贡献都非常小,这在直觉上是有意义的。这也是为什么直接测量脉冲响应不起作用的原因,因为满量程的 0.000240(约 4000 分之一)低于我们的噪声水平。

现在,您可以轻松计算任何控制输入信号的系统响应。对于每个 500 ms 控制输出样本,添加这些脉冲响应之一,该脉冲响应按该控制样本的大小进行缩放。该脉冲响应对最终系统输出信号的贡献的 0 时间是在其控制样本的时间。因此,系统输出信号是这些脉冲响应的连续偏移,彼此偏移 500 毫秒,每个都按当时的控制样本电平进行缩放。

系统响应是控制输入与该脉冲响应的卷积,计算每个控制样本,在本例中为每 500 毫秒。要从中制作控制系统,您需要向后工作以确定产生所需系统输出的控制输入。

即使您想做一个经典的 PID 控制器,这种脉冲响应仍然非常有用。调整 PID 控制器需要大量的实验。在实际系统上,每次迭代都需要一两个小时,这会使迭代调优变得非常非常缓慢。使用脉冲响应,您可以在几分之一秒内模拟计算机上的系统响应。您现在可以尽可能快地尝试更改新的 PID 值,而不必等待一两个小时让真实系统向您显示它的响应。当然,最终值应该始终在真实系统上进行检查,但大部分工作可以通过仿真在很短的时间内完成。这就是您在问题中引用的段落中的“您可以将其用作模拟基础来查找老式PID控制的参数”的意思。

FIR 和 IIR 滤波器,就像 Jon 提到的那样,是直接实现脉冲响应卷积的数字滤波器,顾名思义(Finite\Infinite Impulse Response)。

对信号的脉冲响应进行卷积(在时域中)与将传递函数乘以信号的变换(在频域中)完全相同;并且,基本上,它包括将滤波器的脉冲响应与信号的转换版本相乘(想想滤波器响应在时间上是固定的,而信号在时间上是连续变化的)。

在数字滤波器中,脉冲响应被减少到固定数量的系数,这些系数在某个点与信号相乘;这些点被延迟分开,得到a 0乘以信号的瞬时值,而a k乘以k个延迟单元后的相同信号。

在此处输入图像描述

该图显示了通用滤波器(在这种情况下为低通)的脉冲响应,其中获得了 13 抽头(延迟数)FIR 滤波器的系数。

为了获得某些传递函数,FIR 滤波器将需要无限数量的系数:在这些情况下,使用反馈来获得 IIR(无限脉冲响应)滤波器。这些滤波器允许获得更好的传递函数(例如,滤波器中的通带和抑制带之间的过渡更窄)但会产生不稳定性,而 FIR 滤波器在结构上是稳定的。

这种滤波器可以用模拟电路设计,但需要精确的放大器调谐到系数,以及精确的延迟电路,并且在增加抽头数量时需要大量增加硬件。这些滤波器更多地是在 DSP 中实现的,其中以更简单的方式对数字信号执行操作。

因此,要直接回答您的问题:只需将系数设置为离散化脉冲响应即可完成数字滤波器的调整。

更新

OP询问阶跃和脉冲响应;好吧,正如 Olin 和 Jon 所说,脉冲响应是阶跃响应的导数,显然阶跃响应是脉冲响应的积分。

阶跃响应在控制系统中被广泛使用,因为它显示了关于它们最重要的事情:它们对输入快速变化的响应速度,以及它们是否稳定并能够随着时间的推移将误差最小化。

但是脉冲响应非常重要,因为它可以用来计算输入信号在某一时刻会在输出端引起什么,因此可以将脉冲响应乘以输入信号的结果叠加得到完整的输出信号:是卷积,是你魔法发生的地方。是的,因为脉冲响应只不过是调节器传递函数的傅里叶反变换。

所以这就是数字滤波器的强大之处:它们直接实现脉冲响应,无论我们想要重现阶跃响应(在控制系统的情况下)还是传递函数(在滤波器的情况下),我们只需要导出脉冲响应并提取 FIR 的系数。

卷积通常是 FIR 滤波器,而不是像传统递归滤波器中的极点和零点那样的 IIR。现在,如果您有阶跃响应,您可以将其反转,并以此对响应信号进行预卷积。最终结果是整个系统呈现出精确的阶跃响应。但是,在一般情况下,这会引入群延迟,因为您需要“预加载”逆响应。在控制系统中,这可能导致不希望的延迟。

我会转过头来说,如果你有能力测量系统的阶跃响应,你可以缩短很多理论,继续优化你的控制参数。您可以通过测量闭环响应来调整系统,而不是测量开环响应并尝试计算理想的控制参数(尽管这有助于找到一个好的优化起点)。

主要思想是测量阶跃响应可以让您(粗略地)看到控制系统是欠阻尼、过阻尼还是临界阻尼(理想情况)。

如果您测量阶跃响应并看到振铃,您就知道您的阻尼不足。如果您测量阶跃响应并且输出只是缓慢地达到最终值,则您知道您的阻尼不足。如果您可以在重复测量阶跃响应的同时调整控制器,您可以简单地调整它以获得最快的响应而不会出现振铃,并且知道您接近最佳情况响应。

您可以从使用 P 项开始。如果结果不令人满意,则添加 I 和 D 项。I 项有助于消除响应中的长尾,或输出从未完全达到所需值的情况。D 项有助于通过“预测”输入接下来的去向来加快响应速度。(我的猜测是,虽然我不是控制专家,但 P 项可以绝对优化,但 I 和 D 项的最佳选择不仅取决于受控系统的响应,还取决于输入信号的频率成分和幅度等特征)

一旦你获得了最快的响应,你可以在没有振铃的情况下获得,然后将其调整为略微过度阻尼,以便温度变化或任何不会将系统调整为振荡的东西。