主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用 C2000 处理器控制负载双电机的永磁同步电机(测功机)

本例采用磁场定向控制 (FOC) 来控制在测功机装置中耦合的两台三相永磁同步电机 (PMSM)。电机 1 以闭环速度控制模式运行。电机 2 以扭矩控制模式运行,并给电机 1 施加负载,因为它们是机械连接的。您可以利用这个示例来测试电机在不同负载条件下的性能。

该示例仿真了两个背靠背连接的电机。您可以为电机 1 使用不同的速度参考值,为电机 2 使用不同的扭矩参考值(从电机 2 参考定子电流的大小和电气位置导出)。电机 1 以电机 2 提供的负载条件下的参考速度运行(具有不同的扭矩参考值)。

该示例在控制器硬件板上运行。您可以使用主机模型输入电机 1 的速度参考值和电机 2 的电流参考值。主机模型采用串行通信方式与控制器硬件板进行通信。

电机 1 和电机 2 控制算法中的当前控制回路偏移 Ts/2,其中 Ts 是控制回路的执行速率。

单 CPU 测功机模型

该示例包含以下模型:

您可以使用 mcb_pmsm_foc_sensorless_dyno_f28379d 和 mcb_pmsm_foc_qep_dyno_f28069m 模型进行仿真和代码生成。您还可以使用 open_system 命令打开 Simulink® 模型。这些模型使用 timer0 作为基本速率触发器。例如,对于基于 F28379D 的控制器,请使用以下命令:

双 CPU 测功机模型

该示例包含以下模型:

您还可以使用 open_system 命令打开 Simulink® 模型。

注意:双核 CPU 模型不支持仿真。

例如,对于基于 F28379D 的控制器,请使用以下命令:

IPC Communication for Dual Core Processors

CPU1 通过 IPC 通道向 CPU2 发送以下数据:

  • 转矩参考值

  • 信号选择

  • 启用 Motor2(EnMtr2Ctrl)

CPU2 根据 CPU1 的信号选择发送调试信号。

Core1 将数据传输到其分配的内存(Core1 到 Core2 消息 RAM),并从 Core2 的分配内存(Core2 到 Core1 消息 RAM)接收数据。同样,Core2 将数据传输到其分配的内存(Core2 到 Core1 的消息 RAM),并从 Core1 的分配内存(Core1 到 Core2 的消息 RAM)接收数据。有关更多信息,请参考使用 IPC 模块进行处理器间通信

用于测功机设置的外围模块配置

设置此模型的外围模块配置。双击模块即可打开模块参数配置。如果想在其他硬件板上运行此示例,可以使用相同的参数值。

  • ePWM 模块配置 ePWM1/2/3 与 ePWM4/5/6 的偏移量为 ePWM 时间周期。这是通过从 ePWM3 向 ePWM4 发送同步信号并将 ePWM4 的相位偏移值设置为 Target.PWM_counter_period 来实现的。

  • ADC 模块配置

本例中的算法采用异步调度。脉冲宽度调制 (PWM) 模块触发 ADC 转换。转换结束时,ADC 发出中断,触发主 FOC 算法。有关更多信息,请参考ADC Interrupt Based Scheduling

对于单 CPU 模型:

  • 用于逆变器 1 的 ADC 通道

  • 用于逆变器 2 的 ADC 通道

对于双 CPU 模型,反相器 2 的 ADC 通道在 CPU1 模型的初始化函数中定义。在 CPU2 模型中,我们使用 Memory Copy 模块来访问 ADC 寄存器的值。

配置模型

1.打开“mcb_pmsm_foc_dual_cpu1_f28379d”和“mcb_pmsm_foc_dual_cpu2_f28379d”模型。此模型适用于 TI Delfino F28379D Launchpad。

2.要在其他 TI C2000™ 处理器上运行该模型,首先按 Ctrl+E 打开配置参数对话框。然后,通过导航至硬件实现>硬件板来选择所需的硬件板。

3.以下屏幕截图显示了在双 CPU 模型中执行的调度器配置。

注意:

  • 对于单 CPU 模型,确保基本速率触发Timer0

  • 确保将默认参数行为设置为内联配置参数 > 代码生成 > 优化)。

4.确保波特率设置为 12e6 比特/秒。

必需的 MathWorks 产品

仿真模型:

  • Motor Control Blockset™

要生成代码并部署模型:

  • Motor Control Blockset

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™(仅用于优化代码生成)

前提条件

1.获取电机 1 和电机 2 的电机参数。我们为 Simulink® 模型提供了默认的电机参数,您可以将其替换为电机数据表或其他来源中的值。

但是,如果您有电机控制硬件,您可以使用 Motor Control Blockset 参数估计工具来估计您要使用的电机的参数。有关说明,请参阅

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

在本例中,更新模型初始化脚本中两个电机的电机参数。

仿真模型

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

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

2.点击仿真选项卡上的运行按钮以仿真模型。

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

4.为电机 1 输入不同的速度参考值,为电机 2 输入不同的电流参考值(负载)。在数据检查器中观察测量速度和其他记录的信号。

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

本节指导您生成代码并在目标硬件上运行 FOC 算法。

该示例使用主机模型和目标模型。主机模型是控制器硬件板的用户界面。您可以在主机上运行主机模型。使用主机模型的前提条件是将目标模型部署到控制器硬件板上。主机模型使用串行通信来命令目标 Simulink® 模型,并在闭环控制中运行电机。

所需硬件

该示例支持此硬件配置。您还可以使用目标模型名称,从 MATLAB® 命令提示符打开相应硬件配置的模型。

有关前面硬件配置的连接,请参阅 硬件连接

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

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

2.完成硬件连接。

3.该模型会自动计算 ADC(或电流)偏移值。要禁用此功能(默认启用),请在模型初始化脚本中将变量 inverter.ADCOffsetCalibEnable 的值更新为 0。

或者,您可以计算 ADC 偏移值,并在模型初始化脚本中手动更新它。有关说明,请参阅基于 C2000 处理器的三相交流电机开环控制

4.计算正交编码器索引偏移值,并在与目标模型关联的模型初始化脚本中更新该值。有关说明,请参阅Quadrature Encoder Offset Calibration for PMSM Motor

在本例中,更新初始化脚本中 pmsm_motor1.PositionOffset 和 pmsm_motor2.PositionOffset 变量的 QEP 偏移值。

5.打开目标模型。如果要更改该模型的默认硬件配置设置,请参阅 模型配置参数 (Motor Control Blockset)

6.为确保 CPU2 不会错误地配置为使用 CPU1 的板载外设,请将示例程序加载到 LAUNCHXL-F28379D 的 CPU2 中,例如,使用 GPIO31 操作 CPU2 蓝色 LED 的程序 (c28379D_cpu2_blink.slx)。

注意

  • 对于双 CPU 模型,您必须将 CPU1 和 CPU2 模型构建并下载到处理器的相应核心。每个核心控制双电机控制套件中的一个电机。两个核心通过进程间通信 (IPC) 进行通信。CPU1 模型向 CPU2 发送负载扭矩请求。CPU2 向 CPU1 发送要记录的数据。

  • 代码部署完成后,应在 Launchpad 上执行完全断电重启,以确保代码正确执行。

7.硬件选项卡上点击编译、部署和 启动,将模型部署到硬件上。

8.点击目标模型中的主机模型超链接,打开关联的主机模型。以下是主机模型:

您还可以使用 open_system 命令打开主机模型:

9.将模型 mcb_pmsm_foc_host_model_dyno_f28379d 中以下模块的参数 Port 设置为与主机的 COM 端口匹配。同样,您也可以对本示例中的其他主机模型执行相同的配置:

  • mcb_pmsm_foc_host_model_dyno_f28379d > 主机串行设置。

  • mcb_pmsm_foc_host_model_dyno_f28379d > 串行通信 > 主机串行接收。

  • mcb_pmsm_foc_host_model_dyno_f28379d > 串行通信 > SCI_TX > 主机串行发送。

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

11.电机 1 开关的位置更改为启动,以运行电机。

12.更新主机模型中的电机 1 - 参考转速 (RPM)电机 2 - 参考电流 (A)

13.选择要监视的调试信号,以便在主机模型的 Time Scope 模块中观察它们。

其他可以尝试的操作

您还可以使用 SoC Blockset™ 为双电机设置开发实时电机控制应用程序,该应用程序利用多个处理器内核来实现设计模块化、提高控制器性能以及其他设计目标。有关详情,请参阅Integrate MCU Scheduling and Peripherals in Motor Control Application