在连续时间模型一个弹跳球
这个例子展示了如何配置一个Stateflow®图表,在连续时间模拟一个弹跳球。球不断在空中移动,直到它击中地面,此时发生不连续。结果,球突然改变方向和速度。有关更多信息,请参见连续时间建模Stateflow。
该模型sf_bounce
包含一个图表,在连续时间更新。局部变量的动力学描述自由落下的球的位置和速度。在仿真过程中,模型使用零交点检测来确定当球击中地面。
弹力球的动力学
您可以指定如何自由球落在重力下的位置p和速度v有了这个系统的一阶微分方程。
当p< = 0,球击中地面和反弹。您可以通过更新模型的反弹球的位置和速度:
重置的位置p= 0。
重置速度的负价值就在球撞到地面。
占能源损失,新的速度乘以一个系数分布(-0.8)。
为连续时间模拟配置图
在模型中,BouncingBall图实现了模态逻辑模拟自由落体和离散变化的连续动态与跳跃。在图表属性对话框,这些设置使BouncingBall图表在连续时间模拟:
更新方法是
连续
所以采用连续时间的图表弹力球的动态模拟模型。使讨论二阶导数过零检测所以选择模型®解算器可以准确地确定当球金宝app击中地面。否则,仿真软件模型不能准确地模金宝app拟物理和球似乎降落地面。
定义连续时间变量
BouncingBall图有两个连续时间变量:p
的位置和v
的速度。为每一个变量:
范围是
当地的
。类型是
双
。更新方法是
连续
。
暴露的连续状态图仿真软件模型,BouncingBall图有两个输出变量:金宝appp_out
和v_out
。为每一个变量:
范围是
输出
。类型是
双
。更新方法是
离散
。
表定义了时间导数连续时间变量的隐式:
p_dot
的导数是职位p
。v_dot
随着速度的导数v
。
在Model Explorer,您可以查看连续时间图表中的本地变量和相应的输出。隐式变量导数没有出现在Model Explorer窗格或符号。
自由落体的连续动态模型
BouncingBall图包含一个状态下降
数值是自由落体的微分方程的解。默认的过渡到状态集10米的初始位置和初始速度15米/秒。在操作状态:
定义的位置和速度的导数。
分配球的位置和速度的值输出变量
p_out
和v_out
。
模型离散效应的反弹
的下降
政府自身环这一转换过程模型的不连续反弹作为瞬时模式更改当球突然逆转方向。过渡的条件决定当球击中地面通过检查它的位置p < = 0
和速度v < 0
。如果条件是有效的,条件行动重置当球击中地面的位置和速度。
为什么不检查p = = 0
吗?
球撞到地面时的位置p
就是零。通过放松的条件,你可以增加时的公差模型解算器可以检测位置变化的迹象。金宝app
为什么要检查v < 0
吗?
的第二部分条件帮助维持模型解算器的效率通过最小化零交叉的频率。金宝app没有第二止,条件是真状态转换后,导致连续两个零交叉。
验证图的语义
BouncingBall图表中定义满足设计要求连续时间模拟指南。特别是,图表:
初始化局部变量p, v在缺省转换。
将值赋给衍生品p_dot和v_dot在行动。
写入本地变量p, v在过渡行动。
不包含事件、内心的转变,基于事件的时序逻辑,或改变检测运营商。
查看仿真结果
运行模型后,显示图表的位置和速度范围。位置图表展示预期的反弹格局。