介绍
首先,我们需要考虑这个东西到底是什么,它被称为系统的脉冲响应以及它的含义。这是一个抽象的概念,需要一点思考才能实现。我不会参加严格的数学运算。我的观点是尝试让事物具有某种直觉,然后引导您如何使用它。
控制问题示例
想象一下,您有一个大的脂肪功率电阻器,上面装有温度传感器。一切都在环境温度下开始。当您打开电源时,您知道传感器上的温度最终会升高并达到稳定状态,但是精确的方程式很难预测。假设系统的时间常数大约为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控制的参数”的意思。