Main Content

使用强化学习的 PMSM 磁场定向控制

此示例说明如何使用强化学习的控制设计方法来实现永磁同步电机 (PMSM) 的磁场定向控制 (FOC)。此示例使用 FOC 原理。不过,它使用强化学习 (RL) 智能体代替 PI 控制器。有关 FOC 的更多详细信息,请参阅磁场定向控制 (FOC)

下图显示具有强化学习智能体的 FOC 架构。有关强化学习智能体的更多详细信息,请参阅Reinforcement Learning Agents (Reinforcement Learning Toolbox)

强化学习智能体调节 d 轴和 q 轴电流,并生成对应的定子电压以按所需的转速驱动电机。

使用强化学习智能体的 FOC 算法的转速跟踪性能与基于 PI 控制器的 FOC 算法的转速跟踪性能类似。

模型

该示例包括 mcb_pmsm_foc_sim_RL 模型。

注意:您只能将此模型用于仿真。

此模型包括使用强化学习智能体的 FOC 架构。您可以使用 openExample 命令打开 Simulink® 模型。

openExample('mcb/FieldOrientedControlOfPMSMUsingReinforcementLearningExample','supportingFile','mcb_pmsm_foc_sim_RL.slx');

打开模型时,它会将包括电机参数在内的配置参数加载到工作区进行仿真。要查看和更新这些参数,请打开 mcb_pmsm_foc_sim_RL_data.m 模型初始化脚本文件。有关此脚本中可用的控制参数和变量的详细信息,请参阅估计控制增益和使用工具函数

通过运行以下命令,您可以访问 Current Controller Systems 子系统中可用的强化学习设置。

open_system('mcb_pmsm_foc_sim_RL/Current Control/Control_System/Closed Loop Control/Current Controller Systems');

有关设置和训练强化学习智能体以控制 PMSM 的详细信息,请参阅Train TD3 Agent for PMSM Control (Reinforcement Learning Toolbox)

注意:

  • 训练强化学习智能体是一个计算密集型过程,可能需要几个小时才能完成。

  • 此示例中的智能体是使用 5KHz 的 PWM 频率训练的。因此,默认情况下模型使用此频率。要更改此值,请使用不同 PWM 频率再次训练强化学习智能体,并更新 mcb_pmsm_foc_sim_RL_data.m 模型初始化脚本中的 PWM_frequency 变量。您可以使用以下命令打开模型初始化脚本。

edit mcb_pmsm_foc_sim_RL_data;

必需的 Mathworks® 产品

  • Motor Control Blockset™

  • Reinforcement Learning Toolbox™

仿真模型

请按照以下步骤仿真模型。

1.点击 mcb_pmsm_foc_sim_RL 以打开此示例附带的模型。

2.运行以下命令以选择 FOC 架构中可用的 Current Controller Systems 子系统的强化学习变体。

ControllerVariant='RL';

您可以导航到 Current Controller Systems 子系统以确认 Reinforcement Learning 子系统变体处于活动状态。

open_system('mcb_pmsm_foc_sim_RL/Current Control/Control_System/Closed Loop Control/Current Controller Systems');

注意:该模型默认选择 Reinforcement Learning 子系统变体。

3.运行以下命令以加载预训练的强化学习智能体。

load('rlPMSMAgent.mat');

注意:此示例中的强化学习智能体训练为使用 0.2、0.4、0.6 和 0.8 PU(标幺)的转速参考值。有关标幺制的信息,请参阅标幺制

4.点击仿真选项卡上的运行来仿真该模型。您也可以运行以下命令对模型进行仿真。

sim('mcb_pmsm_foc_sim_RL.slx');
### The Lq is observed to be lower than Ld. ### 
### Using the lower of these two for the Ld (internal variable)  ### 
### and higher of these two for the Lq (internal variable) for computations. ###
### The Lq is observed to be lower than Ld. ### 
### Using the lower of these two for the Ld (internal variable)  ### 
### and higher of these two for the Lq (internal variable) for computations. ###

5.点击仿真选项卡上的数据检查器以打开仿真数据检查器。选择下列信号中的一个或多个信号,以观测和分析与转速跟踪和控制器性能相关的仿真结果。

  • Speed_ref

  • Speed_fb

  • iq_ref

  • iq

  • id_ref

  • id

在前面的示例中:

  • PI 和强化学习控制器的组合通过跟踪转速参考信号的变化来实现所需的转速。

  • 第二个和第三个数据检查器图显示,经过训练的强化学习智能体充当电流控制器并能成功跟踪 IdIq 参考电流。然而,IdIq 电流的参考值和实际值之间存在微小的稳态误差。

使用仿真来比较 RL 智能体和 PI 控制器

使用以下步骤分析 PI 控制器的转速跟踪和控制器性能,并将其与强化学习智能体的对应性能进行比较:

1.点击 mcb_pmsm_foc_sim_RL 以打开此示例附带的模型。

2.运行以下命令以选择 FOC 架构中可用的 Current Controller Systems 子系统的 PI Controllers 变体。

ControllerVariant='PI';

您可以导航到 Current Controller Systems 子系统以确认 PI Controllers 子系统变体处于活动状态。

open_system('mcb_pmsm_foc_sim_RL/Current Control/Control_System/Closed Loop Control/Current Controller Systems');

注意:该模型默认选择 Reinforcement Learning 子系统变体。

3.点击仿真选项卡上的运行来仿真该模型。您也可以运行以下命令对模型进行仿真。

sim('mcb_pmsm_foc_sim_RL.slx');
### The Lq is observed to be lower than Ld. ### 
### Using the lower of these two for the Ld (internal variable)  ### 
### and higher of these two for the Lq (internal variable) for computations. ###
### The Lq is observed to be lower than Ld. ### 
### Using the lower of these two for the Ld (internal variable)  ### 
### and higher of these two for the Lq (internal variable) for computations. ###

4.点击仿真选项卡上的数据检查器以打开仿真数据检查器。选择下列信号中的一个或多个信号,以观测和分析与转速跟踪和控制器性能相关的仿真结果。

  • Speed_ref

  • Speed_fb

  • iq_ref

  • iq

  • id_ref

  • id

5.将这些结果与使用 RLAgent (Reinforcement Learning) 子系统变体获得的先前仿真运行结果进行比较。

在前面的示例中:

  • 红色信号显示使用 RLAgent (Reinforcement Learning) 子系统变体获得的仿真结果。

  • 蓝色信号显示使用 PIControllers (PI Controllers) 子系统变体获得的仿真结果。

  • 这些图表明,强化学习智能体的性能与 PI 控制器类似(Id 参考电流跟踪除外)。通过进一步训练智能体和调节超参数,您可以提高强化学习智能体的电流跟踪性能。

注意:您还可以将参考转速更新为更高的值,并以上述方式比较强化学习智能体和 PI 控制器之间的性能。