Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

使用 Field Oriented Control Autotuner 调节 PI 控制器

此示例通过使用 Field Oriented Control Autotuner 模块计算转速和电流控制环中可用的 PI 控制器的增益值。有关此模块的详细信息,请参阅Field Oriented Control Autotuner。有关磁场定向控制的详细信息,请参阅磁场定向控制 (FOC)

使用示例的代码生成功能将增益调节算法部署到目标硬件。这使您能够使用连接到电机的硬件来运行算法,并通过在目标硬件上实时处理电机反馈来计算精确的 PI 控制器增益。该示例使用正交编码器来测量转子位置。

注意:此示例使用磁场定向控制算法作为参考。您可以参考此示例,并使用类似的方法将 Field Oriented Control Autotuner 模块和增益调节算法添加到模型中可用的 FOC 逻辑中。

模型

该示例包括目标模型 mcb_pmsm_foc_autotuner_f28379d

此模型既可用于仿真,也可用于代码生成。使用 open_system 命令打开模型。

open_system('mcb_pmsm_foc_autotuner_f28379d.slx');

Field Oriented Control Autotuner 模块以迭代方式调节 dq 轴电流控制和转速控制环,并计算电流和转速 PI 控制器的增益。使用以下命令定位模型内可用的 Field Oriented Control Autotuner 模块:

open_system('mcb_pmsm_foc_autotuner_f28379d/Current Control/Control_System/Closed Loop Control/FOC_Autotuner/FOC_Autotuner');

该模块处理来自被控对象的电流和转速反馈。它还处理 dq 轴电流 PI 控制器的电压输出,以计算 PI 控制器增益(KpKi)。

有关 FOC 架构的更多详细信息,请参阅磁场定向控制 (FOC)

必需的 MathWorks® 产品

要仿真模型,您需要:

  • Motor Control Blockset™

  • Simulink Control Design™

  • Stateflow®(仅在修改示例模型时才需要)

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

  • Motor Control Blockset

  • Simulink Control Design

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Stateflow(仅在修改示例模型时才需要)

仿真和硬件部署的前提条件

1.打开目标模型的模型初始化脚本。检查并更新脚本中可用的电机、逆变器和其他控制系统与硬件参数。有关定位和编辑与目标模型相关联的模型初始化脚本的说明,请参阅估计控制增益和使用工具函数

2.在模型初始化脚本的 Inverter & Target Parameters 部分,确认 mcb_SetInverterParameters 函数使用参数 BoostXL-DRV8305。这使得脚本能够使用 BOOSTXL-DRV8305 逆变器的预编程的参数。

3.在模型初始化脚本中正确配置以下参数。这些变量对于以增益调节算法计算 PI 控制器增益是必不可少的。如果这些变量的值不正确,模型可能无法使电机达到稳定转速状态。

  • pmsm.p

  • pmsm.I_rated

  • pmsm.PositionOffset

  • pmsm.QEPSlits

4.如果您使用的电机未在 mcb_SetPMSMMotorParameters 函数(在模型初始化脚本的 System Parameters // Hardware parameters 部分中使用)中列出,请调节模型初始化脚本的 Initial PI parameters 部分中可用的以下初始增益的默认值。这会确保电机达到转速控制运行的稳定状态:

  • PI_params.Kp_Id

  • PI_params.Ki_Id

  • PI_params.Kp_Iq

  • PI_params.Ki_Iq

  • PI_params.Kp_Speed

  • PI_params.Ki_Speed

当您在目标硬件上仿真或运行该示例时,该示例使用 PI 控制器增益的粗略值来实现转速控制运行的稳定状态。

注意:使用此示例时,如果电机(无论它是否在 mcb_SetPMSMMotorParameters 函数中列出)不运行,请尝试调节这些参数的默认值。

5.在模型初始化脚本的 FOC Autotuner parameters 部分,检查并更新 Field Oriented Control Autotuner 模块的参数。这会为转速和电流 PI 控制器设置参考带宽和相位裕度值。

仿真目标模型

仿真示例是可选的。请按照以下步骤仿真目标模型:

1.打开目标模型。

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

3.观测 mcb_pmsm_foc_autotuner_f28379d/Current Control/PI_Params_Display_and_Logging 子系统中可用的 Display 模块中计算出的 PI 控制器增益值。

计算出的增益可能不准确,因为“仿真和硬件部署的前提条件”一节的步骤 3 仅检查四个电机参数的准确性。

如果您要使用仿真来计算和测试 PI 控制器增益,则在点击目标模型的仿真选项卡上的运行之前,请按照以下步骤操作。

  • 在模型初始化脚本的 System Parameters // Hardware parameters 部分,确认 mcb_SetPMSMMotorParameters 函数使用的是表示您的电机的参数(例如 Teknic2310P)。打开 mcb_SetPMSMMotorParameters 函数,查看存储常用 PMSM 电机参数的预编程用例。

如果 mcb_SetPMSMMotorParameters 函数没有列出您的 PMSM,请使用以下步骤确定您的电机参数:

参数估计工具使用估计的电机参数更新 motorParam 变量(在 MATLAB® 工作区中)。

  • 如果从数据表或其他来源获得电机参数,请在模型初始化脚本中添加和配置电机参数。这些参数值会覆盖函数 mcb_SetPMSMMotorParameters 中所选的预编程用例。

如果使用参数估计工具,请不要直接在模型初始化脚本中更新电机参数。该脚本会从工作区更新后的 motorParam 变量自动提取电机参数。

在仿真目标模型并确定增益后,使用计算出的增益值更新模型(用于实现 FOC)以使电机快速达到稳定转速状态。

将示例部署到目标硬件,通过使用连接到电机的实际硬件来更精确地调节 PI 控制器增益。有关更多详细信息,请参阅“生成代码并将模型部署到目标硬件”一节。

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

本节介绍如何生成代码并在目标硬件上运行算法来调节 PI 控制器增益。通过在硬件上运行此示例,您可以实时处理来自物理被控对象的反馈,从而更准确地计算 PI 控制器增益。

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

必需的硬件

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

LAUNCHXL-F28379D 控制器 + BOOSTXL-DRV8305 逆变器:mcb_pmsm_foc_autotuner_f28379d

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

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

1.完成硬件连接。

2.该模型自动计算模数转换器 (ADC) 偏移量(也称为电流偏移量)。要禁用此功能(默认情况下启用),请在模型初始化脚本中将变量 inverter.ADCOffsetCalibEnable 的值更新为 0

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

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

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

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

6.点击硬件选项卡上的编译、部署和启动以将目标模型部署到硬件上。

7.点击目标模型中的主机模型超链接以打开关联的主机模型。您也可以使用 open_system 命令打开主机模型。

open_system('mcb_host_autotuner_f28379d.slx');

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

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

9.Motor 滑块开关切换到 Start 位置以开始运行电机。

10.更新 Speed Ref [RPM] 字段中的参考转速值。建议您使用大约为电机额定转速一半的值。

11.Debug signals 部分中,选择 Speed_Ref & Speed_Feedback 并监控 SelectedSignals 时间示波器内的转速信号。等待电机达到稳定转速。

该示例只能在稳定转速状态下开始调节。

12.检查 PI Parameters 滑块开关是否处于 Autotuner 位置。

13.Autotuner 滑块开关切换到 Start 位置以开始自动调节 PI 控制器增益。调节过程根据控制器输出中的控制器目标(带宽和相位裕度)引入扰动。该示例使用系统对扰动的响应来计算最优控制器增益值。

该模型在电机上以迭代方式执行这些测试,并为电流和转速 PI 控制器确定一组精确的 KpKi 增益。

Tuning Status 显示将状态从 Tuning not started 更改为 Tuning in progress

注意:在调节过程中,确保 PI Parameters 滑块开关保持在 Autotuner 位置。

14.当调节过程成功完成时,Tuning Status 显示会将状态从 Tuning in progress 更改为 Tuning complete

目标模型用计算出的 KpKi 增益更新目标硬件上运行的转速和电流 PI 控制器。此外,主机模型会显示这些值。

15.如果增益调整算法在调节过程中遇到错误,Tuning Status 显示画面会显示 Tuning failed。将 Autotuner 滑块开关切换到 Stop 位置,并参阅故障排除部分来了解故障排除说明。

16.如果您成功完成调节过程,请将 Autotuner 滑块开关切换到 Stop 位置。

17.验证计算出的增益值。有关说明,请参阅验证计算的 PI 控制器增益一节。

验证计算的 PI 控制器增益

1.检查电机是否正在运行,以及 PI Parameters 滑块开关是否处于 Autotuner 位置。

2.在主机模型的 Debug signals 部分中选择 Speed_Ref & Speed_Feedback 调试信号。

3.打开 SelectedSignals 时间示波器以监控参考转速和转速反馈信号。

4.Speed Ref [RPM] 字段中更新参考转速(用于您的电机控制应用),并监控时间示波器中的信号。

5.SelectedSignals 窗口中,导航到工具 > 测量并选择游标测量以显示游标测量区域。

6.将游标 -1 拖到 Speed_Ref 曲线中指示零转速的位置,正位于 Speed_ref 上升曲线之前)。将游标 -2 拖到 Speed_FeedbackSpeed_Ref 第一次相交的位置。

ΔT 表示 FOC 算法的实际响应时间(电机从零参考转速达到 100% 参考转速所用的时间)。

7.对于转速 PI 控制器,使用模型初始化脚本中可用的 PI_params.SpeedBW 变量来确定转速 PI 控制器的带宽。使用以下关系式计算理论响应时间:

$$Response{\rm{\_}}time = \left( {{2 \over {PI{\rm{\_}}params.SpeedBW}}} \right)$$

将理论 Response_time 与实际响应时间 ΔT 进行比较,以验证转速 PI 控制器增益。

同样,您可以通过分析 dq 电流 PI 控制器的阶跃响应来验证电流 PI 控制器增益。

故障排除

按照以下步骤进行操作,对失败的增益调节实例进行故障排除。

1.确定调节过程失败的环路(d 电流、q 电流或转速)。

目标模型按以下顺序调节 PI 控制器:

d 电流控制器 → q 电流控制器 → 转速控制器

此顺序中一个控制器的调节失败会导致后续控制器的增益调节不正确。

使用主机模型中可用的 Display 模块检查计算出的三个控制器的增益。KpKi 控制器增益为零值表示对应控制器的调节过程失败。

针对上述顺序中调节失败的第一个 PI 控制器,执行以下后续步骤。

2.Debug signals 部分中,为在步骤 1 中确定的控制器选择控制器参考和反馈信号(例如,q 电流控制器的 Iq_Ref & Iq_Feedback),并打开 SelectedSignals 时间示波器。

3.检查 PI Parameters 滑块开关是否处于 Autotuner 位置。

4.Autotuner 滑块开关切换到 Start 位置以再次运行调节过程。

5.SelectedSignals 时间示波器内,监控在步骤 1 中确定的控制器的反馈信号(例如 Iq_Feedback)。

情形 1:如果控制器反馈信号的峰值满足以下条件之一,请按照以下步骤操作:

  • 值太高(大于 1)

  • 值太低(电流控制器的值小于 PI_params.CurrentSineAmp,转速控制器的值小于 PI_params.SpeedSineAmp

注意:PI_params.CurrentSineAmpPI_params.SpeedSineAmp 变量在模型初始化脚本中定义。

a.如果在步骤 1 中确定的控制器是 dq 电流控制器,则修改 PI_params.CurrentSineAmp 变量,使其小于控制器反馈信号的峰值。

b.如果在步骤 1 中确定的控制器是转速控制器,则修改 PI_params.SpeedSineAmp 变量,使其小于控制器反馈信号的峰值。

c.Autotuner 滑块开关切换到 Stop 位置,然后切换到 Start 位置以再次运行调节过程。

情形 2:如果控制器反馈信号的峰值在以下范围内,请按照下列步骤操作:

  • $\left[ {PI{\rm{\_}}params.CurrentSineAmp,1} \right]$(针对电流控制器)

  • $\left[ {PI{\rm{\_}}params.SpeedSineAmp,1} \right]$(针对转速控制器)

注意:PI_params.CurrentSineAmpPI_params.SpeedSineAmp 变量在模型初始化脚本中定义。

a.更新模型初始化脚本 FOC Autotuner parameters 部分中的 Field Oriented Control Autotuner 模块(用于设置参考带宽和相位裕度值)的参数。

b.Autotuner 滑块开关切换到 Stop 位置,然后切换到 Start 位置以再次运行调节过程。