Stateflow状态机建模:并行状态

Stateflow状态机建模:并行状态 汇聚博主多年工程经验的新书《Simulink嵌入式开发实战》现已上市针对Simulink与MBD开发技术形成了一套完整的知识体系和方法论。详细介绍和优惠链接可以参考博客《Simulink嵌入式开发实战》新书上市感谢粉丝长期以来的支持文章目录1 引入2 建模过程3 总结1 引入在之前写的一篇博客《Stateflow状态机建模嵌套状态》中同一个周期内只有一个状态能够被激活这是串行状态的概念。此外Stateflow中还有并行状态的概念它允许多个状态区域同时处于激活状态并行运行各自的逻辑互不干扰适用于各个模块之间独立运行的场景。例如对于同样的开关控制LED灯假如一个开关控制2个LED灯LED1是根据开关的上升沿来跳转状态LED2是根据开关的下降沿来跳转状态。2个LED灯的状态都依赖于开关信号但是都是独立在各自的ON和OFF状态之间跳转这种场景就可以使用并行状态进行建模。2 建模过程首先在Chart模块中添加3个状态LED、LED1和LED2其中LED1和LED2是LED中嵌套的子状态如图所示。右键点击LED状态选中Decomposition接着在二级菜单中选择Parallel将LED状态修改为并行状态如图所示。此时LED状态内部的LED1和LED2状态都会变成虚线的外框并且右上角会出现序号1和2如图所示。序号表示 Stateflow 执行这些并行状态的顺序。参照博客《Stateflow状态机建模开关控制LED灯状态》中所说的方法在LED1和LED2状态中分别搭建OFF和ON状态及其之间的跳转条件区别为输出的变量分别为LED1_State和LED2_State区分两个LED灯的状态变量。跳转条件分别为Key_Pressed和Key_Released分别表示检测到按键按下和检测到按键释放如图所示。点击建模工具的Model Explorer在模型浏览器中需要配置对应的LED输出状态和跳转条件如图所示。在Chart模块外部使用Pulse Generator和Unitdelay等模块检测上升沿和下降沿分别输入到Key_Pressed和Key_Released端口中建立一个仿真模型如图所示。Pulse Generator的参数配置、仿真周期等与博客《Stateflow状态机建模开关控制LED灯状态》中相同。配置完成后运行模型双击Scope模块观察输出结果如图所示。仿真结果中LED1_State随着Pulse Generator信号的上升沿切换0和1LED2_State随着Pulse Generator信号的下降沿切换0和1验证了并行状态的状态机建模。3 总结本文延续LED灯的例子研究了并行状态的基本用法。返回个人博客总目录