购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.6 MotorControl Workbench(MC SDK)

3.6.1 下载和安装

(1)打开ST官网主页,选择“Tools & Software”→“Ecosystems”→“STM32 Ecosystem for Motor Control”→“Embedded Software”→“X-CUBE-MCSDK”→“Get Software”命令,进入X-CUBE-MCSDK软件的下载界面,如图3-61所示。选择对应版本进行下载,此处以5.4.8版本为例说明其安装过程。

img

图3-61 X-CUBE-MCSDK软件的下载界面

(2)在弹出的“许可协议”对话框中单击“接受”按钮(请注意先登录或注册ST账号),进行下载。

(3)下载完成后将软件进行解压,然后双击“X-CUBE-MCSDK_5.4.8.exe”文件进行安装。进入安装流程后,根据提示逐步完成安装(注意在安装的路径名中不要有中文,建议不要安装在系统盘中)。MC SDK的安装过程如图3-62~图3-65所示。

img

图3-62 MC SDK的安装过程(1)

img

图3-63 MC SDK的安装过程(2)

img

图3-64 MC SDK的安装过程(3)

img

图3-65 MC SDK的安装过程(4)

(4)安装完成后打开软件,MC SDK的主界面如图3-66所示。

img

图3-66 MC SDK的主界面

3.6.2 操作简介

打开“电堂科技”官网主页,选择“厂商专区”菜单下的“STM32”命令,在搜索框中输入“MC SDK5.x软件介绍【上】”并搜索,即可检索到参考视频《4.MC SDK5.x软件介绍【上】》。

ST Motor Control Workbench主界面的功能分区如图3-67所示。用户按钮区用于创建新项目、加载已有项目或启动ST电机参数测量工具;最近项目区用于加载近期的项目;例程区用于加载项目示例。

img

图3-67 ST Motor Control Workbench主界面的功能分区

(1)创建新项目。

在图3-67中的用户按钮区单击“New Project”按钮,弹出“New Project”对话框。在“Application type”下拉列表中选择“Custom”,在“System”选项中选中“Single Motor”单选按钮。以本书使用的P-NUCLEO-IHM03套件为例,有两种方法可以创建新项目。第1种方法如图3-68所示,在“Select Boards”选项中选中“MC Kit”单选按钮,在“Motor Control Kit”下拉列表中选择“P-NUCLEO-IHM03 3Sh”,在“Motor”下拉列表中选择“GimBel GBM2804H-100T”。第2种方法如图3-69所示,在“Select Boards”选项中选中“Power&Control”单选按钮,在“Control”下拉列表中选择“NUCLEO-G431RB”,在“Power”下拉列表中选择“X-NUCLEO-IHM16M1 3Sh”,在“Motor”下拉列表中选择“GimBel GBM2804H-100T”。

(2)硬件配置。

硬件配置窗口如图3-70所示,主要包括图标与菜单区、当前硬件信息、硬件细节设定、主要硬件配置信息和用户信息。

电机监测界面如图3-71所示。按钮①用于打开电机监测界面;按钮②用于连接电机(图中电机尚未连接);按钮③用于打开示波器窗口,示波器窗口如图3-72所示。

img

图3-68 创建新项目方法1

img

图3-69 创建新项目方法2

img

图3-70 硬件配置窗口

img

图3-71 电机监测界面

img

图3-72 示波器窗口

(3)工程生成。

单击“Project generation”按钮可以选择合适的IDE自动生成代码,生成的代码可在CubeMX中打开并进行下一步配置工作,具体操作流程将在7.1节中展示。代码生成窗口如图3-73所示。

img

图3-73 代码生成窗口

3.6.3 使用ST Motor Profiler获得电机参数

ST Motor Control Workbench中集成的Motor Profiler工具如图3-74所示。单击“Motor Profiler”按钮进行参数测量,操作步骤如下。

img

图3-74 ST Motor Control Workbench中集成的Motor Profiler工具

(1)选择开发板。

在“ST Motor Profiler”窗口中,单击“Select Boards”按钮选择开发板,如图3-75所示,打开套件选择窗口,选择P-NUCLEO-IHM03套件(见图3-76),该套件由NUCLEOG431RB和X-NUCLEO-IHM16M1 3Sh两块板子组成。

img

图3-75 选择开发板

img

图3-76 选择P-NUCLEO-IHM03套件

如果是第一次使用该套件,则需要进行板子配置检查,如图3-77所示,单击图中方框内的“Remember to properly configure the boards in Motor Control mode”链接,对板子需要进行安装的线帽进行检查。

img

图3-77 板子配置检查

(2)填写电机参数(见图3-78)。

根据厂家提供的信息填写电机相关参数,有助于缩短测量准确数值的时间。其中,电机的极对数、磁体的内置类型是必须填写的,在ST官网中可以找到相关数据。本书使用的电机为表贴式电机(SM-PMSM),极对数为7。

img

图3-78 填写电机参数

(3)连接开发板与软件(见图3-79)。

单击图3-79中的“Connect”按钮进行连接。第一次连接成功会显示连接成功的状态框,如图3-80所示。

img

图3-79 连接开发板与软件

img

图3-80 连接成功的状态框

若显示其他提示信息,则根据提示内容检查相关问题,常见问题如下。

① 检测不到ST-LINK。

② 检测不到串口。

③ 要连接的板子和所选的不同。

④ ST-LINK安装的固件版本需要更新。

⑤ 测量期间电机负载变化太快。

⑥ 测量阶段时间过长。

(4)测量参数。

开发板与软件连接成功后,单击“Start Profile”按钮开始进行电机参数测量,如图3-81所示。测量过程如图3-82所示。

img

图3-81 开始进行电机参数测量

img

图3-82 测量过程

测量结果如图3-83所示。测量结束后,电机的参数会以不同颜色显示出来,包括电阻 R S 、电感 L S 、电势系数 K e 等。若颜色为绿色,则说明精度可靠;若有一个或多个结果的颜色为橙色,则需检查硬件设置,并重新启动ST Motor Profiler。测量成功后可单击“Save”按钮,将电机参数保存到C:\Users\name\.st_motor_control\user_motors目录下,以供ST Motor Control Workbench使用。

img

图3-83 测量结果

3.6.4 ST MC SDK 5.x固件

1)电机控制SDK概述

在使用ST MC SDK 5.x固件时需要对软件整体进行了解。STM32电机控制固件架构如图3-84所示,从图中可以看到三重架构,从下到上分别是外设层、电机库层、电机应用层。最下层为芯片外设库,芯片外设库使用ST HAL/LL库,可被各个层级调用,针对芯片的每种外设都有提供对应的库函数,需要结合使用说明调用这些库函数。芯片外设对应的库函数如图3-85所示。我们必须掌握的外设有TIMER、ADC、GPIO。电机库层是主要的电机FOC控制层,包含FOC算法、单片机外设配置、中断机制等各个环节。最上层为电机应用层,供用户直接使用电机库,且不需关心底层是如何实现的,加快用户程序开发,一般用户只需要熟练掌握电机应用层的API即可。

img

图3-84 STM32电机控制固件架构

img

图3-85 芯片外设对应的库函数

ST MC SDK 5.x固件主要由电机控制座舱、电机控制库和用户界面库构成。其中,电机控制库是底层的组件库,由被称为组件的单元组成,每一个组件是完成特定功能的一个零件。电机控制座舱把这些组件有机地结合起来去完成整个电机控制的功能。用户界面库用于界面调试通信,通过DAC、UART等为开发者提供一组人机交互的工具,例如,用户和Workbench之间的交互就是通过用户界面库实现的。

(1)电机控制座舱。

电机控制座舱将软件组件集成到MC固件子系统中,并实现调节回路。它实例化、配置和连接在PMSM FOC库和用户界面库中为用户应用选择的固件组件。根据应用特征,电机控制座舱代码由STM32CubeMX产生,所以电机控制座舱代码只包含所需内容,易于读取。

电机控制座舱由电机控制动态、电机控制配置和电机控制接口三部分组成,如图3-86所示。电机控制动态实现对电机的动态性能的控制,包括FOC控制环路(高频任务)、电机控制环路(中频任务)、安全控制环路(安全任务)。电机控制配置实例化并配置所有需要的组件。电机控制接口通过MC API来实现,它是提供给应用的主要且最直接的接口,用户可以通过这组API安全高效地控制电机的运行。在图3-86中,虚线方框内为可选择组件,实线框内均为主要组件,可以看到,整个控制围绕着电机控制系统的各个方面。

从图3-86中可以看出,电机控制动态的三个环路构成了底层驱动部分,对于整体程序控制流程,电机控制库的控制过程都发生在中断中,区别于普通程序控制流程,且无任务调度。这样可以做到电机实时控制,因此整个STM32产品都可用于FOC控制。

电机控制座舱是为提供用户可直接使用的电机库而准备的,各种API函数可供用户调用。简单的应用直接使用这些API函数就能够实现,用户不需要关心底层如何操作,只需要关注自身需要实现哪些必要的功能,从而使得项目开发更加快速有效。表3-1所示为可以直接使用的API函数。

img

图3-86 电机控制座舱组成

表3-1 可以直接使用的API函数

img

续表

img

(2)电机控制库。

电机控制库是软件组件的集合,每一个组件实现电机控制的一个功能。例如,速度和位置监测、电流检测、PID算法等。组件是一个自给自足的软件单元,包含一个结构体,在结构体中定义了能完成此组件功能的数据变量,结构体中放置的数据是表征该组件并调整其行为的参数,它们充分描述了组件状态。通过定义一种类型来将这些数据保持在一起,该类型的变量用作组件实例上的句柄。另外还包含一系列的函数,这些函数通过操作结构体中的数据变量来实现组件的功能。具有句柄和函数的组件如图3-87所示。组件通常包含一个.c文件和一个.h文件。结构体以“组件名缩写+_Handle_t”命名,函数以“组件名缩写+函数功能”命名,组件使得实现多个给定功能变得很简单。

img

图3-87 具有句柄和函数的组件

X-CUBE-MCSDK_5.x中的组件如表3-2所示。其中,序号为1~22的组件以源程序的方式提供,序号为23~29的组件以库的形式提供,可以根据提供的头文件从库里调用相应函数。

表3-2 X-CUBE-MCSDK_5.x中的组件

img

续表

img

一般来说,普通应用不会涉及电机控制库,只有当API层已经无法满足电机控制的需求时才会考虑修改这个部分,但在对电机运行框架非常熟悉的前提下才能进行修改。

(3)用户界面库。

用户界面库是负责通信的组件。电机控制代码通过这些组件控制串口和DAC与外界通信。通过用户界面库可以连接MCU和Workbench,在Workbench中实现对电机运行状态的监控。

2)电机控制应用工作流

使用STM32电机控制SDK的电机控制软件应用设计通常从MC Workbench开始。在SDK的使用过程中,电机本体、电机控制硬件板、控制引脚、控制策略在MC Workbench中配置完成,顺序为MC Workbench、STM32CubeMX工程、电机库代码(芯片外设库+电机控制库+电机控制座舱+用户界面库+系统初始化),该生成代码加入简单API后(如MC_StartMotor1)可以直接运行对应的电机,当需要细化控制或复杂控制时才有可能会修改电机控制座舱或电机控制库中的代码。

电机控制固件在开发环境中的应用如图3-88所示。MC WB从PMSM FOC库中选择适当的固件组件,计算其配置参数,生成STM32CubeMX项目文件,并使用此项目执行STM32CubeMX。执行的结果是生成了完整的软件项目,包括让电机旋转的应用的源代码和库。该软件项目可在从工作台上选择的IDE中直接打开。

STM32CubeMX生成的代码使用MC WB提供的参数来配置控制应用电机所需的所有外设。此代码还可初始化MC固件子系统、设置STM32时钟和中断处理程序,以便正确控制电机。用户可以修改生成的软件项目,添加自己的代码。

对于上述工作流程,用户看到的工具只有STM32MC WB。这对许多应用来说已经足够。如果用户还需要调整影响STM32电机控制的其他系统方面,那么可以直接使用STM32CubeMX,即首先加载STM32CubeMX中MC WB所生成的项目,然后进行想要的修改,最终再次生成项目。

img

图3-88 电机控制固件在开发环境中的应用 0Pwp4yxyRi46Db/W02VBW2TeCM2c/RUPiGkZESxgkcJDRqgbA5dIeXNdoomSH2Z/

点击中间区域
呼出菜单
上一章
目录
下一章
×