用 stateflow 设计电机控制状态机

1.概述

2.Matlab 下载安装与注册

3.Stateflow 控件介绍

4.添加状态

5.添加转移动作

6.添加 Run 状态的子状态

7.状态仿真

8.参考资料

  1. 概述

      在电机控制系统中,从电机控制板上电到电机运行需要经过一系列的状态切换,一般在流程图指导下直接编写控制代码也容易出错,当控制逻辑复杂时更加明显,如果状态机能以图形的方式来设计,则其流程不仅直观清晰,还容易修改、校验、检查。Matlab 的 stateflow 除了具有图形化设计状态机外,还具有自动生成代码功能,并能够在 Simulink 中进行仿真,这将为工程师们节省很多时间,本文简单介绍如何使用 stateflow 来设计电机控制状态机,下文中的电机控制状态机为 NXP 原厂 BLDC 电机控制的状态机流程,用于方便大家理清思路,方便阅读源码。

 

  1. Matlab 下载安装与注册

      上 Matlab 官网(www.matlab.com)使用邮箱注册账号并下载,现在的最新版本是 2021b,找到 “试用” 图标,输入邮箱后会生成一个许可证号,使用此许可证号可以试用 matlab 一个月,安装完成后打开 stateflow 如下图:




  1. Stateflow 控件介绍

      中间为画图的画布:可以在其中添加状态、转移和其他图形元素,左栏有 state 状态、junction 节点、default transition 默认转移、graphical function 图形函数、Matlab 函数、历史节点、添加注释、添加图像控件。




  1. 添加状态

       在对象选项板中,点击 state 图标,并将指针移至画布,将出现具有默认转移的状态。要放置该状态,请点击画布上的某个位置。在文本提示中,输入状态名称 Init ,依次创建 Stop、Fault、Run 状态,如下图所示:



  1. 添加转移动作

       在两个状态之间拖动鼠标将添加一个状态转移 Transition,其中闪电标志为事件或消息,此事件或消息发生后状态将转移到下一个状态,[] 为转移的条件,同时满足时状态才发生转移,{} 为满足 [] 中的条件后执行的动作,如下图所示:


      
各状态之间添加完转移事件和转移处理函数之后如下图所示:



  1. 添加 Run 状态的子状态

       如果需要电机运行,程序需要运行至 Run 状态,如果是无感控制,则需要经过校验母线电流、准备好状态、对齐、启动、闭环转动状态,如下图所示:



     框选所有的 Run 子状态,然后右键,选择 Create Container -- > Create Substate from selection,则这些状态将变成 Run 父状态的子状态,整理后如下图所示:



  1. 状态仿真

       点击 Run 按钮,状态先运行至默认状态,可以在右边框中双击事件值表示产生事件,状态将转移至下个状态,其状态边框变为蓝色,此过程用于验证状态流程是否正确。

 

8. 参考资料
    
   
有关 stateflow 的更多帮助,请参阅 matlab 的在线帮助:https://ww2.mathworks.cn/help/stateflow/index.html

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论