1.概述
2.Matlab 下载安装与注册
3.Stateflow 控件介绍
4.添加状态
5.添加转移动作
6.添加 Run 状态的子状态
7.状态仿真
8.参考资料
- 概述
在电机控制系统中,从电机控制板上电到电机运行需要经过一系列的状态切换,一般在流程图指导下直接编写控制代码也容易出错,当控制逻辑复杂时更加明显,如果状态机能以图形的方式来设计,则其流程不仅直观清晰,还容易修改、校验、检查。Matlab 的 stateflow 除了具有图形化设计状态机外,还具有自动生成代码功能,并能够在 Simulink 中进行仿真,这将为工程师们节省很多时间,本文简单介绍如何使用 stateflow 来设计电机控制状态机,下文中的电机控制状态机为 NXP 原厂 BLDC 电机控制的状态机流程,用于方便大家理清思路,方便阅读源码。
- Matlab 下载安装与注册
上 Matlab 官网(www.matlab.com)使用邮箱注册账号并下载,现在的最新版本是 2021b,找到 “试用” 图标,输入邮箱后会生成一个许可证号,使用此许可证号可以试用 matlab 一个月,安装完成后打开 stateflow 如下图:
- Stateflow 控件介绍
中间为画图的画布:可以在其中添加状态、转移和其他图形元素,左栏有 state 状态、junction 节点、default transition 默认转移、graphical function 图形函数、Matlab 函数、历史节点、添加注释、添加图像控件。
- 添加状态
在对象选项板中,点击 state 图标,并将指针移至画布,将出现具有默认转移的状态。要放置该状态,请点击画布上的某个位置。在文本提示中,输入状态名称 Init ,依次创建 Stop、Fault、Run 状态,如下图所示:
- 添加转移动作
在两个状态之间拖动鼠标将添加一个状态转移 Transition,其中闪电标志为事件或消息,此事件或消息发生后状态将转移到下一个状态,[] 为转移的条件,同时满足时状态才发生转移,{} 为满足 [] 中的条件后执行的动作,如下图所示:
各状态之间添加完转移事件和转移处理函数之后如下图所示:
- 添加 Run 状态的子状态
如果需要电机运行,程序需要运行至 Run 状态,如果是无感控制,则需要经过校验母线电流、准备好状态、对齐、启动、闭环转动状态,如下图所示:
框选所有的 Run 子状态,然后右键,选择 Create Container -- > Create Substate from selection,则这些状态将变成 Run 父状态的子状态,整理后如下图所示:
- 状态仿真
点击 Run 按钮,状态先运行至默认状态,可以在右边框中双击事件值表示产生事件,状态将转移至下个状态,其状态边框变为蓝色,此过程用于验证状态流程是否正确。
8. 参考资料
有关 stateflow 的更多帮助,请参阅 matlab 的在线帮助:https://ww2.mathworks.cn/help/stateflow/index.html
评论