问题描述
我的目的是通过 _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 (将#修改为@)