Main Content

使用基于 STM32 处理器的板实现 PMSM 的无传感器磁场定向控制

此示例采用磁场定向控制 (FOC) 方法来控制三相永磁同步电机 (PMSM) 的转速。有关 FOC 的详细信息,请参阅磁场定向控制 (FOC) (Motor Control Blockset)

此示例使用无传感器位置估计方法。您可以选用滑动模式观测器或磁通观测器来估计示例中使用的 FOC 算法的位置反馈。

闭环 FOC 算法用于调节三相 PMSM 的转速和转矩。此示例使用 Embedded Coder® Support Package for STMicroelectronics® STM32 Processors 中的 STM32 外设模块和 Motor Control Blockset 中的 MCB 库模块。在 MATLAB® 命令行窗口中运行 slLibraryBrowser 以打开 Simulink Library Browser。在打开的 Simulink 库浏览器中,您可以在 Embedded Coder® Support Package for STMicroelectronics® STM32 Processors 下找到基于 STM32 处理器的板驱动程序库。

Sliding Mode Observer (SMO) 模块根据测量位置和估计位置之间的误差生成滑动运动。该模块生成的估计值与测量位置严格成正比。该模块使用定子电压 $({V_\alpha },{V_\beta })$ 和电流 $({I_\alpha },{I_\beta })$ 作为输入,并估计电机模型的电动势 (emf)。它使用 emf 进一步估计转子位置和转子转速。Flux Observer 模块使用相同的输入 $({V_\alpha },{V_\beta },{I_\alpha },{I_\beta })$ 来估计定子磁通、生成的转矩和转子位置。

前提条件

完成以下教程:

注意:完成所有硬件连接,并通过完成 使用基于 STM32 处理器的板对三相交流电机进行开环控制 获得 ADC 偏移值 $({I_\alpha },{I_\beta })$

必需的硬件

可用模型

您可以使用具有 X-NUCLEO-IHM07M1 扩展板的 mcb_pmsm_foc_sensorless_nucleo_f401remcb_pmsm_foc_sensorless_nucleo_g474re 模型进行仿真和代码生成。您还可以使用 open_system 命令打开 Simulink® 模型。例如,对基于 STM32 处理器的板使用以下命令:

open_system('mcb_pmsm_foc_sensorless_nucleo_f401re.slx');

点击模型中的编辑电机和逆变器参数,以更改模型参数来适应您的特定电机。使电机电压和功率特性与控制器匹配。在此示例中,当前电机参数是针对 BLY172S-24V-4000 无刷直流电机进行配置的。

电机由传统的电压源逆变器驱动。控制器算法使用矢量 PWM 方法为六个功率开关设备生成三个脉冲宽度调制 (PWM) 信号。逆变器使用模数转换器 (ADC) 注入组中的两个通道测量两个电机输入(ia 和 ib)的电流,并将测量结果发送到转矩控制算法。

外设配置

STM32CubeMX 配置

  • ADC 配置

  • ADC 和 PWM 保持同步,以便于 ADC 注入组转换基于计时器 1 的更新事件启动。

  • ADC 通道配置为从 ADC 1 的注入组转换中读取电流反馈,并从常规组转换中读取参考转速。

  • PWM 配置

  • 配置 PWM 频率和 PWM 通道。Timer1 配置为生成更新事件,以使 ADC 与 PWM 同步。这种同步对于在合适的时间读取电流反馈非常重要。

  • 将重复计数器设置为 1,以确保每个周期发生一次更新事件。

外设模块配置

双击模块以打开模块参数配置。如果要在不同硬件板上运行此示例,请确保指定的参数值相同。

  • 配置 Analog to Digital Converter 模块

此示例中的算法使用异步调度。脉冲宽度调制 (PWM) 模块触发 ADC 转换。转换结束时,ADC 会发出中断,以触发开环算法。

  • 配置 PWM Output 模块

选择在计数器启用后设置重复计数器参数,以便在计时器计数器溢出时更新事件。

对模型进行仿真

此示例支持仿真。请按照以下步骤仿真模型。

1.打开此示例附带的一个模型。

2.点击仿真选项卡上的运行来仿真该模型。

3.点击仿真选项卡上的数据检查器来查看和分析仿真结果。

生成代码并在目标硬件上部署和运行

本节说明如何生成代码并运行电机。

1.仿真目标模型并查看仿真结果。

2.完成硬件连接。有关详细信息,请参阅使用基于 STM32 处理器的板对三相交流电机进行开环控制

3.计算从 Open-Loop Control of 3-Phase AC Motors Using STM32 Processor Based Boards 中获得的 ADC 偏移值。有关说明,请参阅使用基于 STM32 处理器的板对三相交流电机进行开环控制

4.硬件选项卡中,点击监控并调节。您可以从诊断查看器中观察到,代码是为模型生成的,并且主机在加载生成的可执行文件后连接到目标。查看 Simulink 数据检查器。

5.要旋转电机,请点击硬件板上的普通按钮(蓝色普通按钮)

注意

  • 启动电机前,通过逆时针旋转电位计,确保电位计保持在 0 位置。

  • 点击普通按钮以启动电机。现在,以顺时针方向逐渐旋转电位计以增大转速。闭环将在参考转速超出 0.1 x pmsm.N_base(其中,pmsm.N_base 是电机基本转速的 MATLAB™ 工作区变量)后启动。

  • 当参考转速在 0 到 0.1 x pmsm.N_base 之间时,电机开始在开环条件下运行。

6.再次点击普通按钮,以在开环条件下开始运行电机。

注意:请勿长时间在开环条件下运行电机(使用此示例)。电机可能会消耗大量电流并产生过多热量。

我们设计了开环控制,使电机以小于或等于基转速 10% 的参考转速运行。

当您在硬件上以低参考转速运行此示例时,已知问题使 PMSM 可能不会按照低参考转速运行。

7.增加电机的参考转速,使其高于基转速的 10%,以从开环控制切换到闭环控制。

注意:在此示例中,电机配置为仅以一个方向运行。

8.执行监控和调节(外部模式),以观察调试信号。

其他可尝试的操作

  • 您可以尝试使用 SoC Blockset™ 运行该示例并分析结果。

  • 尝试在 STM32G4xx Based 硬件板上使用 mcb_pmsm_foc_sensorless_nucleo_g474re 模型运行该示例。

  • 您也可以使用磁通观测器算法代替滑动模式观测器 (SMO)。

有关详细信息