2026a
# 模型参数操作
模型参数操作主要为获取模型参数相关信息和值,并可修改模型相关参数值。
# GetParamInfoEx
获取指定组件中的参数列表。
# 语法
/**
* @brief 获取指定实例层次中的参数列表
* @param [in]cls_key 主模型key
* @param [in]name_nodes 组件名字列表,前缀节点必须是非内置类型
* @param [out]param_info 参数信息列表
* @return 是否成功获取
* @note 参量和重声明都看做参数,因此包含参量和重声明
*/
bool MwMoHandler::GetParamInfoEx(MWint cls_key, const MwStrList& name_nodes, std::vector<MwParamInfo>* param_info);
# 说明
获取模型中的参数信息,传入主模型 key 并且 name_nodes 为空时可获取该模型下所有参数信息;当传入主模型 key 并且在 name_nodes 传入组件名称可获取该模型下对应组件下的所有参数。
# 示例
- 获取模型PID_Controller的参数信息示例结果如下:
MwClassManager* classMgr = new MwClassManager(); classMgr->Initialize(); MWint model_key =classMgr->GetMoHandler()->GetKeyByTypeName("Modelica.Blocks.Examples.PID_Controller"); MwStrList name_nodes; std::vector<MwParamInfo> cur_param_info; classMgr->GetMoHandler()->GetParamInfoEx(model_key, name_nodes, &cur_param_info);
- 获取PID_Controller下组件名为”PI”的参数信息示例结果如下:
MwClassManager* classMgr = new MwClassManager(); classMgr->Initialize(); MWint model_key=classMgr->GetMoHandler()->GetKeyByTypeName("Modelica.Blocks.Examples.PID_Controller"); MwStrList name_nodes; std::vector<MwParamInfo> cur_param_info; name_nodes.push_back("PI"); ClassManagerPtr->GetMoHandler()->GetParamInfoEx(model_key, name_nodes, &cur_param_info);
# GetParamValue
获取指定参数的值。
# 语法
/**
* @brief 获取指定参数的值
* @param [in]cls_key 主模型key
* @param [in]name_nodes 参数全名节点列表
* @return 字符串格式的变型值
*/
std::string MwMoHandler::GetParamValue(MWint cls_key, const MwStrList& name_nodes);
# 说明
获取指定参数值,传入主模型 key 并且 name_nodes 传入该模型下的参数名时,可获取到该参数的值;传入主模型 key 并且 name_nodes 传入该模型下的组件名和参数名时,可获取到该组件下对应的参数名的值。
# 示例
- 获取模型下的参数值value = “1.570796326794897”
MwClassManager* classMgr = new MwClassManager(); classMgr->Initialize(); QString model_name = "Modelica.Blocks.Examples.PID_Controller"; MWint model_key =classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString()); MwStrList name_nodes; name_nodes.push_back("driveAngle"); std::string value = classMgr->GetMoHandler()->GetParamValue(model_key, name_nodes); - 获取模型下 PI 组件的参数 k 的值
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key
=classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
MwStrList name_nodes;
name_nodes.push_back("PI");
name_nodes.push_back("k");
std::string value = classMgr->GetMoHandler()->GetParamValue(model_key, name_nodes);
value = “100”
# SetParamValue
设置指定参数值。
# 语法
/**
* @brief 设置指定参数的值
* @param [in]cls_key 主模型key
* @param [in]name_nodes 参数全名节点列表
* @param [in]val 参数的值
* @return 字符串格式的变型值
*/
bool MwMoHandler::SetParamValue(
MWint cls_key,
const MwStrList& name_nodes,
const std::string& val);
# 说明
修改参数值,传入主模型 key 并且 name_nodes 传入该模型下的参数名时,可修改到该参数的值;传入主模型 key 并且 name_nodes 传入该模型下的组件名和参数名时,可修改到该组件下对应的参数名的值;修改后注意调用 SaveModel 函数将修改参数保存到模型中。
# 示例
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key
= classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
MwStrList name_nodes;
name_nodes.push_back("PI");
name_nodes.push_back("k");
bool value = classMgr->GetMoHandler()->SetParamValue(model_key, name_nodes, "200");
classMgr->GetMoHandler() -> SaveModel(model_name);