simulink Stateflow使用

1.stateflow简介

stateflow是simulink中用来搭建有限状态机的模块。
有限状态机:系统在符合某些条件时,从一种状态转变到另外一种状态。
在这里插入图片描述

stateflow的主要元素包括:状态(state)、条件(condition)、数据(data)、事件(event)、动作(action)
步骤:

1.在Libaray中找到stateflow,打开Model Exploer,添加data和event

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.设置状态

状态名称+状态动作,如:
On
entry:speed=1

3.状态迁移关系设置

在这里插入图片描述
如:在这里插入图片描述

注:1.由于状态和迁移过程中均能执行某一动作,因此常见省略状态;2.junction处理状态迁移中的迁移信号的分离和汇合。

2.基于stateflow的逻辑控制器

图为每隔20个周期产生一次do_control事件(Δt=20*step_size),将do_control事件设置为Output,i的初值设置为1;
在这里插入图片描述
注意设置stateflow的采样周期。方法一:discrete,sample time=0.001s;
方法二:将simulink设置为fixed step模式,仿真步长设置为0.001s,然后选择inherited;如果有to workspace,使输出采样周期为0.001s(但是仿真特别慢),或者添加两个to workspace 并将其设置为不同的采样周期(不知为何,这样做仿真速度离奇地快了起来,所以这算是一个bug吧)
在这里插入图片描述

利用输出事件控制定时逻辑,添加subsystem,并在其中添加一个trigger,trigger type选择function call
在这里插入图片描述

function  level= fcn(t)%%忽略t
persistent k;
if isempty(k)
    k=0;
end
if k==0
    k=1;
else
    k=0;
end
level=k;
end

level 打印结果如图
在这里插入图片描述

参考文献:

https://wenku.baidu.com/view/378fd13c463610661ed9ad51f01dc281e53a56ee.html?rec_flag=default&fr=Recommend_RelativeDoc-110307,80324,80166,80139,80163,90232-search_rec_append-a3fcbbca132de2bd960590c69ec3d5bbfd0adaa1&sxts=1656581129822

猜你喜欢

转载自blog.csdn.net/weixin_44119391/article/details/125561030