Main Content

使用正交编码器或无传感器磁通观测器的 PMSM 直接转矩控制

此示例采用直接转矩控制 (DTC) 方法来控制三相永磁同步电机 (PMSM) 的转速。直接转矩控制 (DTC) 是一种矢量电机控制方法,它通过直接控制电机的磁通和转矩来实现电机转速控制。该示例算法需要从 PMSM 获取电机电流和位置反馈。它使用 DTC 的空间矢量脉冲宽度调制 (DTC-SVPWM) 变体,该变体使用空间矢量调制 (SVM) 来产生逆变器使用的脉冲宽度调制 (PWM) 占空比。有关此示例中使用的 DTC-SVPWM 算法的更多详细信息,请参阅直接转矩控制 (DTC)

该示例说明如何使用正交编码器或无传感器磁通观测器来确定转子位置。有关 Simulink® Flux Observer 模块的详细信息,请参阅 Flux Observer

模型

该示例包括 mcb_pmsm_dtc_f28379d 模型(目标模型)。

此模型既可用于仿真,也可用于代码生成。

有关支持的硬件配置的详细信息,请参阅“生成代码并将模型部署到目标硬件”一节中的“必需的硬件”主题。

必需的 MathWorks 产品

要仿真模型,您需要:

  • Motor Control Blockset™

要生成代码并部署模型,您需要:

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™(仅在优化代码生成时需要)

前提条件

1.获取电机参数。Simulink® 模型使用默认参数,您可以用电机数据表或其他来源的值替换这些参数。

不过,如果您有电机控制硬件,则可以通过使用 Motor Control Blockset 参数估计工具来估计要使用的电机的参数。有关说明,请参阅使用推荐的硬件估计 PMSM 参数。参数估计工具使用估计的电机参数更新 motorParam 变量(在 MATLAB® 工作区中)。

2.更新电机参数。如果您从数据表或其他来源获得电机参数,请在与 Simulink® 模型相关联的模型初始化脚本中更新电机参数和逆变器参数。有关说明,请参阅估计控制增益和使用工具函数

如果您使用参数估计工具,则可以在模型初始化脚本中更新逆变器参数,但不能更新电机参数。该脚本会自动从更新后的 motorParam 工作区变量中提取电机参数。

仿真模型

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

1.打开此示例中包含的目标模型。

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

3.点击查看结果部分中的数据检查器以查看和分析仿真结果。

生成代码并将模型部署到目标硬件

本节说明如何生成代码和在目标硬件上运行 DTC 算法。

此示例使用一个主机模型和一个目标模型。主机模型是控制器硬件板的一个用户界面。您可以在主机上运行主机模型。必须将目标模型部署到控制器硬件板上,然后才能在主机上运行主机模型。主机模型使用串行通信对目标 Simulink 模型发出指令,并以闭环控制方式运行电机。

必需的硬件

该示例支持以下硬件配置。您还可以在 MATLAB® 命令提示符下使用目标模型名称打开模型。

LAUNCHXL-F28379D 控制器 +(BOOSTXL-DRV8305 或 BOOSTXL-3PHGANINV)逆变器:mcb_pmsm_dtc_f28379d

注意:使用 BOOSTXL-3PHGANINV 逆变器时,请确保 BOOSTXL-3PHGANINV 的底层和 LAUNCHXL 板之间有适当的绝缘。

有关与此硬件配置相关的连接,请参阅 LAUNCHXL-F28069M 和 LAUNCHXL-F28379D 配置

生成代码并在目标硬件上运行模型

1.仿真目标模型并观测仿真结果。

2.完成硬件连接。

3.打开目标模型。如果您要更改该模型的默认硬件配置设置,请参阅模型配置参数

4.如果您使用正交编码器读取转子位置,请将目标模型上的位置反馈单选按钮设置为正交编码器。如果您要使用磁通观测器进行无传感器位置估计,请选择磁通观测器

5.计算正交编码器索引偏移值,并在与目标模型相关联的模型初始化脚本中可用的 pmsm.PositionOffset 变量中更新它。有关说明,请参阅 PMSM 的正交编码器偏移量校准

注意:如果使用无传感器磁通观测器进行位置估计,请跳过步骤 4。

6.默认情况下,该模型计算相电流测量的 ADC 偏移值。要禁用此功能,请将模型初始化脚本中的 inverter.ADCOffsetCalibEnable 变量的值更新为 0

您也可以计算 ADC 偏移值,并在模型初始化脚本中手动更新它们。有关说明,请参阅以开环控制方式运行三相交流电机并校准 ADC 偏移量

7.将一个示例程序加载到 LAUNCHXL-F28379D 板的 CPU2。例如,加载通过使用 GPIO31 (c28379D_cpu2_blink.slx) 来操作 CPU2 的蓝色 LED 的程序。这可以确保 CPU2 不会错误地配置为使用用于 CPU1 的板外设。有关示例程序或模型的详细信息,请参阅 Getting Started with Texas Instruments C2000 Microcontroller Blockset (C2000 Microcontroller Blockset) 中的“任务 2 - 为 TI Delfino F28379D LaunchPad(双核)创建、配置和运行模型”部分。

8.点击硬件选项卡上的编译、部署和启动以将目标模型部署到硬件上。检查 MATLAB 基础工作区是否显示已部署目标模型中的变量。

9.点击目标模型中的主机模型超链接以打开关联的主机模型。

有关主机模型和目标模型之间串行通信的详细信息,请参阅Host-Target Communication

10.在与目标模型关联的模型初始化脚本中,使用变量 target.comport 指定通信端口。该示例使用此变量来更新主机模型中可用的 Host Serial Setup、Host Serial Receive 和 Host Serial Transmit 模块的端口参数。

11.点击仿真选项卡上的运行以运行主机模型。

12.将 Start / Stop Motor 开关的位置切换到 On 以开始运行电机。

13.更新主机模型中的 Reference Speed 值(以 RPM 为单位)。

14.使用主机模型的调试信号部分选择要监控的调试信号:

  • Speed_ref & Speed_feedback - 在示波器中显示转速参考值和转速反馈信号。

  • Flux_ref & Flux_feedback - 在示波器中显示磁通参考值和磁通反馈信号。

  • Torque_ref & Torque_feedback - 在示波器中显示转矩参考值和转矩反馈信号。

  • Ia & Ib - 在示波器中显示相位 |a| 和相位 |b| 的电流。

  • Ia & Position - 在示波器中显示相位 |a| 的电流和转子位置信号。

15.使用主机模型中的可用时间示波器来监控所选调试信号。