实例讲解Stateflow使用方法详细步骤

文摘   2024-10-30 21:45   湖北  
Stateflow 是一个基于有限状态机流程图来构建组合和时序逻辑决策模型并进行仿真的环境。它可以将图形表示和表格表示(包括状态转换图、流程图、状态转换表真值表)结合在一起,针对系统对事件、基于时间的条件以及外部输入信号反应方式进行建模。Stateflow 可用于设计有关监控、任务调度以及故障管理应用程序的逻辑。Stateflow 包括状态图动画及静态和运行时检查,可以在实施前测试设计的一致性和完整性。Stateflow可以直接嵌入到imulink模型中,并且在仿真的初始化阶段,Simulink会把Stateflow绘制的逻辑图形通过编译程序转换成C语言,使二者有机地结合在一起。 Stateflow可以在Simulink Extra模块库中找到。本文以空调压缩机转速控制为例说明Stateflow的使用方法,希望能给相关技术人员带来一些参考和帮助。

一、空调压缩机转速控制策略

1、输入信号1:空调压缩机使能信号EASEn_Cmd

输入信号2:蒸发器温度EvpTemp

2、输出信号:空调压缩机转速指令EASTargSpd_Req

3、控制策略

空调使能后,发送压缩机转速指令:2700rpm;

当蒸发器温度>8℃时,发送压缩机转速指令:2700rpm;

当蒸发器温度≤8℃时,发送压缩机转速指令:2000rpm

当蒸发器温度≤ 3℃时,发送压缩机转速指令:1500rpm

当蒸发器温度≤1℃时,发送压缩机转速指令:0rpm

滞回温度 3℃,

即 3℃以下 1500rpm 时,升高到≥6℃时,转速指令:2000rpm

8℃以下 2000rpm 时,升高到≥11℃时,转速指令:2700rpm

空调停止使能后,发送压缩机转速指令:0rpm

二、启动Simulink,新建Simulink模型

1、打开Matlab,我使用的是Matlab2022b,在菜单栏选择主页-Simulink,启动Simulink

2、在弹出的Simulink起始页窗口中,点击空白模型,新建空白Simulink模型

三、新建输入输出信号及Stateflow模块

1、在新建Simulink窗口中,菜单栏选择仿真-库浏览器,打开模块库

2、在模块库中找到Stateflow

3、拖动Chart图标至模型空白处,新建一个Stateflow模块

4、在模块库选择Simulink-Commonly Used Blocks,找到In1输入信号图标,拖动至模型空白处,同样可以再拖动一个In1信号至模型空白处,或复制In1输入信号

5、在模块库选择Simulink-Commonly Used Blocks,找到Out1输入信号图标,拖动至模型空白处,新建输出信号

6、点击输入输出信号下边的名称进行修改,修改为定义的输入信号空调压缩机使能EASEn_Cmd、蒸发器温度EvTemp,输出信号空调压缩机转速请求EASTargSpd_Req

四、Stateflow状态机模型中信号创建

1、双击Chart模块,进入Stateflow主界面

2、选择菜单栏建模-符号窗格,将信号设置窗口显示出来

3、在弹出的信号设置窗口中,点击第一个绿的小加号图标-创建数据,点击创建的数据图标,选择信号类型为Input Data

4、以同样的方式,创建数据,分别定义为Input Data及Output Data

5、将新建的输入输出信号名称修改为定义的输入输出信号名称

五、Stateflow状态机初始状态及跳转模型搭建

1、拖动左侧小方块图标即状态模块至主界面空白处

2、设置初始化状态,即首次进入状态机的初始值,第一行设定该状态名称为initial,第二行设定en:即进入该状态,也可使用全称entry:,第三行设定进入该状态后的执行指令EASTargSpd_Req=0;  即将0赋值给EASTargSpd_Req,此初始化状态的定义为初始化进入该状态机,初始化输出的空调压缩机转速请求值为0(注意状态机中的符号需使用英文状态下符号,否则会报错)

3、拖动左侧圆圈图标即结点至模型空白处,然后在初始化状态框边缘拖动鼠标,将拖出的箭头拉向新建的结点处连接上

4、以同样的方式新建状态1即State1,并将其连接起来,如图所示

5、在连接线上双击,显示3个图标,选择中间的中括号[],代表状态跳转条件,第一个闪电标志是事件名称/消息名称,可以设置触发条件,第三个大括号{}是动作,代表满足前边条件后执行的动作

6、根据控制策略,在初始化状态跳转至状态1的条件中填写EASEn_Cmd==1&&EvpTemp>8,即空调压缩机使能信号为使能且蒸发器温度值大于8℃,此处==代表等于,&&代表且,同时满足

7、在状态1中输入该状态下空调压缩机转速请求指令,EASTargSpd_Req=2700;

8、根据控制策略,以同样的方式设置状态2的跳转条件及状态。注意:当跳转条件较多,导致条件全部列成一行太长,可以对条件进行分行显示,即在要分段的字符后输入...,每行开头的字符不应为特殊字符比如&、||

9、根据控制策略,以同样的方式设置状态3的跳转条件及状态

10、根据控制策略,以同样的方式设置状态4的跳转条件及状态

六、Stateflow不同状态之间的跳转模型搭建

1、当空调压缩机处于运行状态,处于状态1即压缩机转速2700rpm或状态2压缩机转速2000rpm,此时条件发生变化,比如在状态1工作时,当条件变为空调压缩机使能为使能且蒸发器温度≤8℃,此时需调节压缩机转速至2000rpm,增加状态1至状态2之间的跳转条件,同理,可增加状态2至状态1之间的跳转条件

2、以同样的方式,添加状态2和状态3之间的跳转条件

3、以同样的方式,添加状态3和状态4之间的跳转条件,完成Stateflow状态及跳转条件模型搭建

七、模型信号的连接及命名

1、返回到上一级别的模型,连接输入输出信号图标和Chart模型对应的输入输出信号,修改Chart模型的名称为AC_sped_control

2、整个模型搭建完成

八、总结

本文通过空调压缩机转速控制Stateflow模型的搭建,介绍了Stateflow使用的基本方法和步骤。Stateflow适合于多种状态跳转模型的搭建,比如上下电、档位切换、冷却系统水泵风扇控制等。当然,本文介绍的只是Stateflow最基本的功能,如有有更复杂的控制需求,需要进一步了解其他功能。

汽车电控研习室
新能源汽车电控领域深耕者,电控知识干货分享