将子系统转换为引用模型
转换过程
将子系统转换为引用模型的一般过程包括以下任务。详细信息请参见将子系统转换为引用模型.
确定将子系统转换为引用模型是否满足您的建模需求。
可选地,在转换子系统之前准备模型。
要创建引用的模型,请运行模型引用转换顾问。解决顾问报告的任何问题,并继续转换,直到顾问报告没有问题。
可选地,让顾问比较转换前后模拟模型的结果。设置关键信号的信号记录。检查顶模仿真结果的一致性。
完成转换后,根据需要更新模型。
确定是否转换子系统
在将子系统转换为模型引用之前,请考虑模型引用是否是用于满足建模需求的方法。
模型引用为大型复杂系统的建模和基于团队的开发提供了几个好处。然而,子系统或库比模型引用更适合某些建模目标。许多大型模型涉及使用子系统和参考模型的组合。有关帮助您决定是否将子系统转换为引用模型的信息,请参见组件化原则.
确认要转换的子系统是可以转换的子系统类型。看到可转换子系统的限制.
可转换子系统的限制
不能将其转换为引用模型子系统Simscape™多体™组件。
要转换掩码子系统,请使用
函数。万博1manbetxSimulink.SubSystem.convertToModelReference
要创建接受异步函数调用的引用模型,请参见异步支持限制万博1manbetx(万博1manbetx仿真软件编码器)。
转换子系统前更新模型
提示
在执行转换之前,请确保包含要转换的子系统的模型已成功编译。
顾问修复或指导您解决问题。但是,如果您正在转换一个大型、复杂的子系统,请考虑在转换模型之前采取步骤。准备模型和子系统可以消除或减少顾问识别的问题数量。在模型编辑环境中解决问题比在advisor和Simulink之间反复切换更有效万博1manbetx®编辑器。
请注意
您可以使用模型参考转换顾问修复选项,让advisor修复一些转换问题。
设置配置参数>诊断>数据的有效性>信号的分辨率参数
明确的只
或没有一个
.您可以使用模型参考转换顾问修复选项自动解决此问题。
为模型配置这些子系统接口。
子系统接口 寻找什么 模型修改 Goto或From块
子系统边界的跨越
使用import块来替换具有相应的跨子系统边界的GoTo块的From块。
使用Outport块来替换每个对应的GoTo块从跨越子系统边界的块。
将Inport和Outport模块连接到相应的子系统端口。
您可以使用模型参考转换顾问修复选项来解决此问题。
数据存储
数据存储内存访问的块数据存储读取或数据存储写入来自子系统外部的块
取代数据存储内存块与全局数据存储。类定义全局数据存储
万博1manbetx仿真软件。信号
对象。详细信息请参见带有信号对象的数据存储.您可以使用模型参考转换顾问修复选项来解决此问题。
可调参数
打开的对话框中的全局可调参数配置参数>优化>配置按钮
使用
tunablevars2parameterobjects
创建一个万博1manbetx仿真软件。参数
对象用于每个可调参数。的
万博1manbetx仿真软件。参数
对象必须具有除Auto以外的存储类。有关更多信息,请参见参数化可重用引用模型的实例和可调参数.
您可以使用模型参考转换顾问修复选项来解决此问题。
配置子系统及其内容。
子系统配置 寻找什么 模型修改 不活跃的子系统变体
变体子系统块。
使您想要转换为活动的子系统变体。顾问不会转换不活动的子系统变量。
要使新的模型块的行为类似于子系统变体,请分别转换每个变体子系统,然后使用模型变量块。有关更多信息,请参见使用模型块设置模型变体.
函数调用
跨越虚拟子系统边界的函数调用信号。
将函数调用生成器块移动到要转换的子系统中。
请注意
如果转换导出函数子系统,则不需要移动函数调用生成器块。
函数调用的输出。
将函数调用输出更改为数据触发器。
广泛的函数调用端口。
消除函数调用子系统的宽信号。
样品时间
输入模块的采样时间与驱动该输入模块的采样时间不匹配。
插入率转换在适当的地方阻塞。
轮廓尺寸块
合并的导入块。
配置模型以避免合并的import块。看到合并块文档。
固定块
输入到子系统的常量块。
考虑将Constant块移动到子系统中。
公共汽车
进入和退出子系统的总线信号。
为子系统内的块匹配信号名称和总线元素名称。
考虑使用配置参数>诊断>连接>信号标签不匹配诊断。
在总线中重复信号名称。
使总线元素的信号名称唯一。
信号名称在MATLAB中无效®标识符。一个有效的标识符是满足以下条件的字符向量:
名称由字母、数字或下划线组成。
第一个字符是一个字母。
方法返回的值小于或等于该名称的长度
namelengthmax
函数。
将任何无效的信号名称更改为有效的MATLAB标识符。
运行模型参考转换顾问
请注意
作为运行模型引用转换顾问的替代方法,您可以使用万博1manbetxSimulink.SubSystem.convertToModelReference
函数。您可以使用一个转换多个子系统万博1manbetxSimulink.SubSystem.convertToModelReference
命令。
在运行advisor之前,请确保包含要转换的子系统的模型已成功编译。
打开模型并定位您想要转换的子系统。
要提高转换性能,请关闭任何打开的Scope块窗口。
启动模型参考转换顾问。在Simuli万博1manbetxnk编辑器中,右键单击要转换的子系统。选择子系统及模型参考>将子系统转换为>引用模型.
在“模型参考转换顾问”对话框中,查看下面的默认设置输入参数.根据需要修改运行advisor的参数,然后单击应用.
您可以让advisor修复它可以修复的所有转换问题。在检查转换输入参数检查,选择自动修复错误(如果可能).这个选项可以使转换过程更快,但是您不能控制advisor所做的修复。
顾问可以将引用模型的顶级模型的模拟结果与包含子系统的基线模型的结果进行比较。选择转换后的仿真结果核对.详细信息请参见对比转换前后的仿真结果.
提示
advisor为检查提供上下文相关的帮助。在advisor中,右键单击检查(例如检查转换输入参数),然后选择
这是什么?
.点击转换.
解决顾问报告的任何问题。对于某些问题,顾问提供了一个修复按钮来解决问题。
解决每个问题后,单击继续直到所有的支票都通过。
对比转换前后的仿真结果
顾问可以比较转换前后的模拟结果。
在转换子系统之前:
在模型参考转换顾问中输入参数中,选择用一个模型块替换子系统和转换后的仿真结果核对.
设置这些选项:
停止时间
绝对的宽容
相对宽容
为感兴趣的子系统输出信号启用信号记录。
设置模型块仿真方式选项,将其转换为与原始模型相同的模拟模式。
转换模型之后,选择查看比较结果.结果显示在仿真数据检查器中。绿色复选标记表示基线模型和具有参考模型的模型的仿真结果相同。
有关模拟数据检查器的详细信息,请参见查看和分析仿真结果.
转换的结果
advisor成功运行所有检查后,它:
从子系统创建一个引用模型
创建所引用模型所需的总线对象、信号对象和可调参数
添加一个模型块(默认情况下)
当自动修复程序通过添加端口修改模型块接口时,将模型块插入包装器子系统中。
创建转换摘要报告
检查转换前后模拟结果的一致性(如果选择了该选项)
顾问将以下元素从原始模型复制到新的引用模型。
配置设置—如果参考模型使用:
如果配置集不是被引用的配置集,顾问将整个配置集复制到被引用的模型。
一个引用的配置集,那么引用模型和被引用模型都使用相同的引用配置集。
变量-顾问只将子系统在原始模型中使用的模型工作空间变量复制到引用模型的模型工作空间中。
如果包含子系统的模型使用数据字典,那么被引用的模型使用相同的数据字典。
要求链接创建的需求链接万博1manbetx仿真软件需求™软件(例如,需求链接到块和信号)被复制。顾问将需求链接从子系统转移到新的模型块。
转换摘要报告描述它复制的元素。
转换的报告
中创建一个HTML报告slprj
在执行转换时使用的文件夹。报告总结了转换过程的结果,包括顾问执行的修复的结果。
还原转换结果
如果您对转换结果不满意,您可以将模型恢复到初始状态。使用以下方法之一:
在转换过程中的任何时候,选择文件>负载还原点.
成功运行后完成转换检查,选择点击这里恢复原来的模型.
将引用模型集成到父模型中
完成转换后,根据需要更新模型以满足建模需求。
添加一个模型块,如果必要的话
如果在转换之前,你清除了用模型块替换子系统的内容选项,然后手动向父模型添加一个Model块。
删除子系统块。
将新的Model块复制到子系统所在的模型中。
请注意
如果启用用模型块替换子系统的内容选项时,advisor操作取决于您是否使用自动修复选项。
如果您使用自动修复,那么advisor将替换子系统用a挡住模型阻塞,除非自动修复改变输入或输出端口。如果端口更改,那么advisor将子系统的内容包含在模型块中插入的子系统块。
如果不使用自动修复,则建议器将替换子系统用a挡住模型块。
在引用模型中检查根导入块
如果您希望使用外部数据模拟模型,请检查新引用模型中的根import块是否具有适当的插入数据参数设置。的文档插入数据的参数。轮廓尺寸块。
转换每个变体子系统
如果您转换一个活动的变体子系统,那么将每个变体子系统转换为引用模型。将每个变体子系统转换为引用模型产生的结果与使用不同的子系统块。