如何将 PID 控制器调整为非线性过程

电器工程 温度 控制 控制系统
2022-01-29 02:17:34

我有一个非线性热过程(随着温度的升高,非线性辐射变得越来越多),我想调整一个 PID 控制器。我想尽可能准确地控制温度。

我计划将温度范围划分为 N 个伪线性范围(待定义),并针对每个温度范围:使用小的温度步长拟合一阶模型,并计算 PID 参数以适应该模型。PID 参数将根据过程温度自动切换*。

我的问题如下:例如考虑 70°C 检查点。P 瓦特已经在流动以达到该温度。我将注入 dP watt 以将温度提高 1°C。然后我会记下时间常数,稳态增益将为 1/dP °C/W。[请您花点时间考虑一下这是否正确?] 最后,我将调整该工厂的 PID,以获取该温度范围的参数,然后转到其他范围。

现在,假设过程达到 70°C。加载新参数并重置积分计数器。误差可能为 1°C,但所需的功率远大于达到 21°C 所需的功率,可以肯定控制器的需求将低于 P 瓦。这意味着在积分项需要 P 瓦特之前温度会下降很多,只有到那时 dP 额外的瓦特才会最终使过程达到 71°C(并且肯定会过冲)。与 dP 相比,P 越大,它变得越差。

似乎加热器应该由控制器输出和保持在当前“参考温度”(例如 70°C)所需的功率之和来驱动。但是现成的控制器不提供这种功能,因此必须有另一种方法。

我错过了什么?什么是正确的方法?

*:它实际上是增益调度

3个回答

如何将 PID 控制器调整为非线性过程?

你没有。您将过程线性化,然后让 PID 控制器处理线性值。

通过“使过程线性化”,我并不是要真正使过程本身成为线性的。由于物理原因,这通常无法完成。但是,您可以在 PID 控制器的输出和过程输入之间放置一些非线性的东西,以便 PID 输出从 PID 控制器的角度线性控制过程。

这种线性化器不需要非常精确,因为它位于反馈回路内。其目的是在控制动态范围内呈现大致恒定的增益。一种简单而通用的方法是分段线性基于表的函数。16 或 32 段通常足以满足任何非高度非线性过程。

我遇到的最糟糕的例子是通过改变阴极灯丝的驱动强度来控制通过电子管的电流。阴极温度对电子束电流的作用是高度非线性的,控制阴极灯丝电流的系统也有些非线性。在这种情况下,很难预测这整个混乱,所以我在生产过程中使用了一个校准程序,逐步检查灯丝驱动控制值,测量每个的光束电流,然后从中计算出一个 32 段的查找表。它工作得很好,我们能够调整射束电流 PID 控制器以在整个范围内获得良好的响应。

如果过程前没有线性化功能,您必须调整 PID 控制器以在过程的最高增量增益点保持稳定性。这会导致其他点的行为非常阻尼。

添加

您更新的问题中没有任何内容说明为什么上述方法仍然不是一个好主意和适用的。你说你正在使用模拟控制器。我的第一反应是“1980 年代早已过去,不要那样做”。 但是,PID 控制器和设备线性化器可以是独立的。

显然,工厂的输入是功率,输出是温度。在一系列功率水平下测量典型的稳态温度。从中您可以计算将线性化“功率”转换为实际工厂功率输入的函数。模拟 PID 控制器可能会输出与功率成正比的电压。您所要做的就是插入一个与该电压一致的黑匣子,该电压可以线性测量到实际功率电平的转换。

通常,您会使用具有内置 A/D 的微控制器来执行此操作。在点之间进行此表查找和线性插值是微不足道的。然后它以最终转换为电压的方式输出结果。由于与微控制器相比,设备速度较慢,因此这可以像过滤和缓冲 PWM 输出一样简单。或者您可以直接驱动 D/A,尽管在这种情况下这听起来不是必需的。

为了与 1980 年代控制器的主题保持一致,您可以使用 A/D、内存和 D/A 来实现这种复古感。

在任何情况下,PID 控制器现在都在有效控制线性设备,据其所知,应该可以将其调整到良好的性能。

在一个地方对工厂输入进行分段线性变换比在输出范围内调整 PID 控制器内的 3 个值更容易。后者是杂牌,而前者直接解决了问题。测量线性化函数的数据也比确定各个点的 P、I 和 D 增益要容易得多。即使您这样做了,您仍然会遇到暂时的问题,因为正确的收益不会立即应用于情况。再次,“增益调度”是一个kludge。

请记住,当您对模型进行线性化时,实际上是在假设非线性模型 y = f(x) 被替换为 y = A*(x-x0) + B。请注意,x0 是线性化点。当您为 x 引入范围时,您最终会得到多个 A、B 和 x0。无论哪种方式,控制器的输入都将是相对于当前线性化点的误差。但是,您仍然会偏移输入信号(使用 B),因此即使相对于当前线性化点的误差为 0,您仍然会继续执行信号。

在您的示例中,即使误差为 0 度(在 70 度设定点),控制器仍将输出大于 0 的功率。

使用 PID 控制器进行非线性控制的一种方法,一种在工业中广泛使用的方法,称为“增益调度”。

非线性控制问题被分解为一系列足够线性的区域,并为每个区域使用适当的参数。