2. 基于Simulink的直流电机PID速度控制

基于Simulink的直流电机PID速度控制 学习卡片

直流电机速度环的建模思路

直流电机在电枢电压 U 到转速 ω 之间的动态特性,可以用电枢回路电气方程与机械转动方程联立描述。忽略粘滞摩擦的非线性后,常用一阶惯性加积分环节近似:

G(s) = ω(s)/U(s) = K / ( (T_e·s + 1)(T_m·s + 1) )

其中 K 为静态增益(rad/s/V),T_e 为电气时间常数,T_m 为机械时间常数。工程上若 T_e ≪ T_m,可进一步简化为 G(s) = K/(T_m·s+1),便于用 PID 快速整定。本例采用简化模型,取教学示例参数:K = 10、T_m = 0.5 s,即 G(s) = 10/(0.5s+1)。

Simulink 模型结构与信号流

速度闭环由四部分组成:阶跃给定 ω_ref、误差求和点、PID 控制器、电机传递函数,以及反馈通道。扰动 T_L 以负载转矩形式叠加在电机输出端,用于检验抗扰能力。下图给出该闭环的信号流与关键观测点。

阶跃给定 ω_ref = 100 Σ + − PID 控制器 Kp=2, Ki=4, Kd=0.05 直流电机 10/(0.5s+1) 负载扰动 T_L t=3s 时阶跃 5 转速输出 ω Scope 观测 反馈通道(单位负反馈) e = ω_ref − ω

PID 参数整定与仿真设置

对一阶对象 G(s)=10/(0.5s+1),采用 PI 即可消除稳态误差,加入少量 D 抑制超调。按经验整定:先取 Kp=2,使开环增益约 20;再取 Ki=4,使积分时间约 0.5 s;Kd=0.05 用于轻微阻尼。仿真参数设置如下:

  • 求解器:ode45,变步长
  • 仿真时长:0 ~ 6 s
  • 最大步长:1e-3 s,保证阶跃与扰动切换处不失真
  • 扰动时刻:t = 3 s,幅值 T_L = 5

关键实现代码(MATLAB 脚本方式)

若不便手动拖拽模块,可用脚本构建等价模型并运行,便于参数扫描与复现:

% 直流电机速度环 PID 仿真
K = 10; Tm = 0.5;
G = tf(K, [Tm 1]);          % 电机模型

Kp = 2; Ki = 4; Kd = 0.05;
C = pid(Kp, Ki, Kd);        % PID 控制器

sys = feedback(C*G, 1);     % 单位负反馈闭环

t = 0:0.001:6;
% 参考阶跃 + 3s 后负载扰动
u_ref = ones(size(t))*100;
dist  = zeros(size(t)); dist(t>=3) = 5;

% 扰动经电机模型作用到输出
y_ref = lsim(sys, u_ref, t);
y_dis = lsim(feedback(G, C), dist, t);
y = y_ref + y_dis;

plot(t, y, 'LineWidth', 1.5);
xlabel('时间 (s)'); ylabel('转速 \omega (rad/s)');
grid on; title('直流电机 PID 速度闭环响应');

结果判读与验证要点

指标期望表现判读依据
上升时间约 0.3 ~ 0.5 s从 10% 到 90% 稳态值的时间
超调量< 10%峰值与稳态值之差除以稳态值
稳态误差≈ 0t > 2 s 后输出稳定在 100 rad/s
抗扰恢复3 s 后短暂跌落,1 s 内回到 100扰动后输出最低点与恢复时间
若超调过大,先减小 Kp 或增大 Kd;若稳态误差消除慢,适当增大 Ki,但需注意积分饱和。
扰动叠加位置必须与电机输出端一致,否则抗扰性能判读会失真;反馈通道必须保持单位负反馈,否则稳态值会偏离给定。