matlab/simulink仿真BLDC无刷直流电机 转速电流双闭环 调速系统
【标题】
Matlab/Simulink 无刷直流电机(BLDC)转速-电流双闭环调速系统建模与仿真
BLDC 电机本身是“多变量、强耦合”系统,单纯的速度环在大惯量或快速加减速工况下极易出现电流冲击、转速超调甚至失步。
采用“转速环(外环)+ 电流环(内环)”的经典串级结构,可获得:
环 路 | 任务 | 控制器 | 采样/执行频率 |
---|---|---|---|
转速环(外) | 产生电流参考 iq* |
PI | 1 kHz |
电流环(内) | 令相电流跟踪 iq* |
PI + 抗饱和 | 10 kHz |
功率级 | 三相全桥 MOSFET | SVPWM | 10 kHz |
new_system('BLDC_DualLoop');
open_system('BLDC_DualLoop');
采用 Simscape Electrical 提供的 BLDC 模块,双击设置:
Number of pole pairs = 4
Stator phase resistance Rs = 0.6 Ω
Stator phase inductance Ls = 1.4 mH
Back-EMF constant Ke = 0.065 V/(rad/s)
Inertia J = 1e-4 kg·m²
Friction Bm = 1e-5 N·m·s/rad
ia, ib, ic
iα, iβ
→ Park 得到 id, iq
% 电流环带宽取开关频率的1/10 即1 kHz
wc_i = 2*pi*1000;
Kp_i = wc_i * Ls % 1.4e-3 * 2*pi*1000 ≈ 8.8
Ki_i = wc_i * Rs % 0.6 * 2*pi*1000 ≈ 3.8e3
在 Simulink 中拖入 Discrete PI Controller,设置 Kp = 8.8
,Ki = 3800
,输出上下限 ±12 A(抗饱和)。
% 目标带宽 50 Hz
wc_n = 2*pi*50;
Kp_n = 0.9 * J * wc_n / Ke % ≈ 0.9*1e-4*314/0.065 ≈ 0.43
Ki_n = 0.9 * Bm * wc_n / Ke % ≈ 0.9*1e-5*314/0.065 ≈ 0.043
同样使用 Discrete PI Controller,采样时间 1 ms,输出上下限 ±10 A(即 iq* 限幅)。
Vd*, Vq*
(这里令 Vd* = 0
,FOC 简化实现)n* = 1500 rpm
(≈ 157 rad/s),通过 Step 模块在 0.2 s 从 0 → 1500 rpm。TL
用 Step,0.4 s 时从 0 → 0.3 N·m。把下面脚本保存为 run_BLDC.m
,放在模型同目录:
%% 参数一次性写入模型
model = 'BLDC_DualLoop';
load_system(model);
% 电机
set_param([model '/BLDC'], 'Rs', '0.6');
set_param([model '/BLDC'], 'Ls', '1.4e-3');
set_param([model '/BLDC'], 'Ke', '0.065');
set_param([model '/BLDC'], 'J', '1e-4');
set_param([model '/BLDC'], 'Bm', '1e-5');
% 电流 PI
set_param([model '/Current PI/Kp'], 'Gain', '8.8');
set_param([model '/Current PI/Ki'], 'Gain', '3800');
% 转速 PI
set_param([model '/Speed PI/Kp'], 'Gain', '0.43');
set_param([model '/Speed PI/Ki'], 'Gain', '0.043');
% 仿真步长
set_param(model, 'FixedStep', '1e-4');
set_param(model, 'StopTime', '0.6');
sim(model);
启动阶段(0–0.2 s)
电流环以 10 A 限幅给电机加速,转速平滑爬升,基本无超调。
稳态阶段(0.2–0.4 s)
转速稳在 1500 rpm,iq 电流 ≈ 0.15 A(空载补偿摩擦)。
负载阶跃(0.4 s)
负载 0.3 N·m 突加,转速跌落 < 30 rpm,恢复时间 ≈ 60 ms,iq 电流阶跃至 4.6 A,与理论 TL/Ke
吻合。