条件执行
我们都知道,在Simulink中总是有金宝app多种方法来实现一个功能。在选择实现时,我经常犹豫的一种情况是有条件执行。
我将分享一些我通常考虑的可能的选择,并想知道你是如何选择的。
启用子系统
也许是因为这是我很久以前开始使用Simulink时学到的第一个方法,但我喜欢金宝app启用子系统.
使用这种方法,您可以使用Simulink块为每个子系统金宝app生成一个逻辑信号。当您有少量互斥系统且激活逻辑相对简单时,此方法非常有用。
交换机和多端口交换机
正如Seth在a中所解释的以前的文章,开关而且多端口切换块可以用来实现条件执行。
如果您启用有条件的分支执行优化时,Simulink只执金宝app行计算控制输入所需的块和控制输入选择的数据输入。
我通常只在需要在两个非常简单的选项之间切换时才使用这种方法,这两个选项由几个直通无状态块组成。
行动子系统
If动作子系统而且开关案例动作子系统都是专门为建模而设计的if - else而且切换实例控制流。
在这种方法中,您可以在If-Else或Switch-Case块的对话框中定义条件。
使用这种方法需要注意的一点是,由If或Switch Case块驱动的Action子系统中的所有块必须以与驱动块相同的速率运行。
Stateflow和Simu金宝applink函数
对于复杂的激活逻辑,我建议使用Stateflow。在图表中,您可以在Simulink Functions中有条件地执行算法。金宝app
我喜欢使用这种技术,特别是当从图表中的多个位置调用Simulink函数时。金宝app
人员流程和函数调用子系统
我必须承认,当我在Stateflow Simulink函数中放置一个大型或重要的算法时,我感觉好像我在隐藏它。金宝app这就是为什么有时我更喜欢从图表中生成函数调用。
员工流程,枚举和开关案件行动子系统
有一种方法可以明显地表明,一次只有一个子系统处于活动状态,那就是从状态流图生成枚举类型,并在Switch-Case构造中使用它。
结论
所有这些方法都有优点和缺点。我认为阅读和理解文档以选择适合您的用例是很重要的。
如果有疑问,那就提高可读性。试着选择一个您认为可以尽可能容易地理解您的模型功能的方法。
现在轮到你了
我很想知道你在选择一个人的时候有什么标准。
请留下一个这里的评论.
- 类别:
- 建模、
- 信号,
- 金宝app仿真软件提示,
- Stateflow
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。