首页 > 解决方案 > 关于 setParameterValue 的 OpenModelica 脚本问题

问题描述

我使用脚本文件进行模拟。我使用 omc.exe 来运行我的 mos 文件。

我一直面临1个问题

loadModel(Modelica); getErrorString();
loadFile("C:/Users/namcho/Documents/Tez_DAB/Simulation/MachineLearningAlgo/DAB_ideal.mo"); getErrorString();
loadFile("C:/Users/namcho/Documents/Tez_DAB/Simulation/MachineLearningAlgo/uControllerDAB.mo"); getErrorString();
checkModel(DAB_ideal);
Kp := 1.2;
Ti := 5e-5;
Td := 0;
typeOf(v1);

setParameterValue(DAB_ideal, PID_Kp, Kp); getErrorString();
setParameterValue(DAB_ideal, PID_Ti, Ti); getErrorString();
setParameterValue(DAB_ideal, PID_Td, Td); getErrorString();

instantiateModel(DAB_ideal);

在上面的代码中,我想将 Kp 的值传递给我的 DAB_ideal 模型。如果我按照上面的方法尝试,它会给出

“[C:/Users/namcho/Documents/Tez_DAB/Simulation/MachineLearningAlgo/DAB_ideal.mo:3:3-3:20:writable] 错误:在 DAB_ideal 范围内找不到变量 Kp。错误:展平模型 DAB_ideal 时发生错误”

那个错误。 如果我尝试 setParameterValue(DAB_ideal, PID_Kp, 1.2); 有用。
如何将该 Kp 的值传递给 setParameterValue 函数?我尝试使用 PowerShell $ 符号(以及更多不同的符号)将 Kp's($Kp) 值传递给它也不起作用的函数。

标签: scriptingopenmodelica

解决方案


这还不起作用,因为只有模型中的值或参数可以用作第三个参数。setParameterValue 函数并不关心你给出什么表达式,它会将它作为绑定放入模型中。我会看看我们是否可以为此实现一个快速的解决方案,它应该很容易调用诸如 $VariableValue(Kp) 之类的函数,我们可以在将其传递给模型时将其替换为实际值。我会为此开张票。


推荐阅读