主要内容

建造时的一般注意事项金宝app模型

避免无效循环

你可以直接或间接地(通过其他块)将一个块的输出连接到它的输入,从而创建一个循环。循环非常有用。例如,你可以用循环来图解地解微分方程(见连续系统模型)或模型反馈控制系统。然而,也可以创建无法模拟的循环。常见的无效循环类型包括:

  • 创建无效函数调用连接或试图修改函数调用的输入/输出参数的循环(参见使用函数调用子系统用于函数调用子系统的描述)

  • 自触发子系统和包含非锁存触发子系统的循环(参见使用触发子系统在Using Simuli金宝appnk®描述被触发子系统的文档轮廓尺寸在Simuli金宝appnk参考文档中对锁存输入的描述)

  • 包含动作子系统的循环

有关触发子系统和函数调用子系统的示例,请参见金宝app仿真软件子系统的语义

您可能会发现,学习这些示例有助于避免在您自己的模型中创建无效循环。

检测无效循环

要检测模型是否包含无效循环,请选择更新模型建模工具条的选项卡。如果模型包含无效循环,则会突出显示无效循环。下面的模型说明了这一点开放

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

跟踪文件

如果有两个具有相同名称的Model文件(例如:mylibrary.slx)在MATLAB上®路径,路径上较高的那个被加载,路径上较低的那个被称为“shadow”。

提示

为了避免阴影文件的问题,打开Simulink首选项金宝app不加载被阴影笼罩在MATLAB路径上的模型.看到不加载被阴影笼罩在MATLAB路径上的模型

Simulink软件金宝app查找Model文件的规则与MATLAB软件相似。看到什么是MATLAB搜索路径?.然而,在Simulink块图和MATLAB函数的处理方式之间有一个重要的区别:加载的块图优先于任何未加载的块金宝app图,不管它在MATLAB路径上的位置如何。这样做是为了提高性能,这是Simulink软件增量加载方法的一部分。金宝app

加载的框图比其他框图的优先级具有重要的含义,特别是当加载框图时,相应的Simulink窗口是不可见的。金宝app

确保加载了正确的框图

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

例如,使用调用的库打开模型mylib,切换到另一个文件夹,然后打开另一个模型,其中的库也被调用mylib.当您运行第一个模型时,它将使用与第二个模型关联的库。

这可能会导致以下问题:

  • 模拟错误

  • 库链接块上的“未解决链接”图标

  • 错误的结果

检测和修复问题

为了帮助避免阴影文件的问题,您可以打开Simulink首选项金宝app不加载被阴影笼罩在MATLAB路径上的模型.看到不加载被阴影笼罩在MATLAB路径上的模型

当更新一个框图时,Simulink软件检查它的文件在MATLAB路径上金宝app的位置,如果它检测到另一个同名的文件存在,并且在MATLAB路径上更高的位置,就会发出警告。警告:

包含框图'mylibrary'的文件被MATLAB路径上更高的同名文件所遮蔽。
这可能表明调用了错误的文件mylibrary.slx正在被使用。查看调用了哪个文件mylibrary.slx载入到内存中,输入:

这mylibrary C: \ \ Model1 \ mylibrary.slx工作吗
查看所有被调用的文件mylibrary在MATLAB路径上,包括MATLAB脚本,输入:

C:\work\Model1\mylibrary。基金C: \ \ Model2 \ mylibrary工作。基金%阴影
关闭被调用的框图mylibrary并让Simulink软件金宝app加载MATLAB路径上最高的文件,输入:
close_system(“mylibrary”)

建模技巧

以下是一些你可能会发现有用的模型构建提示:

  • 内存问题

    一般来说,更多的内存会提高性能。

  • 使用层次结构

    更复杂的模型通常受益于向模型中添加子系统的层次结构。分组块简化了模型的顶层,可以更容易地阅读和理解模型。有关更多信息,请参见创建子系统.模型浏览器提供了关于复杂模型的有用信息(参见金宝app模型编辑器).

  • 清理模型

    组织良好和文档化的模型更容易阅读和理解。信号标签和模型注释可以帮助描述模型中发生的事情。有关更多信息,请参见信号名称及标签使用注释和注释描述模型

  • 建模策略

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

    一般来说,当建立一个模型时,首先在纸上设计它,然后用电脑建立它。然后,当您开始将这些块放在一个模型中时,在添加连接它们的线之前,将这些块添加到模型窗口中。通过这种方式,可以减少打开块库的频率。

相关的例子

更多关于