如何将 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。