OpenModelica中无法通过_ini.xml更改参数

问题描述

我的目的是通过 _init.xml 更改组件的参数:

模型声明为:

model ModelA
  ...
  parameter Types.ActivePower PRefConst = 0
  ...
  Types.ActivePower PRef(nominal = SNom) =  PRefConst
   ...
end ModelA;

在实例化ModelA期间,PRefConst被分配了一个值:

  model_a ModelA(...,PRefConst = 14.9e6,...);

在已编译的C代码中,可以注意到PRefConst的值是硬编码的。


/*
equation index: 6068
type: SIMPLE_ASSIGN
model_a .PRefConst = 14900000.0
*/
void modelName_eqFunction_6068(DATA *data,threadData_t *threadData)
{
  TRACE_PUSH
  const int equationIndexes[2] = {1,6068};
  data->simulationInfo->realParameter[1565] /* model_a .PRefConst PARAM */ = 14900000.0;
  TRACE_POP
}

/*
equation index: 6067
type: SIMPLE_ASSIGN
model_a .PRef = model_a .PRefConst
*/
void modelName_eqFunction_6067(DATA *data,6067};
  data->simulationInfo->realParameter[1564] /* model_a .PRef PARAM */ = data->simulationInfo->realParameter[1565] /* model_a .PRefConst PARAM */;
  TRACE_POP
}



因此,即使我更改了 _init.xml 文件中的PRefConst的值,最终仿真结果也表明即使正确更改了PRefConst,但是PRef的值仍为14900000.0,因为它已经由C代码中原始PRefConst的值分配。如何避免这种情况?也许通过 preOptModules postOptModules 中的某些选项?
我当前的preOptModules设置为

setPreOptModules("normalInlineFunction,expandDerOperator,clockPartitioning,findStateOrder,inlineArrayEqn,encapsulateWhenConditions")

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)