Main Content

使用级联 PI 控制器进行 BLDC 电机转速控制

此示例显示在 Simulink 中为现有被控对象调节 PID 控制器的几种方法之一。此处,您需要使用 Closed-Loop PID Autotuner 模块来调节以级联配置方式连接的两个 PI 控制器。Autotuner 模块会扰动被控对象,并基于在期望带宽附近估计的被控对象频率响应来执行 PID 调节。与 Open-Loop PID Autotuner 模块相比,此处反馈环保持闭合,初始控制器增益在自动调节过程中不变。

BLDC 电机模型

此示例中的模型使用一个三相 BLDC 电机,它与一个降压变换器和一个三相逆变器电源链路耦合。降压变换器用 MOSFET 进行建模,逆变器用 IGBT 而不是用理想开关进行建模,以便正确表示设备的导通电阻和特性。DC-DC 变换器链路和逆变器的电压都可以通过更改控制电机转速的半导体门触发器来控制。

mdl = 'scdbldcspeedcontrol';
open_system(mdl)

电机模型参数如下。

p    = 4;        % Number of pole pairs
Rs   = 0.1;      % Stator resistance per phase           [Ohm]
Ls   = 1e-4;     % Stator self-inductance per phase, Ls  [H]
Ms   = 1e-5;     % Stator mutual inductance, Ms          [H]
psim = 0.0175;   % Maximum permanent magnet flux linkage [Wb]
Jm   = 0.0005;   % Rotor inertia                         [Kg*m^2]
Ts  = 5e-6;      % Fundamental sample time               [s]
Tsc = 1e-4;      % Sample time for inner control loop    [s]
Vdc = 48;        % Maximum DC link voltage               [V]

该模型预配置为具有包含两个级联 PI 控制器的稳定闭环操作,一个控制器用于内部直流母线电压环,一个用于外部电机转速环。

Kpw = 0.1;    % Proportional gain for speed controller
Kiw = 15;     % Integrator gain for speed controller
Kpv = 0.1;    % Proportional gain for voltage controller
Kiv = 0.5;    % Integrator gain for voltage controller

测试跟踪性能的信号是一系列速度斜坡信号,分别为 0-500 RPM、500-2000 RPM 和 2000-3000 RPM。用初始控制器增益仿真模型显示跟踪响应缓慢,表明需要重新标定控制器。

open_system([mdl '/Visualization/RPM (Outer)'])
sim(mdl)

配置 Closed-Loop PID Autotuner 模块

在此示例中,您可以使用 Closed-Loop PID Autotuner 模块来改进控制器性能。这些模块在试验过程中估计闭环状态下的被控对象频率响应,然后调节控制器增益。检查控制子系统以查看 Autotuning Speed 和 Autotuning Voltage 子系统中的 Closed-Loop PID Autotuner 模块。

open_system([mdl '/Control'])

按照典型的级联环路调节做法进行操作,首先在外部转速环打开的状态下调节内部电压环。然后,在内部电压环闭合的情况下,调节外部转速环。

要指定 PID 控制器的调节要求,请使用每个 PID 自动调节器模块的调节选项卡上的参数。在此示例中,控制器是并行的离散时间 PI 控制器。控制器采样时间为 100 微秒。

两个控制器的 60 度目标相位裕度能够在性能和稳健性之间实现良好的平衡。

对于外环控制器,请选择 100 弧度/秒的目标带宽。对于内环控制器,请选择 400 弧度/秒的估计目标带宽。这些值可确保内环控制器的响应比外环控制器的响应更快。

Closed-Loop PID Autotuner 模块会执行闭环试验以获得被控对象频率响应。您可以在模块参数的试验选项卡上为此试验指定参数。此处,被控对象符号,因为当被控对象达到新稳态时,标称工作点的被控对象输入端的正变化导致被控对象输出端也产生正变化。如此示例中所示,当被控对象稳定时,被控对象符号等效于其 DC 增益的符号。

对于自动调节过程中注入的正弦波的振幅,使用 1 来确保被控对象被适当激励,同时保持在被控对象饱和范围内。如果选择的振幅太小,则自动调节器模块很难将响应信号与来自电力电子电路的波纹区分开来。

调节内环 PI 控制器

要调节级联控制器,请首先针对调节内部电压环设置模型,然后再针对外部转速环进行设置。

要启用内环控制器的调整过程,请在 Autotuning Voltage 子系统中,将 Tune Inner Voltage Loop 常量模块值设置为 1。设置此值会打开外环并将内环配置为改用常量标称电压参考值 12.5。

set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','1')

此外,要禁用外环调节,请将 Outer Speed Loop 常量模块值设置为 0。

set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0')

此设置会启用 Closed-Loop PID Autotuner 模块,该模块配置为运行 1 至 1.8 秒仿真时间的闭环调节试验。被控对象用第一秒达到稳态工况。闭环试验持续时间的良好估计值为 $200/{b_t}$,其中 ${b_t}$ 是目标带宽。您可以使用 Closed-Loop PID Autotuner 模块的 % conv 输出来监控试验进度,并在 % conv 信号稳定在接近 100% 时停止试验。

运行仿真。当试验结束时,Closed-Loop PID Autotuner 模块会返回内部电压环的调节后的 PID 控制器增益。模型将它们作为 VoltageLoopGains 数组发送到 MATLAB 工作区。

close_system([mdl '/Visualization/RPM (Outer)'])
open_system([mdl '/Visualization/VDC (Inner)'])
sim(mdl)

用新增益更新内环 PI 控制器。

Kpv = VoltageLoopGains(1);
Kiv = VoltageLoopGains(2);

调节外环 PI 控制器

接下来,调节外部转速环。在 Autotuning Voltage 子系统中,将 Tune Inner Voltage Loop 常量模块值更改为 0,这将禁用内部电压环调节。内环控制器使用新调节的增益 KpvKiv

set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','0')

同样,在 Autotuning Speed 子系统中,将 Tune Outer Speed Loop 常量模块值更改为 1,这将启用外部转速环调节。对于此环路,请使用 0.9 秒的闭环自动调节持续时间,从 1 秒处开始。调节的标称转速为 2000 RPM。

set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','1')

再次运行仿真。当试验结束时,Closed-Loop PID Autotuner 模块会返回外部转速环的调节后的 PID 控制器增益。模型将它们作为 SpeedLoopGains 数组发送到 MATLAB 工作区。

close_system([mdl '/Visualization/VDC (Inner)'])
open_system([mdl '/Visualization/RPM (Outer)'])
sim(mdl)

用新增益更新外环 PI 控制器。

Kpw = SpeedLoopGains(1);
Kiw = SpeedLoopGains(2);

在自动调节后提高了跟踪性能

要检查调节后的控制器性能,请禁用两个环路中的调节。

set_param([mdl '/Control/Tune Inner Voltage Loop'],'Value','0')
set_param([mdl '/Control/Tune Outer Speed Loop'],'Value','0')

调节后的增益可以更好地跟踪测试斜坡信号。

sim(mdl)

另请参阅

相关主题