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


17

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

受此答案*的启发,我对如何基于测得的阶跃响应实现控制系统的更详细的解释感兴趣。

我不会尝试猜测所有的影响。可能发生了一些非显而易见的事情,并且您不知道所有参数。

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

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

这是如何工作的?PID调节困难 ; 我假设“卷积控制”是零极点或传递函数的使用,但没有确切知道如何获取参数。

相关文章:控制系统的系统建模
*对作为阻尼器的管道中的乒乓球悬浮运动传递函数进行建模

Answers:


23

介绍

首先,我们需要考虑这个东西到底是什么,它被称为系统的脉冲响应以及它的含义。这是一个抽象的概念,需要一点思考才能实现。我不会参加严格的数学运算。我的观点是尝试让事物具有某种直觉,然后引导您如何使用它。

控制问题示例

想象一下,您有一个大的脂肪功率电阻器,上面装有温度传感器。一切都在环境温度下开始。当您打开电源时,您知道传感器上的温度最终会升高并达到稳定状态,但是精确的方程式很难预测。假设系统的时间常数大约为1分钟,但是“时间常数”并不完全适用,因为温度不会像单极系统中那样以良好的指数上升,因此也只有一个时间常数。假设您要精确地控制温度,并将其更改为新的水平,并比仅以适当的功率水平打开并等待的速度更快地稳定地停留在那里。

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

PID控制

解决此问题的一种经典方法是使用PID控制器。回到更新世时,必须在模拟电子学中完成这项工作,人们变得聪明起来,并提出了一种可以与手头的模拟功能很好地结合使用的方案。该方案被称为“ PID”,用于比例积分微分

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

今天,用于温度示例之类的闭环控制系统将在微控制器中完成。这些不仅可以获取误差值的导数和积分,还可以做更多的事情。在处理器中,您可以进行除法,平方根,保留最近值的历史记录等等。除了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的范围内以离散的步长改变输出值,并且它是如此之快以至于我们的耳朵听不到它的声音,并且听起来像原始声音一样连续。

那么,如果我们有一种神奇的方法来知道由于任何一个控制输出样本而导致的系统随时间的变化,那么我们该怎么办呢?由于实际的控制响应只是一个样本序列,因此我们可以将所有样本的响应加起来并知道最终的系统响应是什么。换句话说,我们可以预测任意控制响应波形的系统响应。

很好,但是仅预测系统响应并不能解决问题。但是,这就是aha时刻,您可以将其翻转并找到获得任何所需系统响应所需的控制输出。注意,这恰好解决了控制问题,但前提是我们能够以某种方式知道系统对单个任意控制输出样本的响应。

因此,您可能在想,这很简单,只需给它一个大脉冲,然后看看它会做什么。是的,从理论上讲这是可行的,但实际上通常不可行。这是因为任何一个控制样本,即使是大样本,在总体方案中都非常小,以至于系统几乎没有可测量的响应。请记住,每个对照样本在事物方案中必须很小,以便对照样本序列对系统而言是连续的。因此,并不是说这个想法行不通,而是在实践中,系统响应是如此之小,以至于掩盖在测量噪声中。在电阻器示例中,以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的1倍)低于我们的噪声水平。

现在,您可以轻松计算任何控制输入信号的系统响应。对于每个500 ms的控制输出样本,添加根据该控制样本的大小缩放的这些脉冲响应之一。该脉冲响应对最终系统输出信号的贡献的0时间是在其控制采样时。因此,系统输出信号是这些脉冲响应的系列,彼此之间偏移了500 ms,每个脉冲响应在那时都缩放到了控制样本水平。

系统响应是控制输入与该冲激响应的卷积,该冲激响应是每个控制样本计算得出的,在本示例中为每500 ms。要从中制造出控制系统,请向后进行操作,以确定产生所需系统输出的控制输入。

即使您要使用经典的PID控制器,该脉冲响应仍然非常有用。调整PID控制器需要大量实验。在实际系统上,每次迭代将花费一两个小时,这将使迭代调整非常缓慢。利用脉冲响应,您可以在一秒钟内在计算机上模拟系统响应。现在,您可以尝试尽快更改新的PID值,而不必等待一两个小时,真实系统便可以显示其响应。最终值当然应该始终在实际系统上检查,但是大多数工作可以在短时间内完成仿真。这就是我在问题中引用的段落中的“您可以将其用作模拟基础,以找到老式PID控制的参数”的意思。


4
不。太。破旧。
NickHalden'3

4
我认为某些章节标题在这里可能真的很有价值。但是很棒。
Kortuk'3

我参加聚会很晚,但仍然:印象深刻的答案,奥林!:)
bitsmack

7

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

将脉冲响应卷积到信号(在时域中)与将传递函数乘以信号的变换(在频域中)完全相同;从根本上讲,它包括将滤波器的脉冲响应乘以信号的转换版本(请考虑以下事实:滤波器响应在时间上是固定的,而信号在时间上是连续变化的。

在数字滤波器中,脉冲响应被减小为固定数量的系数,该系数使信号在特定点处相乘;这些点被延迟分开,获得0乘以信号的瞬时值,而k乘以k个延迟单位后的相同信号。

在此处输入图片说明

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

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

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

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

更新资料

OP询问步阶和冲动响应;就像Olin和Jon所说的,脉冲响应是阶跃响应的导数,显然阶跃响应是脉冲响应的积分。

阶跃响应在控制系统中得到了广泛的应用,因为它显示了有关它们的最重要的信息:它们对输入中的快速变化做出响应的速度如何,以及它们是否稳定并且能够将误差随时间最小化。

但是脉冲响应非常重要,因为可以用来计算某个瞬间输入信号将在输出上引起什么,因此,通过将脉冲响应的结果乘以输入信号,可以得到完整的输出信号:是卷积,是魔术发生的地方。是的,因为脉冲响应无非是调节器传递函数的傅立叶反变换。

因此,这就是数字滤波器的强大功能:它们直接实现脉冲响应,而无论我们要重现阶跃响应(对于控制系统)还是传递函数(对于滤波器),我们都必须推导脉冲响应并提取FIR的系数。


好答案!要完成它,您能否包括如何从该步骤获得脉冲响应?(我在@JonWatte的回答中看到了。)
tyblu 2012年

4

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


@JohWatte,例如?
Kortuk'3

1
或者我所做的是将低通滤波器应用于控制信号。理想情况下,迈出一步可以步出一步,但实际上这是不可能的,因为输出必须无穷大。您可以对控制输入进行过滤,以使步进输入变成可以实现的效果,这意味着卷积值永远不会超出输出驱动器能够产生的值。特别是,负值通常是不可能的。例如,如果使用电阻加热器调节温度,则不能产生负热量(可以使用珀耳帖,那么值可以为负)。
奥林·拉斯洛普

您如何反转阶跃响应?是“响应信号”是所需的输出吗?
tyblu 2012年

简要地说,如果我没记错的话:您将阶跃响应转换为脉冲响应。然后,从输出信号中减去与输入信号卷积的脉冲响应(去除了脉冲)。正是这种卷积增加了群时延(延迟)。我记得十几年前在音频DSP中的麦克风和房间建模方面有很好的参考。
乔恩·瓦特

2

我会解决这个问题,并说,如果您有能力测量系统的阶跃响应,则可以简化很多理论,然后继续优化控制参数。您可以通过测量闭环响应来调整系统,而不必测量开环响应并尝试计算理想的控制参数(尽管这有助于找到最佳的优化起点)。

主要思想是测量阶跃响应将使您(大致)了解控制系统是否欠阻尼,过阻尼或临界阻尼(理想情况)。

如果测量阶跃响应并看到振铃,则说明阻尼不足。如果测量阶跃响应,并且输出仅缓慢地达到最终值,则说明阻尼不足。如果您可以在重复测量阶跃响应的同时调整控制器,则只需对其进行调整即可获得最快的响应而不会出现振铃,并且知道您已接近最佳情况。

您可以仅使用P项开始。如果结果不令人满意,则添加I和D项。I项有助于消除响应中的长尾巴,或者在输出从未完全达到所需值的情况下使用。D项通过“预测”输入的下一个位置,有助于加快响应速度。(尽管我不是控制专家,但我的猜测是P项可以绝对值进行优化,但是I和D项的最佳选择不仅取决于系统的响应,还取决于输入信号的特征,例如频率内容和幅度)

一旦获得最快的响应,就可以不振铃,然后将其调整为稍微过阻尼的状态,这样温度变化或任何因素都无法使系统振荡。

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.