Stateflow#2:状态机的建模

问题1:什么是状态机?

 

问题2:如何创建一个状态机?

 

问题3:状态机有哪些动作?

 

问题4:状态机转移的语法?

 

问题5:内嵌流程图?

 

一、什么是状态机?

仅存在有限个模式的系统

仅仅在几个预定义的模式中切换

如下图所示

Stateflow#2:状态机的建模_第1张图片

Stateflow#2:状态机的建模_第2张图片

 

二、如何创建一个状态机,状态机有哪些动作、语法?

这个问题之前,我们应该想一想什么时候才需要创建一个状态机。主要有两种情况:

1、实现的系统中存在有限个基于事件驱动或者条件驱动逻辑的行为方式;

2、系统将来的行为表现依赖于当前的操作模式,例如模型的重新激活或者管理系统的行为.

创建一个状态机的步骤:

1、在simulink中添加Chart,进入Chart后在左侧菜单栏左键点击State,拖至界面即可

2、添加标签

3、添加转移

 

状态标签语法规则

(1)通常一个状态标签由以下部分组成:状态名和状态动作(关键词决定了该状态动作何时执行)

(2)状态名必须给定,动作为可选项
(3)关键词可以为 entryexit 或者 during


使用状态动作可以使得模型更直观,如下图所示:
 

Stateflow#2:状态机的建模_第3张图片

 

初始化阶段激活Chart
容许仿真开始时chart运行,从而避免模型不必要的初始化逻辑

 

转移标签的语法

通常一个转移标签由以下部件组成:
(1) 注释
(2) 一个事件
(3)在 []中输入判断条件
(4) 在{}中输入满足条件后执行的动作
(5)在 /后输入转移的动作
所有的部件是可选的,但是一定要按如下顺序表达

Stateflow#2:状态机的建模_第4张图片

 

什么是转移动作?

当两个状态之间的一个转移发生时,才执行转移动作

Stateflow#2:状态机的建模_第5张图片

 

 

动作语句由如下部分组成:
对变量操作
(1) 数学操作符
(2)逻辑操作符
调用函数
(1)C MATH库函数
(2)其它标准 C 库函数
(3)用户写的C 函数
(4)MATLAB® 内建函数
(5)M文件函数
事件广播
(1)利用触发信号来驱动外部单元的执行
(2)在新的事件到来时中断图表,重新建立转移

Stateflow#2:状态机的建模_第6张图片

 

Stateflow#2:状态机的建模_第7张图片

 

内嵌流程图

Stateflow#2:状态机的建模_第8张图片

 

Stateflow#2:状态机的建模_第9张图片

 

Stateflow#2:状态机的建模_第10张图片

 

 

 

你可能感兴趣的:(建模)