你可以直接或间接地(通过其他块)将一个块的输出连接到它的输入,从而创建一个循环。循环非常有用。例如,你可以用循环来图解地解微分方程(见连续系统模型)或模型反馈控制系统。然而,也可以创建无法模拟的循环。常见的无效循环类型包括:
有关触发子系统和函数调用子系统的示例,请参见金宝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模型编辑器).
组织良好和文档化的模型更容易阅读和理解。信号标签和模型注释可以帮助描述模型中发生的事情。有关更多信息,请参见信号名称及标签和使用注释和注释描述模型.
如果您的几个模型使用相同的块,您可以保存这些块以方便重用。例如,可以将块集合保存在自定义库中。然后,在构建新模型时,可以从库中复制这些块。
一般来说,当建立一个模型时,首先在纸上设计它,然后用电脑建立它。然后,当您开始将这些块放在一个模型中时,在添加连接它们的线之前,将这些块添加到模型窗口中。通过这种方式,可以减少打开块库的频率。