主要内容

使用C2000处理器控制双电机(Dyno)的PMSM

这个例子使用磁场定向控制(FOC)控制两个三相永磁同步电动机(PMSM)耦合在一个动态设置。电机1以闭环速度控制方式运行。电机2在扭矩控制模式下运行,并负载电机1,因为它们是机械耦合的。你可以用这个例子来测试不同负载条件下的电机。

这个例子模拟了两个背靠背连接的电机。您可以使用不同的速度参考电机1和不同的扭矩参考电机2(从电机2参考定子电流的大小和电气位置)。电机1以电机2提供的负载条件的参考速度运行(具有不同的扭矩参考)。

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

电机1和电机2控制算法中的电流控制环被Ts/2偏移,其中Ts为控制环执行速率。

单CPU Dyno型号

该示例包括以下模型:

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

open_system (“mcb_pmsm_foc_sensorless_dyno_f28379d.slx”);

Dual CPU Dyno型号

该示例包括以下模型:

您可以使用mcb_pmsm_foc_dual_cpu1_f28379d和mcb_pmsm_foc_dual_cpu2_f28379d模型进行模拟和代码生成。您也可以使用open_system命令来打开Simulink®模型。万博1manbetx

请注意:双核CPU型号不支持仿真。万博1manbetx

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

open_system (“mcb_pmsm_foc_dual_cpu1_f28379d.slx”);

open_system (“mcb_pmsm_foc_dual_cpu2_f28379d.slx”);

双核处理器的IPC通信

CPU1通过IPC通道向CPU2传输以下数据:

  • 转矩的参考

  • 信号选择

  • 使Motor2 (EnMtr2Ctrl)

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

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

用于Dyno设置的外围块配置

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

  • ePWM块配置ePWM1/2/3被ePWM时间段从ePWM4/5/6偏移。这是通过ePWM3向ePWM4发送同步信号,设置ePWM4的相位偏移值为来实现的目标。PWM_counter_period

  • ADC块配置

本例中的算法使用了异步调度。脉宽调制(PWM)模块触发ADC转换。在转换结束时,ADC发布一个触发主FOC算法的中断。欲了解更多信息,请参考基于中断的ADC调度

单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发射台。

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

3.控件中执行的调度器配置双CPU模型。

注意:

  • 如果是单CPU型号,请确保基准利率引发Timer0

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

4.波特率设置为12e6位/秒。

需要MathWorks®产品s manbetx 845

模拟模型:

  • 电机控制Blockset™

要生成代码和部署模型:

  • 电机控制Blockset™

  • 嵌入式编码器®

  • 德州仪器C2000处理器的嵌入式万博1manbetx编码器支持包

  • 定点设计器™(仅用于优化代码生成)

先决条件

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

然而,如果您有电机控制硬件,您可以通过使用motor control Blockset™参数估计工具来估计想要使用的电机参数。说明,请参阅使用推荐硬件估计PMSM参数(电机控制Blockset)

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

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

模拟模型

这个例子支持模拟。万博1manbetx按照以下步骤模拟模型。

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

2.点击运行模拟TAB来模拟模型。

3.点击数据检查模拟TAB来查看和分析仿真结果。

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

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

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

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

所需的硬件

本示例支持此硬件配置。万博1manbetx也可以使用目标模型名称打开模型对应的硬件配置,从MATLAB®命令提示符。

与上述硬件配置相关的连接请参见硬件连接

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

1.对目标模型进行仿真,观察仿真结果。

2.完成硬件连接。

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

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

4.计算正交编码器索引偏移值,并在与目标模型相关联的模型初始化脚本中更新它。说明,请参阅PMSM电机的正交编码器偏移校准

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

5.打开目标模型。如果您想更改模型的默认硬件配置设置,请参见模型配置参数(电机控制Blockset)

6.为了确保CPU2不会被错误地配置为使用为CPU1准备的单板外设,可以在LAUNCHXL-F28379D的CPU2上加载一个示例程序,例如使用GPIO31 (c28379D_cpu2_blink.slx)操作CPU2蓝色LED的程序。

请注意

  • 对于双CPU模型,必须构建并下载CPU1和CPU2模型到处理器的各个核心。每个核心控制双电机控制套件上的一个电机。两个核之间使用IPC进行通信。CPU1模型向CPU2发送Load Torque请求。CPU2将要记录的数据发送到CPU1。

  • 部署代码后,应该在发射台上进行全部电源复位,以确保代码的正确执行。

7.点击构建、部署和启动硬件选项卡将模型部署到硬件。

8.单击主机模式在目标模型中进行超链接以打开关联的主机模型。这些是下面的主机模型。

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

open_system (“mcb_pmsm_foc_host_model_dyno_f28379d.slx”);

9.在主机型号的Host Serial Setup块掩码中,选择a端口名称

10.点击运行模拟选项卡以运行主机模型。

11.改变位置电机1切换到Start,启动电机。

12.更新电机1 -参考转速(RPM)电机2 - Iq Ref (A)在主机模型中。

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

其他可以尝试的事情

您还可以使用SoC Blockset™为双电机设置开发实时电机控制应用程序,利用多处理器核心获得设计模块化,改善控制器性能,以及其他设计目标。有关详细信息,请参见集成单片机调度和外围设备在电机控制中的应用