您可以直接或间接地连接一个块的输出。,通过其他块)发送到它的输入,从而创建一个循环。循环可能非常有用。例如,您可以使用循环以图表的方式解决微分方程(参见连续系统模型)或模型反馈控制系统。但是,也可以创建无法模拟的循环。常见的无效循环包括:
Ports &子系统库中的子系统示例块库包含了一些模型,这些模型演示了涉及触发子系统和函数调用子系统的有效和无效循环的示例。无效循环的例子包括以下模型:
万博1manbetx模型/ Ports&Subsystems / sl_subsys_semantics /子系统/ sl_subsys_trigerr1触发
(sl_subsys_trigerr1
)
万博1manbetx模型/ Ports&Subsystems / sl_subsys_semantics /子系统/ sl_subsys_trigerr2触发
(sl_subsys_trigerr2
)
万博1manbetx模型/ Ports&Subsystems / sl_subsys_semantics / / sl_subsys_fcncallerr3函数调用系统
(sl_subsys_fcncallerr3
)
您可能会发现,研究这些示例有助于避免在您自己的模型中创建无效的循环。
若要检测模型是否包含无效循环,请选择更新图从模型的模拟菜单。如果模型包含无效循环,则将突出显示无效循环。下面的模型演示了这一点(开放),
并在诊断查看器中显示错误消息。
如果有两个同名的模型文件(例如:mylibrary.slx
)在MATLAB上®路径,路径上较高的一个被加载,路径上较低的一个被称为“阴影”。
要帮助避免隐藏文件的问题,请打开Simulink首选项万博1manbetx不加载在MATLAB路径上隐藏的模型。看到不加载在MATLAB路径上隐藏的模型。
Simulink软件万博1manbetx查找模型文件的规则与MATLAB软件相似。看到MATLAB的搜索路径是什么?(MATLAB)在MATLAB文档中。然而,在Simulink框图和MATLAB函数的处理方式上有一个重要的区别:加载的框图优先于任何卸载的框图,万博1manbetx而不管它在MATLAB路径上的位置如何。这样做是出于性能考虑,是Simulink软件增量加载方法的一部分。万博1manbetx
一个已加载的框图优先于其他任何框图可能具有重要的含义,特别是当一个框图可以在不可见相应的Simulink窗口的情况下加载时。万博1manbetx
当使用库和引用模型时,您可以加载一个框图而不显示它的窗口。如果程序框图在内存中,而MATLAB路径或当前MATLAB文件夹发生了更改,那么这些程序框图可能会干扰其他同名文件的使用。
例如,用调用的库打开一个模型mylib
,更改到另一个文件夹,然后打开另一个模型,库也被调用mylib
。当您运行第一个模型时,它将使用与第二个模型相关联的库。
这可能会导致以下问题:
模拟错误
库链接块上的“未解析链接”图标
错误的结果
为了帮助避免隐藏文件的问题,您可以打开Simulink首选项万博1manbetx不加载在MATLAB路径上隐藏的模型。看到不加载在MATLAB路径上隐藏的模型。
当更新框图时,Simulink软件会检查它的文件在MATLAB路径上的万博1manbetx位置,如果它检测到另一个同名的文件存在并且在MATLAB路径上的更高位置,它会发出警告。警告:
包含框图“mylibrary”的文件被MATLAB路径上更高处的同名文件遮蔽。
mylibrary.slx
正在被使用。查看调用了哪个文件mylibrary.slx
加载到内存中,进入:
这mylibrary C: \ \ Model1 \ mylibrary.slx工作吗
mylibrary
其中包括MATLAB脚本,请输入:
所有的mylibrary C: work\Model1\mylibrary。基金C: \ \ Model2 \ mylibrary工作。基金%阴影
mylibrary
并让Simulink软件万博1manbetx加载MATLAB路径中最高的文件,输入:close_system(“mylibrary”)
一般来说,更多的内存会提高性能。
更复杂的模型通常得益于向模型中添加子系统的层次结构。分组块简化了模型的顶层,使模型更容易阅读和理解。有关更多信息,请参见创建一个子系统。模型浏览器提供了关于复杂模型的有用信息(参见使用模型浏览器浏览模型层次结构)。
良好组织和文档化的模型更容易阅读和理解。信号标签和模型注释可以帮助描述模型中正在发生的事情。有关更多信息,请参见信号名称和标签和使用注释描述模型。
如果您的几个模型倾向于使用相同的块,您可能会发现在一个模型中保存这些块更容易。然后,当您构建新的模型时,只需打开这个模型并从中复制常用的块。您可以通过将一组块放入系统并保存系统来创建块库。然后,您可以通过在MATLAB命令窗口中键入系统名称来访问系统。
通常,在构建模型时,首先在纸上设计,然后使用计算机构建。然后,当您开始将这些块放在一个模型中,在添加连接它们的线之前将这些块添加到模型窗口中。这样,您就可以减少打开块库的频率。