编译 Simulink 模型的一般注意事项 您所在的位置:网站首页 matlab常见错误原因 编译 Simulink 模型的一般注意事项

编译 Simulink 模型的一般注意事项

2023-05-26 11:49| 来源: 网络整理| 查看: 265

编译 Simulink 模型的一般注意事项避免无效循环

您可以将模块的输出直接或间接(即通过其他模块)连接到其输入,从而创建一个循环。循环可能非常有用。例如,您可以使用循环构建模块图来求解微分方程(请参阅连续系统建模),或对反馈控制系统建模。但是,创建的循环也可能无法仿真。常见的无效循环的类型包括:

创建无效函数调用连接或尝试修改函数调用的输入/输出参数的循环(有关函数调用子系统的描述,请参阅使用函数调用子系统)

自触发子系统和包含非锁存触发子系统的循环(请参阅 Simulink® 文档中的使用触发子系统以了解触发子系统的描述,参阅 Simulink 参考文档中的 Inport 了解锁存输入的描述)

包含执行子系统的循环

有关触发子系统和函数调用子系统的示例,请参阅 Simulink 子系统语义。

您可能会发现研究这些示例很有用,可以避免在您自己的模型中创建无效循环。

检测无效循环

要检测模型是否包含无效循环,请从工具条的建模选项卡中选择更新模型。如果模型包含无效循环,则会突出显示无效循环。以下模型中显示了此功能。

并在诊断查看器中显示错误消息。

隐藏文件

如果 MATLAB® 路径上有两个具有相同名称的模型文件(例如 mylibrary.slx),则会加载处于路径上较高位置的文件,而处于路径上较低位置的文件被“隐藏”。

提示

为避免出现隐藏文件问题,请启用 Simulink 预设项不要加载在 MATLAB 路径中被遮蔽的模型。请参阅Do not load models that are shadowed on the MATLAB path。

Simulink 用于查找模型文件的规则与 MATLAB 软件使用的规则类似。请参阅什么是 MATLAB 搜索路径?。但是,在如何处理 Simulink 模块图和如何处理 MATLAB 函数之间存在重大差异:已加载的模块图优先于任何未加载的模块图,无论其在 MATLAB 路径上的位置如何。这样处理是出于性能原因,是 Simulink 软件的增量加载方法的一环。

加载的模块图优先于任何其他模块图具有重要意义,特别是这样便可以直接加载模块图而不用显示相应的 Simulink 窗口。

确保加载了正确的模块图

使用库和引用模型时,可以加载模块图而不显示其窗口。如果 MATLAB 路径或当前 MATLAB 文件夹在模块图已加载到内存中时发生更改,则这些模块图可能会干扰其他同名文件的使用。

例如,打开一个具有名为 mylib 的库的模型,更改到另一个文件夹,然后打开另一个模型,而该模型具有同样名为 mylib 的库。运行第一个模型时,它会使用与第二个模型关联的库。

这可能会导致一些问题,包括:

仿真错误

模块上出现“未解析的链接”图标(作为库链接)

错误的结果

检测和修复问题

为避免出现隐藏文件问题,可以启用 Simulink 预设项不要加载在 MATLAB 路径中被遮蔽的模型。请参阅Do not load models that are shadowed on the MATLAB path。

更新模块图时,Simulink 软件会检查其文件在 MATLAB 路径上的位置,如果检测到存在另一个同名文件且在 MATLAB 路径上的位置更高,则会发出警告。警告如下:

The file containing block diagram 'mylibrary' is shadowed by a file of the same name higher on the MATLAB path.这可能表示误用了另一个名为 mylibrary.slx 的文件。要查看哪个名为 mylibrary.slx 的文件已加载到内存中,请输入:

which mylibrary C:\work\Model1\mylibrary.slx 要查看 MATLAB 路径上名为 mylibrary 的所有文件,包括 MATLAB 脚本,请输入:

which -all mylibrary C:\work\Model1\mylibrary.slx C:\work\Model2\mylibrary.slx % Shadowed 要关闭名为 mylibrary 的模块图并让 Simulink 软件加载 MATLAB 路径上位置最高的文件,请输入:close_system('mylibrary')模型编译提示

以下是对您可能有用的一些模型编译提示:

内存问题

通常,增加内存将提高性能。

使用层次结构

如果模型较为复杂,在模型中增加子系统层次通常会有好处。对模块分组可以简化模型的顶层,从而更易于阅读和理解模型。有关详细信息,请参阅创建子系统。模型浏览器提供了有关复杂模型的有用信息(请参阅 Simulink 编辑器)。

清理模型

组织良好且提供文档说明的模型更易于阅读和理解。信号标签和模型注释可以帮助说明模型中发生的情况。有关详细信息,请参阅信号名称和标签和使用说明和注释描述模型。

建模策略

如果您的几个模型使用相同的模块,您可以保存这些模块以便于重用。例如,您可以将模块集合保存在自定义库中。然后,当您构建新模型时,您可以从该库中复制这些模块。

通常,在构建模型时,可首先在纸张上进行设计,然后再使用计算机进行构建。当您开始使用模块搭建模型时,请先将模块添加到模型窗口,再添加连接它们的线。这样,您可以减少需要打开模块库的频率。

相关示例连续系统建模最佳形式的数学模型简易方程建模对微分代数方程建模 详细信息基于组件的建模规范


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有