动态仿真模块子系统的状态
通过使用Simulink®状态流中的子系统®状态时,您可以建模混合动态系统或在周期和连续时间动态之间切换的系统。在您的状态流图中,您可以使用基于Simulink的状态,结合使用转换的切换逻辑对周期或连续动态系统建模。您可以在每个基于Simulink的状态中访问图表的输入和输出。MATLAB中的独立状态流图不支持基于Simulink的状态®.
在基于Simulink的状态之间切换时,要初始化Simulink块,请使用Stateflow文本符号或Simulink状态读取器和状态写入器块。
要创建基于Simulink的链接状态,可以使用库来保存动作子系统。当您将操作子系统从库模型复制到Stateflow图中时,它将显示为基于Simulink的链接状态。当您更新库块时,更改将反映在包含该块的所有状态流图中。
使用基于Simulink的状态意味着您不必在Stateflow中使用复杂的文本语法来建模混合系统。
什么时候使用动态仿真模块基于州
使用基于Simulink的状态:
您想要建模混合动态系统,包括连续或周期动态。
系统动态的结构在不同的操作模式之间有很大的变化,例如,建模PID控制器。
对于间歇性调用逻辑的系统,请使用Simulink函数。
当Simulink算法的结构基本不变,但某些增益或参数在不同模型之间切换时,使用Stateflow之外的Simulink逻辑。增益调度就是这类算法的一个例子。看到在Simulink中建模增益计划控制系统(仿真软件控制设计).
基于Simulink的撑杆跳运动员状态建模
这个状态流图通过使用基于Simulink的状态来模拟一个人在撑杆跳各个阶段的运动。
第一个阶段是跳马运动员的进场跑,在基于Simulink的状态下建模Run_up
.第二阶段,跳马运动员插杆起跳,该过程采用基于Simulink的状态建模Take_off
.最后一个阶段发生在跳马运动员越过杆子并释放撑杆时,这是由基于Simulink的状态建模的飞
.
美国Run_up
而且飞
用笛卡尔坐标更容易建模。国家Take_off
用极坐标更容易建模。要从一个坐标系切换到另一个坐标系,可以使用Simulink函数InitTakeOff
而且InitFly
.
模拟撑杆跳运动员的入路
图表中的默认状态PoleVaulter
是Run_up
.这种状态模拟了撑杆跳运动员沿着地面向起跳方向移动的过程。撑杆跳的起跳高度是零下10度-轴,并趋于0。撑杆跳运动员在地面上移动的过程中,撑杆跳运动员在xy平面上的位置不断变化,但跑步的状态保持不变。在这个模型中,积分器块位置
而且速度
在Simulink函数中是状态读取器的状态所有者块吗InitTakeOff
.该子系统输出撑杆跳运动员的笛卡尔坐标。
将笛卡尔坐标转换为极坐标
的过渡Run_up
来Take_off
发生时撑杆跳运动员的位置沿设在,Run_up.p (1)
,变得大于-4。在过渡期间InitTakeOff
初始化后,State Reader块连接到它的所有者块,并执行函数。这个函数将笛卡尔坐标从位置
而且速度
极坐标,r
,θ
,rdot
,theta_dot
.这些坐标作为状态写入器块输出,连接到状态中的所有者块Take_off
.仿真软件的功能InitTakeOff
包含这个逻辑:
撑杆跳运动员起跳的模型
当撑杆跳运动员的位置沿着设在,Run_up.p (1)
,会大于基于Simulink的状态-4Take_off
变为活动状态。这种状态模拟撑杆跳运动员在起跳阶段的动作。该子系统输出撑杆跳运动员的笛卡尔坐标。
将极坐标转换为笛卡尔坐标
的过渡Take_off
来飞
撑杆跳运动员的角度,θ
,变成小于.在过渡期间,InitFly
初始化后,State Reader块连接到它的所有者块,并执行函数。这个函数转换极坐标r
,θ
,rdot
,theta_dot
笛卡尔坐标,xy_integ
而且xydot
.这些坐标作为状态写入器块输出,连接到状态中的所有者块飞
.仿真软件的功能InitFly
包含这个逻辑:
模拟撑杆跳运动员的自由落体
当撑杆跳运动员的角度,θ
,小于,基于Simulink的状态飞
变为活动状态。这种状态模拟了撑杆跳高运动员在跳高后的动作,撑杆跳高运动员正在落地。撑杆跳运动员在下落过程中,撑杆跳运动员在x-y平面上的位置不断变化,但下落状态保持不变。在该模型中,积分器块xydot和xy_integ是Simulink函数InitFly中状态写入器块的状态所有者块。该子系统输出撑杆跳运动员的笛卡尔坐标。
Record块显示了这个模拟的结果。
限制
不能使用基于Simulink的状态:
摩尔的图表
离散事件图表
高密度脂蛋白编码器
PLC编码器
仿真软件代码检查器
超级一步转换
基于Simulink的状态不支持调试。