Engee 文档
Notebook

演示 PID 控制器系数对控制系统输出信号的影响

让我们考虑一下pid_demo_mask.engee 模型中的控制系统。它由一个控制对象和一个 PID 控制器组成。在本示例中,我们将展示如何通过脚本控制 PID 控制器的系数值,并分析模拟结果。

image.png

调整 PID 控制器的方法多种多样。但有时为了达到系统的技术要求,有必要手动调整系数。为了实现参数更改,我们使用了 Engee 工具 - 单元掩码。

当您更改任何系数的值时,隐藏在单元格掩码下的代码会根据新的参数自动运行。执行后会得到新的结果。在我们的例子中,结果将是系统对单步操作的响应图。

加载模型并尝试更改某些参数。

In [ ]:
modelName = "pid_demo_mask";
PID_model = modelName in [m.name for m in engee.get_all_models()] ? engee.open( modelName ) : engee.load( "$(@__DIR__)/$(modelName).engee");
In [ ]:
K_p = 29.59 # @param {type:"slider", min:0, max:50, step:0.01}
K_i = 1.23 # @param {type:"slider", min:0, max:5, step:0.01}
K_d = 0.49 # @param {type:"slider", min:0, max:3, step:0.01}

results = engee.run( modelName )

PID_res_e_t = results["out"].time;
PID_res_e_d = results["out"].value;
PID_ref_e_d = results["ref"].value;

plot(PID_res_e_t , [PID_res_e_d PID_ref_e_d], legend = false)
plot!(title = "Результаты моделирования в Engee", ylabel = "Отклик", xlabel="Время, c")
xlims!(0,20)
Out[0]:

您可以点击单元格启动按钮旁边的 image.png来禁用结果自动更新。您还可以在单元格掩码下的代码中更改参数的最大值、最小值和步长变化。

示例中使用的块