目录
一、应用程序剖析
上图显示了由ST MC SDK构建的电机控制应用程序。首先,这样的应用程序是由电机控制工作台生成的软件项目,这要归功于STM32CubeMx。该软件项目由几个不同的部分组成,这些部分相互反应:
- 这些部分中最重要的是应用程序。在这种情况下,该应用程序由ST Motor Control SDK的用户开发,它专注于最终应用程序的用途,将纯粹的电机控制方面留给ST MCSDK生成的代码。
- UI库提供了用户在应用程序开发过程中可以从中受益的功能,以控制和调试它:它处理硬件功能,例如用于启动和停止电机的按钮,用于设置转子速度参考的电位器。更重要的是,它还提供调试功能,如电机控制协议套件,允许将电机控制应用与ST Motor Pilot工具或DAC功能连接。电机控制应用程序中是否存在 UI 库是可选的。它通常不会出现在最终应用程序中。
- ST MCSDK固件的核心是电机控制库。该库由一组组件组成,每个组件都实现了 SDK 提供的一项功能。对于其中的大多数功能,提供了几个组件来实现它的不同变体。电机控制工作台的任务之一是选择用户应用所需的正确组件。
- 为应用程序选择的"电机控制库"组件由**"电机控制驾驶舱** "部件使用。这部分实际上实现了电机驱动的核心算法。它将选定的组件集成在一起。电机控制驾驶舱的最后一个主要作用是充当电机和应用程序之间的主接口。
- 应用程序 和 UI 库 都使用电机控制应用程序编程接口 (MC API) 来访问电机控制主控舱 。MCAPI 是应用程序与系统其余部分之间的主接口。它提供了正确控制应用驱动的电机所需的所有功能。
- 但是,有时,应用程序可能需要微调某些内部参数或获取比 MCAPI 所能提供的更详细的信息。对于这些情况,它可以使用"**MC 低级 API**",它由电机控制应用程序的所有组件提供的接口功能组成。请参阅组件页面,了解 MC 低级 API 文档的入口点。
- **STM32Cube 驱动程序**块表示项目中所需的 STM32 外设驱动程序 -- HAL 或 LL,具体取决于用户的选择。电机控制库本身仅使用LL,硬件外设初始化可以使用HAL或LL。这些驱动程序被复制到为电机控制应用程序生成的软件项目中。
二、面向现场的控制实现体系结构
1、参考计算循环
需要应用程序设置的扭矩参考或转子速度参考作为输入。在后一种情况下,参考计算环路还执行转子速度调节。
该循环在名为"中频任务"的函数中实现,该函数在STM32 MCU的SysTick中断上执行。通常,中频任务的频率为 1 毫秒。但是,在电机控制工作台中,这可配置为低至 500 μs 和高达数毫秒的 ms。
500 μs 是电机控制工作台生成的电机控制应用程序的默认 SysTick 中断频率。而且,通常中频任务和参考计算循环每隔一个 SysTick 中断运行一次。
2、电流调节环路
电流调节环路是 FOC 实施的核心。
它的任务是测量流经电机相位的电流,并对其进行调节,使它们达到参考计算回路 设置的参考值。为此,电流调节回路 需要知道 (在无传感器配置的情况下,这意味着:估计 )受控电机转子的位置和速度。
电流调节环 路通过克拉克和帕克变换实现了 FOC 算法的核心,即我d和我d电流调节和空间矢量脉冲宽度调制。当读取电机相电流时(它可以在ADC中断或DMA中断上),它会在中断环境中触发,并执行以下操作:
- 读取Ia, Ib 和 Ic 相电流
- 计算转子的位置
- 调节相电流,这将导致施加相电压
- 使用占空比对PWM定时器进行编程
3、安全回路
安全循环 在 SysTick 中断上运行,就像参考计算循环 一样。但是,它在每次出现 SysTick 时都会运行,而后者并不总是如此。它的任务是评估许多故障条件,以确定它们是否处于活动状态。故障条件包括过流、欠压或过热条件。当检测到其中之一时,电机的运行将停止,并释放对其的任何最终控制。请参阅文档的 MC 状态机、命令和故障管理页面的故障部分。