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的参数信息
  • 获取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);
    
    示例结果如下: 获取PID_Controller下组件名为”PI”的参数信息

# 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 传入该模型下的组件名和参数名时,可获取到该组件下对应的参数名的值。

# 示例

  • 获取模型下的参数值
    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);
    
    value = “1.570796326794897”
  • 获取模型下 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);