Matlab之State Flow

打开方式

方式一:在命令窗口输入State Flow或者简写sf就能打开,并且会自动打开State Flow 的Library。从左到右分别是图表、真值表、状态转换表、例子、顺序查看,可以加入到Simulink当中。

方式二:从Simulink Library里面添加State Flow 的元件。

Chart元件使用方法

使用基础

最基础的用法就是用来控制Function-Call Subsystem元件的执行,可以右击在Block Parameter里面设置采样时间,由于Chart元件不是simulink自己的,编译的时候要比较长的时间。

点击进去最开始是空的,点击Model Explorer,可以设置数据、信号或者事件,一个chart里面有一个Model Explorer。

周期触发

新建一个事件,起个名字,选择为output to simulink

添加一个default transition出来,按照下面用将刚才的名字写上去。

这样就实现了周期触发Function-Call Subsystem元件的执行,因为这个Chart元件继承了解算器的采样时间,内部并没有什么条件判断,就可以周期触发。

条件触发

先创造一个data,起名字,设置为input。

新建几个节点,按照逻辑链接起来,让input满足条件的时候才会执行事件。

\]里面的是条件 {}里面的是执行语句 可以两个同时存在或者单独存在 ![](https://file.jishuzhan.net/article/1740078291789811713/953e1b798ddcdae4ab190df8f140b7d8.webp) ## Subchart 有时候在chart里面还要弄多几层,那就拖动个state元件过来,右击按下图设置将state元件变成Subchart. ![](https://file.jishuzhan.net/article/1740078291789811713/c4d758d1c948245b9b7683c03288c773.webp) ## 并行状态 并行状态就是两个状态一起执行,在chart里面用两个state元件。举个例子会比较直观很多,有个人,每天赚100元,花80元,剩下多少钱,先用几个基础元件连起来。 ![](https://file.jishuzhan.net/article/1740078291789811713/5830c875d5ac629d046bff6fb17db8ea.webp) 在Model Explorer里面把刚才的默认名字改一改,定个方向,输出值定个初始值。 ![](https://file.jishuzhan.net/article/1740078291789811713/4279099db739aff671785915ead5d58f.webp) 在chart里面拖两个state元件出来,写上内容,把系统赠送的default transition删掉。 ![](https://file.jishuzhan.net/article/1740078291789811713/eb0a3bf9c5bec209706ddeafc34b64a3.webp) 在空白的地方右击decomposition--\>parallel将里面的state都设置成并行。 ![](https://file.jishuzhan.net/article/1740078291789811713/b09c60fb8609c4b746f9196e1bf40039.webp) 虽然说是并行执行,但在启动的时候还是会有个先后的,这里可以调整个顺序。 ![](https://file.jishuzhan.net/article/1740078291789811713/c330da9f352a070fc4f454054f87a4ff.webp) 运行,仿真出财务自由的康庄大道。 ![](https://file.jishuzhan.net/article/1740078291789811713/dfedf3558bbac09995b86ff836168fb9.webp) ## Junction使用方法 是一个节点,让整个图的架构更加整齐,做到横平竖直,不用太多交错或者曲线。需要注意的是如果有多条支路的话就会有标号,由于优先走小标号的支路,所以小标号的支路一定要写上条件,不然就永远走那条小标号的支路了。 ![](https://file.jishuzhan.net/article/1740078291789811713/5f19da586783f577c0c43655cf0e3833.webp) ## en du 我们经常会在别的模板里面看到en,du:代表从状态激活的第一个时刻开始执行,没有的话就从第二个时刻开始计算。 ![](https://file.jishuzhan.net/article/1740078291789811713/9ea412e9a10cfbf8c875137e948d56eb.webp)

相关推荐
rit84324994 小时前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
我找到地球的支点啦4 小时前
通信扩展——扩频技术(超级详细,附带Matlab代码)
开发语言·matlab
Dev7z16 小时前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
fengfuyao98518 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心18 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab
rit843249921 小时前
基于MATLAB的环境障碍模型构建与蚁群算法路径规划实现
开发语言·算法·matlab
hoiii18721 小时前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab
yong99901 天前
MATLAB面波频散曲线反演程序
开发语言·算法·matlab
yugi9878381 天前
基于MATLAB的一键式EMD、EEMD、CEEMD和SSA信号去噪实现
开发语言·matlab·信号去噪
youcans_1 天前
【STM32-MBD】(15)Simulink 模型开发之三相互补 PWM
stm32·单片机·嵌入式硬件·matlab·foc