在 COMSOL Multiphysics® 软件中,您可以很轻松地为您的仿真添加一个 PID 控制器插件。PID 控制器插件自 COMSOL 5.5 版本开始新增的功能,可以添加到任何仿真项目中。它实现了一个标准的比例积分微分(PID)控制器,具有额外的功能,如积分抗饱和与导数项的滤波。这种控制器被广泛应用在工业过程控制中。在这篇文章中,我们将描述如何使用 PID 控制器,并通过两个仿真示例来演示它的作用。
PID 控制器插件简介
从 COMSOL® 5.5 版本开始,我们就可以使用插件功能了。插件 是自定义设置 窗口和模型方法的组合,形成一些通用功能,可以添加到任何仿真模型中。
PID 控制器插件是 COMSOL Multiphysics 中包含的示例插件之一,可以从软件的开发工具栏打开插件库 窗口获得。当导入 PID 控制器插件后,可以从插件 菜单(也可以在开发器工具栏)将其添加到你的模型中。然后它就会作为 PID 控制器节点出现在模型开发器的全局定义下。下图显示了 PID 控制器的设置窗口。
PID 控制器插件的设置窗口。在信息 部分,你可以找到关于创建的控制变量及其推导单位的信息。
PID 控制器方程
PID 控制器的方程是标准方程,增加了控制变量(输出)u 的可选偏差。对于导数项,不包含设定值 9 参考值),因为设定值通常是恒定的没有突然的变化。因此,设定值对导数项没有贡献,只是在变化时作为不需要的急剧输出。
测量值的输出
对于测量值的输出(以 c(t) 出现在方程式中),通常会添加一个域点探针,对你想控制的数量进行测量,如温度或物质浓度。域点探针被添加到几何结构的某个地方,作为你想控制的过程的控制器反馈。
控制器参数
在控制器参数 部分,你可以输入 PID 参数和参考值(设定值)。此外,还可以给控制变量添加一个可选的偏差,并给输出添加限制。在实际情况中,接收控制器输出的执行器(例如阀门或加热器)几乎都有下限和上限。
在 “抗饱和 “和 “预过滤 “下,你可以在 PID 控制器中加入两个常见并且有用的附加功能。
- 积分抗饱和
- 导数项的滤波
抗饱和 是对 PID 算法的一个补充,它考虑了执行器有极限。这时可能会发生控制变量达到执行器的极限,就会有效的破坏反馈回路,因为执行器仍然处于其极限。如果控制器中有一个积分部分,那么误差将继续被积分,并可能变得非常大(也就是说,它 “卷积 “了)。在执行器饱和的情况下,这种不受欢迎的行为可能会导致大的瞬态变化。
控制器的积分部分对于消除稳态误差至关重要,因此通常不能关闭。添加积分抗饱的目的是通过一个额外的反馈回路来避免卷积,其误差信号被定义为控制变量和执行器输出之间的差值。这意味着,当执行器不饱和时,误差为零。然而,当执行器饱和时,抗饱和算法将试图驱动积分器到一个值,使控制器的输出正好处于饱和极限,防止饱和。这种复位的速度由反馈增益 1/T_t 决定,其中时间常数 T_t 可以在 PID 控制器插件的设置 窗口中输入。时间常数越小,积分重置的速度越快。
导数项的滤波 是 PID 控制器导数部分的低通滤波器。导数项的一个问题是,它对噪声很敏感。在许多情况下,并没有使用导数项,控制器变成了 PI 控制器。随着导数项被过滤激活,它会变得更加有用,因为测量中的高频噪声将被去除,它将作为反馈信号的低频部分的导数发挥作用。参数 T_f 是时间常数,你可以在 PID 控制器插件的设置窗口中输入这个参数来控制滤波量。时间常数越大,应用于导数项的滤波就越多。
创建控制器和信息部分
当设置好 PID 控制器后,点击设置 窗口顶部的创建 按钮,就可以创建一个零维组件,其中包含以全局方程实现的 PID 控制器。在信息 部分,可以看到创建的控制变量的名称,如 comp2.u_in_ctrl
。这就是控制变量起作用的地方应该输入的变量,比如影响要控制的测量值的流入速度或热源。
信息 部分还显示了控制器的推导单位,它应该与模型中作用量的单位相匹配(例如,速度为 m/s,热源为 W)。如果控制器参数的单位不一致,在 “信息 “部分就会出现一个关于单位不一致的信息,并且不会创建 PID 控制器。
使用全局参数
将控制参数定义为全局参数是一个好的做法。然后可以直接改变它们或通过参数扫描来评估控制器的性能并调整其参数。否则,如果直接在 PID 控制器插件中改变控制器的参数值,则每次都需要创建一个新的控制器。
在下面的章节中,我们将展示使用 PID 控制器插件的 2 个实际案例。
控制 CFD 模型中的物质浓度
COMSOL Multiphysics 案例库中提供了一个使用 PID 控制器的过程控制模型,其中 PID 控制器以用户定义的全局方程方式实现。在这个例子中,使用一个流入来控制燃烧室中点火点的氧气浓度。氧气浓度的测量是作为域探针 特征来实现的。
现在,你可以使用 COMSOL 案例库更新下载这个模型的更新版本。在更新的版本中,PID 控制器是使用 PID 控制器插件创建的,使用的设置如上面的屏幕截图所示。PID 参数和设定值被定义为全局参数。请注意,PID 参数有负值,这反映了控制器的作用是相反的:它控制低氧浓度流量的流入速度,降低了点火点的浓度。
这个模型案例使用参数扫描来模拟包含 2 个不同参数值的 PID 控制,以获得P部分(比例增益)。在仿真过程中,探针图显示了随时间变化的浓度及其时间导数。仿真结束后,在一个绘图中显示了P参数的两个浓度值。显然,较高的比例增益是有益的,但当继续进一步增加它时,过冲将开始增加。积分部分确保了没有稳态误差。
两个比例增益值 k_P_ctrl 情况下,测量点的浓度与时间的关系。
控制传热模型中的温度
第二个示例,我们考虑一个简单的传热模型,模型包含一个被加热的铜板,其周围有一个导热系数较小的材料,PID 控制器作为一个热耗率来控制加热器外某一点的温度。温度的设定值是 310 K,整个铜板最初温度保持在室温 293.15 K。铜板外部边界有一个对流热通量,传热系数设定为 5W/(m^2 \cdot K)。在第一次模拟中,所有 3 个 PID 参数都以参数扫描的方式变化,以观察其效果。下图显示了仅有 PI 控制的测量温度与时间的关系(导数增益被设置为 0)。
三个不同的积分增益值和无导数项情况下温度与时间的关系。虚线表示设定点(310 K)。
积分增益最高的 PID 控制器(红色曲线)到达设定点的速度最快,但代价是更大的过冲。在下一个绘图中,添加了一个导数增益,以便使用一个完整的 PID 控制器:
三个不同的积分增益值和一个导数项值(加快了控制速度)情况下温度与时间的关系。
不出所料,导数增益减少了沉降时间,使得 PID 控制器比 PI 控制器更快。
使用积分抗饱和提高控制性能
在最后的模拟中,最大加热速率降低到 100 W,这限制了控制行为。这一限制将导致 PID 控制器的积分饱和效应,降低控制器的性能。由于这个限制,最低积分增益使控制器响应太慢,因此在下图中包括两个较高积分增益的模拟。下面的绘图显示了关闭积分抗饱和时该案例的 PID 控制器:
当加热速率受限且关闭积分抗饱和时,温度与时间的关系。由于饱和效应,产生了大的过冲。
当打开积分抗饱和后,如下面的绘图所示,控制器发生了巨大的变化。现在的控制器行为非常平滑,没有或非常小的过冲使得温度达到所需的设定点。更高的积分增益可使控制器效果更快,并且没有任何不利影响。
当加热速率受限并打开积分抗饱和时温度与时间的关系,这使得控制器运行更加平滑,而不会过冲。
后续步骤
如果您对模拟 PID 控制器的效果感兴趣,请尝试使用 COMSOL Multiphysics 中提供的 PID 控制器插件。此外,您还可以查看以下资源:
- 尝试自己动手模拟使用 PID 控制器进行过程控制教程模型
- 阅读以下相关的博客文章:
评论 (0)