Simulin金宝appk上的Guy

金宝appSimulink &基于模型的设计

金宝app作为状态流状态的Simulink子系统

今天我想强调一个新功能,使statflow中的连续时间建模更清晰更有力:金宝app作为状态的Simulink子系统

背景

如果您不知道,对于许多发行版,可以在statflow中进行连续时间建模。

对于需要对具有离散模式或离散事件的植物建模的模拟,在statflow中对植物建模是很方便的。要查看这样的例子,我建议查看弹力球,或牛顿Craddle的例子。

根据我收到的技术支持模型,当用户需要对具有离散模式的连续工厂建模时,他们通常会使金宝app用Simulink块对连续方程建模,并在Stateflow中实现模式切换逻辑。金宝app一个例子就是R2017a中的离合器示例,是这样的:

R2017a中的离合器示例

如果您曾经尝试建模这样的系统,您很可能会在某个时候遇到下面这样的错误。原因是Stateflow逻辑需要连续系统的输出,而连续系统由Stateflow图控制,从而创建了一个循环。

数据依赖违反

正如您将在下面的示例中看到的,使用Simulink子系统作为状态,我们现在能够在Statefl金宝appow中使用块建模的连续算法,避免所有这些数据依赖的挑战

金宝app作为状态的Simulink子系统

为了演示这个功能,我决定在盘子上建模一个上下移动的盒子。当板块运动缓慢时,盒子和板块一起运动。如果盘子移动得很快,盒子可能会离开盘子,在空中自由下落。

在第一种情况下,系统动力学可以建模为:

盒子和盘子一起

在第二种情况下,看起来是这样的:

板上箱数

为了在statflow中包含这两个子系统,我添加了两个Simulink State,并将上面所示的子系统粘贴到每金宝app个Simulink State中。子系统的import和Outport块将自动成为状态流程图的输入和输出。

金宝appSimulink子系统为状态

然后我需要命名每个Integrator块的状态。这些名称将在下一步切换模式时用于传输状态。

命名的州

完成此操作后,我可以定义在这两种模式之间切换的逻辑。

当加速度在负方向上大于重力时,箱子就会开始飞行。在相反的方向上,如果盒子下落,它的位置变得更小或等于盘子,它降落并开始再次与盘子一起移动。为了定义这些转换,我可以使用图表的输入和输出,以及如上所述显式命名的状态。

每次切换发生时,我们都会转移状态,以便激活子系统中的Integrator块得到初始化,子系统中的Integrator块的最后一个值被停用。

最后的图表

就是这样,就这么简单!如果没有Simulink金宝app子系统作为状态,建模这个系统将花费更多的块和线路。

我现在可以用PID控制器来控制盘子的运动。

最终的模型

如果我用一个高频率的正弦运动,结果显示盒子在板上跳跃:

最终结果

现在轮到你了

为了了解作为状态的Si金宝appmulink子系统如何影响建模语义,我建议比较R2017a而且R2017b.这应该清楚地表明该特性如何简化语义。

试一试,并在下面的评论中告诉我们你的想法。

|

评论

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