我试图在OMPython中使用setParameter更改参数,在那里我加载了Modelica模型并解决了它。我想用其他数值更改参数,但收到错误消息:
| 资讯|setParameters()失败:无法设置以下信号“Nass”,它似乎是结构化的、final的、protected的或求值的,或者具有非常量绑定,使用sendExpression(setParameterValue(CyclicLoading,Nass,12000),parsed=false)并使用buildModel()API重建模型
setParameter引入之前的OMPython代码:
from OMPython import ModelicaSystem
from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
modelpath="C:/work/code/modelica/"
Nom_fichier_mo="CyclicLoading.mo"
Nom_fich="CyclicLoading"
fich_res_Modelica_mat="Resultat_av_CyclicLoading.mat"
mod=ModelicaSystem(modelpath+Nom_fichier_mo,Nom_fich,["Modelica","CyclicLoading"])
mod.buildModel()
Directory_cd=omc.sendExpression("cd()")
resultatSimluation=mod.simulate(resultfile=f"{fich_res_Modelica_mat}")
Solution_var=mod.getSolutions()
setParameter引入后的OMPython代码:
from OMPython import ModelicaSystem
from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
modelpath="C:/work/code/modelica/"
Nom_fichier_mo="CyclicLoading.mo"
Nom_fich="CyclicLoading"
fich_res_Modelica_mat="Resultat_av_CyclicLoading.mat"
mod=ModelicaSystem(modelpath+Nom_fichier_mo,Nom_fich,["Modelica","CyclicLoading"])
mod.buildModel()
**mod.setParameters("Nass=12000") **
Directory_cd=omc.sendExpression("cd()")
resultatSimluation=mod.simulate(resultfile=f"{fich_res_Modelica_mat}")
Solution_var=mod.getSolutions()
尝试通过使用open modelica Python API命令更改open modelica代码中给定的参数。导致错误消息:|资讯|setParameters()失败:无法设置以下信号“Nass”,它似乎是结构化的、final的、protected的或求值的,或者具有非常量绑定,使用sendExpression(setParameterValue(CyclicLoading,Nass,12000),parsed=false)并使用buildModel()API重建模型
2条答案
按热度按时间czq61nw11#
在许多情况下,不允许根据Modelica规范更改参数。
对于以下型号
HelloWorld
只允许改变参数
a
的值。在没有看到Modelica模型的情况下,我假设您在尝试更改
Nass
时遇到了这些情况之一。brgchamk2#
感谢您发送编修。实际上,我的参数应该是可变的,但我在代码的开头定义了一些变量,这些变量使参数不可变,因为它们被放置在真实的变量之后。我把参数放在真实的变量之前,现在它工作了。