使用基于 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) 模块根据测量位置和估计位置之间的误差生成滑动运动。该模块生成的估计值与测量位置严格成正比。该模块使用定子电压 和电流 作为输入,并估计电机模型的电动势 (emf)。它使用 emf 进一步估计转子位置和转子转速。Flux Observer 模块使用相同的输入 来估计定子磁通、生成的转矩和转子位置。
前提条件
完成以下教程:
开环和闭环控制 (Motor Control Blockset)
注意:完成所有硬件连接,并通过完成 使用基于 STM32 处理器的板对三相交流电机进行开环控制 获得 ADC 偏移值 。
必需的硬件
可用模型
您可以使用具有 X-NUCLEO-IHM07M1 扩展板的 mcb_pmsm_foc_sensorless_nucleo_f401re 或 mcb_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)。