雷竞技注册
项目

嵌入式PID温度控制,第5部分:调整收益

2016年2月29日经过罗伯特·凯

我们将探索P,I和D如何增益,影响系统性能,并且在此过程中我们将找到适用于温度控制器的增益配置。

我们将探讨P,I和D如何增益,影响系统性能,并且在此过程中,我们将找到一个适用于温度控制器的增益配置。

支持信息

本系列中的前一篇文章

在我们开始之前,这是之前呈现的PID控制系统图:

这里是PID相关部分的示意图:

GUI升级

我们在本文中的目标是获得实体的概念理解,对比例,积分和衍生利益影响PID控制系统的性能。如果我们有更改增益值的便捷方式,这将是很容易的。因此,我们需要为GUI添加一些新功能:

正如您所看到的,我们现在有P,I和D的文本输入框。These values are sent to the EFM8 in the same way as the setpoint, i.e., via a USB command transmitted at the beginning of each control run (a “control run” starts when you click “Activate PID Control” and ends when you click “Halt PID Control”; the plot showing the measured temperatures and the setpoint line is cleared at the beginning of a new control run). The gain values are limited to integers in the range 0 to 255. Let’s take a quick look at two portions of the Scilab script that are relevant to this new functionality. Here we convert the digits in the text-entry boxes into variables that can be sent to the EFM8 as plain binary numbers (rather than ASCII characters):

这就是我们如何将增益值发送到EFM8。以前我们这里只有两个传输 - 用于发送设定值的“s”命令和用于启动控制运行的“c”命令。现在我们有三分之一,即“k”命令发送所有三个增益值。

以下是下载新GUI脚本的链接:

pid_temperature_control_gui_v2.zip.

固件升级

当然,如果EFM8固件不知道如何处理“k”命令,则此新GUI功能将无法完成,因此让我们简要介绍固件更改。首先,我们需要转换K_Proportional.K_Integral., 和k_derivative.从main()中定义的局部变量函数到全局变量,该变量将可用于main()和vcpxpress_api_callback()。我们通过定义任何函数之外的变量来执行此操作,然后我们还将它们声明为Project_DefsVarsfuncs.h文件中的“extern”。现在我们可以添加一些代码来处理“k”命令:

以下是下载项目中使用的固件的所有源和项目文件的链接。

pidtemperaturecontrol_part5.zip.

从P开始

要将PID代码转换为实际控制变量的内容,您需要找到P增益的合理值。这不是一个可能思考的那么简单,因为在低级,特定于应用程序的PID系统(例如我们的温度控制器)的上下文中,实际上增益值翻译数值信息。我的意思是:我们的系统有两个单独的数值域 - 温度(以摄氏度为单位)和数字计数(其又对应于DAC电压,这又对应于加热器驱动电流,这又对应于电阻器产生的热量)。这两个域名说出不同的语言;我们需要做的是设置比例增益,使得它将从一个数字域正确转换到另一个数字域。

您可以通过思考系统操作的究竟运行的究竟是如何做到这一点的体面的工作:我们从MAX31855读取温度值并计算错误。然后,此错误确定电阻产生的热量。我们在DAC值为200时获得最大热量(系统支持高达255的DAC值,但我选择200作为上限)。当误差很大时,我们想要最大热量,即,当测量的温度远离设定点时。但是,在某些时候,随着测量的温度接近设定值,热输出应开始减少。这是您只是选择一个有意义的值,然后在几个控制运行后,您可以根据需要调整它。假设我们希望加热器保持最大,直到测量的温度在设定值的5°C范围内:200/5 = 40。所以我们从比例增益开始40。

请记住,PID控制输出是DAC值,并计算PID输出,我们将比例增益乘以“误差”,这意味着设定点温度减去测量的温度。因此,只要误差大于或等于5°C,加热器就会最大。当测量的温度接近设定值时,加热器驱动电流与误差 - 在4℃下比例成比例,DAC值为160,在3°C时,DAC值为120,等等。这是您的起点,如果需要,您可以根据系统的实际性能调整比例增益。一旦您对比例增益感到满意,您可以继续转移到积分和衍生增益。

仅限P-only系统

你真的需要积分和衍生增益吗?嗯,这取决于您的操作要求(以及系统的特征)。让我们来看看仅用k的P-only系统运行P.= 40。

正如预期的那样,系统遭受显着稳态的不准确性。当误差很小时,P增益不足以抵消电阻器的自然倾向,以冷却环境温度。我们可以简单地通过增加比例增益来解决这个问题吗?嗯,这里有四个只有4个控制P.= 70,100,150和200。

思考这些地块一分钟,我认为你将开始了解仅限P-opto系统的弱点。如果增益太低,则您有一个主要的稳态错误。随着增益升高,您只需交换稳态错误以进行振荡。当我们到达k时P.= 200,输出几乎以设定值 - 换句话说,平均稳态误差非常小 - 但我们已经持续了振荡相当显着的振幅。如果您对此表现感到满意,我想您可以在此停止。但我不满意。

带来积分

积分术语允许逐渐累积的小错误,从而对PID输出产生的影响力比仅在P-ock系统中的影响力。但是,你必须要小心,因为积分错误可以快速累积,并且系统开始太多的增益,系统开始就像摆锤出错一样在设定值下方构建,并将温度驱动得太高,然后在设定值上方建立错误并将温度驱动得太低,然后错误在设定值下方构建,并将误差驱动得太高,等等。

让我们从k开始一世= 10,看看会发生什么。

显然,这个值太高,因为我们有主要的摆动行为。(我们知道振荡是由积分增益引起的,而不是比例增益,因为只有KP.= 40没有振荡。)让我们试试k一世= 5。

这仍然是不可或缺的增益,但我们越来越近了K.一世= 10振荡约为11°C峰到峰,k一世= 5它们只有约6°C峰到峰。以下是控制与k运行的图一世= 3和k一世= 2。

这两者都很好。K.一世= 3运行具有显着的振荡,但幅度显然是显而易见的,因此我们可以假设测量的温度最终将找到设定点并留在那里。K.一世= 2运行没有振荡,但没有足够的积分增益来克服仅限P-LOST系统的稳态错误趋势。在这一点上,我喜欢kP.= 40 / k一世= 3系统,但如果输出融合的更快,则会很好。为此,我们需要衍生增益。

用衍生物完成

许多PID系统实际上在没有衍生增益的情况下实现。正如我们在上一节所看到的那样,PI控制器可以非常有效。此外,衍生物易受噪声影响,导致短期变化率与输出的整体行为不一致。但一般来说,没有一些衍生增益,PID控制器不会达到它的全部潜力。衍生项使系统更响应,因为它根据基于的PID输出修改未来系统的行为。以这种方式思考它:随着测量的温度接近设定值,误差越来越小。因此,误差的变化(计算为当前误差减去前一个错误)是否定的。然后乘以(正)导数增益值乘以该错误的这种变化,并添加到PID输出。乘法的结果是否定的,因此降低了PID输出 - 导数术语减少了PID输出基于期望输出正在接近设定值,这导致较少的过冲。当测量的温度朝向设定值下降时,逆转会发生:衍生项随着接近设定值而增加,因此降低了下冲。

以下是k的控制运行D.= 1,2和3:

假设当温度曲线立即与绿色设定点线的温度曲线保持相邻时,输出已经融合。使用以前的配置(kP.= 40 / k一世= 3 / kD.= 0),输出在大约430秒后从未收敛。用K.D.= 1,结果大致相同。用K.D.= 2,我们有400秒的收敛,kD.= 3系统似乎更快地融合了一点。

结论

在这一点上,我对k感到满意P.= 40 / k一世= 3 / kD.= 3配置。在下一篇文章中,我们将研究更正式的技术,用于调整增益值。

下一篇文章串联:嵌入式PID温度控制,第6部分:Ziegler-Nichols调整

3评论
  • B.
    BGWIZ. 2016年3月03日

    奇怪的是,我会认为kp = 40 / ki = 2 / kd = 0配置图表看起来更令人恢复速度比你的kp = 40 / ki = 3 / kd = 3配置更快,没有?

    喜欢。 回复
    • RK37. 2016年3月5日
      kp = 40 / ki = 2 / kd = 0运行更快地稳定,但是存在显着稳态错误。测量温度稳定在设定值下方约1℃,因为没有足够的积分增益。kp = 40 / ki = 3 / kd = 3运行速度慢慢沉淀,但测量的温度围绕设定值居中。
      喜欢。 回复
  • 豪华林 2016年3月5日

    我很少使用PID控制器进行温度,更通常压力或电机速度。我从来没有曾经使用过D术语,主要是因为我真的不明白如何正确设置它,而且因为各种各样的噪声呈现不可能使用。任何包含逆变器电动机速度控制的系统都是例如用于精细换能器信号的总噩梦,但也有物理伪造物,例如可以裁剪的空气或液压螺线管“撞击”。要小心出来。

    喜欢。 回复