2. 基于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 以负载转矩形式叠加在电机输出端,用于检验抗扰能力。下图给出该闭环的信号流与关键观测点。
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% | 峰值与稳态值之差除以稳态值 |
| 稳态误差 | ≈ 0 | t > 2 s 后输出稳定在 100 rad/s |
| 抗扰恢复 | 3 s 后短暂跌落,1 s 内回到 100 | 扰动后输出最低点与恢复时间 |
若超调过大,先减小
Kp 或增大 Kd;若稳态误差消除慢,适当增大 Ki,但需注意积分饱和。扰动叠加位置必须与电机输出端一致,否则抗扰性能判读会失真;反馈通道必须保持单位负反馈,否则稳态值会偏离给定。