Simulin金宝appk上的Guy

金宝appSimulink &基于模型的设计

条件执行

我们都知道,在Simulink中总是有金宝app多种方法来实现一个功能。在选择实现时,我经常犹豫的一种情况是有条件执行。

我将分享一些我通常考虑的可能的选择,并想知道你是如何选择的。

启用子系统

也许是因为这是我很久以前开始使用Simulink时学到的第一个方法,但我喜欢金宝app启用子系统

启用子系统

使用这种方法,您可以使用Simulink块为每个子系统金宝app生成一个逻辑信号。当您有少量互斥系统且激活逻辑相对简单时,此方法非常有用。

交换机和多端口交换机

正如Seth在a中所解释的以前的文章,开关而且多端口切换块可以用来实现条件执行。

如果您启用有条件的分支执行优化时,Simulink只执金宝app行计算控制输入所需的块和控制输入选择的数据输入。

开关

我通常只在需要在两个非常简单的选项之间切换时才使用这种方法,这两个选项由几个直通无状态块组成。

行动子系统

If动作子系统而且开关案例动作子系统都是专门为建模而设计的if - else而且切换实例控制流。

在这种方法中,您可以在If-Else或Switch-Case块的对话框中定义条件。

If动作子系统

使用这种方法需要注意的一点是,由If或Switch Case块驱动的Action子系统中的所有块必须以与驱动块相同的速率运行。

Stateflow和Simu金宝applink函数

对于复杂的激活逻辑,我建议使用Stateflow。在图表中,您可以在Simulink Functions中有条件地执行算法。金宝app

金宝appstatflow内的Simulink函数

我喜欢使用这种技术,特别是当从图表中的多个位置调用Simulink函数时。金宝app

人员流程和函数调用子系统

我必须承认,当我在Stateflow Simulink函数中放置一个大型或重要的算法时,我感觉好像我在隐藏它。金宝app这就是为什么有时我更喜欢从图表中生成函数调用。

状态流和函数调用子系统

员工流程,枚举和开关案件行动子系统

有一种方法可以明显地表明,一次只有一个子系统处于活动状态,那就是从状态流图生成枚举类型,并在Switch-Case构造中使用它。

状态流和函数调用子系统

结论

所有这些方法都有优点和缺点。我认为阅读和理解文档以选择适合您的用例是很重要的。

如果有疑问,那就提高可读性。试着选择一个您认为可以尽可能容易地理解您的模型功能的方法。

现在轮到你了

我很想知道你在选择一个人的时候有什么标准。

请留下一个这里的评论

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。