加载中…
直流电机 PID 控制
本案例演示如何构建 基于传递函数的直流电机转速闭环控制系统,采用前馈补偿与抗饱和 PID 控制策略,实现高精度、快响应的电机调速。
系统通过双通道驱动架构,在保证动态性能的同时消除稳态误差。
直流电机由电枢回路和机械转动子系统耦合构成。
电枢回路电压方程:
Va(t)=Raia(t)+Ladtdia(t)+KeΩ(t)
机械转矩平衡方程:
Ktia(t)=Jdtd
其中 Va 为驱动电压,Ω 为转子角速度,Kt 为转矩常数,K 为反电动势常数, 为转动惯量, 为摩擦系数。
传递函数推导:
消去电流变量后得到标准二阶形式:
G(s)=Va
系统采用并联驱动结构,兼顾响应速度与抗扰能力。
前馈通道:
Vff(s)=ωref(s)⋅
直接根据参考转速生成基准驱动电压,实现快速无超调响应
PID 通道:
Vpid(s)=(Kp+
通过比例-积分-微分调节补偿模型误差与外部扰动
总控制量:
Vcontrol(s)=Vff(s)+
当控制电压超出限幅范围时,激活抗饱和回路以抑制积分器饱和:
x˙i=Kie−K
系统采用模块化设计,模型结构如图:
| 功能模块名称 | 参数变量 | 配置值 | 说明 |
|---|
| 目标转速设定 | omega_ref | 2000 | 目标转速 (rpm) |
| t_step | 1.0 | 阶跃发生时间 (s) |
| 电机传递函数 | Kt | 0.3 | 转矩常数 (N·m/A) |
| Ke | 0.05 | 反电动势常数 (V/(rad/s)) |
| Ra | 1.2 | 电枢电阻 (Ω) |
| La | 0.008 | 电枢电感 (H) |
| J | 0.002 | 转动惯量 (kg·m²) |
| |
注:K_rpm_per_volt = Kt / (Ra*B + Kt*Ke) * 60/(2*pi) 为电机直流增益 (rpm/V),由原始参数自动计算得出,无需手动配置。
- 稳态误差:≤ 1% × 目标转速
- 电压利用率:≤ 70%(保留动态余量)
- 超调量:≤ 5%
- 调节时间:≤ 1.5 秒(进入 ±2%误差带)
- 抗饱和恢复时间:≤ 0.3 秒
典型响应过程:
- 0-0.2 秒:前馈通道主导,快速接近目标转速
- 0.2-1.0 秒:PID 通道微调,积分器消除剩余误差
- >1.5 秒:进入稳态,PID 输出趋近零,前馈维持转速
实测效果:
- 转速平稳跟踪设定值,静差 < 10 rpm
- 电压输出平滑,无明显饱和现象
- 抗饱和机制在负载突变时快速介入
- 工程原型:24V 直流电机调速系统开发
- 算法研究:PID 参数自整定、智能抗饱和策略
# 1 电机物理参数定义(SI单位)
# 修改以下参数可适配不同电机
Ra = 1.2; # 电枢电阻 (Ω) - 影响稳态电压需求
La = 0.008; # 电枢电感 (H) - 影响电气响应速度
Kt = 0.3; # 转矩常数 (N·m/A) - 影响转矩输出能力
Ke = 0.05; # 反电动势常数 (V/(rad/s)) - 关键:Ke越小,最高转速越高
J = 0.002; # 转动惯量 (kg·m²) - 影响机械响应速度
B = 0.001; # 摩擦系数 (N·m/(rad/s)) - 影响低速性能
# 2 传递函数系数计算
# 根据物理参数自动计算传递函数分子分母
K_motor = Kt; # 传递函数分子 = 转矩常数
a2 = La * J; # 二次项系数:电-机耦合
a1 = Ra * J + La * B; # 一次项系数:系统阻尼
a0 = Ra *
Ω
(
t
)
+
BΩ(t)
e
(
s
)
Ω(s)
=
JLas2+(JRa+BLa)s+(RaB+KtKe)Kt=
a2s2+a1s+a0Kmotor
Kff
,
Kff
=
Krpm1
sKi
+
Kd
s+NNs
)
⋅
e(s)
V
pid
(
s
)
w
⋅
sat(Vcalc−
Vsat)
B
| 前馈控制器 | K_ff | 1/K_rpm_per_volt | 前馈增益 |
| 速度反馈 | K_fb | 1/K_rpm_per_volt | 反馈增益 |
B
+
Kt
*
Ke
;
# 常数项:静态增益分母
# 验证降阶模型(可选)
# 若电气动态远快于机械动态,可忽略电感项:
# a2_simplified = 0;
# a1_simplified = Ra * J;
# a0_simplified = Kt * Ke;
# 3 转速增益计算(rad/s → rpm)
K_rpm = 60 / (2 * pi); # 单位转换系数
# 开环直流增益(关键参数,决定前馈/反馈增益)
K_dc_rad = K_motor / a0; # rad/s/V
K_rpm_per_volt = K_dc_rad * K_rpm; # rpm/V
# 4 前馈/反馈增益设计
# 前馈增益 = 反馈增益 = 1/直流增益,确保稳态无静差
K_ff = 1 / K_rpm_per_volt; # 前馈增益 (V/rpm)
K_fb = 1 / K_rpm_per_volt; # 反馈增益 (V/rpm)
# 5 PID控制器参数(调试区)
# 初始参数(平衡性能)
Kp = 1.0; # 比例增益:影响响应速度
Ki = 3.0; # 积分增益:消除静差,过大会引起超调
Kd = 0.2; # 微分增益:提供阻尼,抑制超调
N = 300; # 微分滤波系数:N越大,微分作用越灵敏
int_init = 0; # 积分器初始值
# 6 抗饱和参数
Kw = 1.0; # 抗饱和增益:0.5~1.0,越大退出饱和越快
V_max = 24; # 电压限幅上限
V_min = -24; # 电压限幅下限
# 7 电机控制目标参数
omega_ref = 2000; # 目标转速 (rpm)
t_step = 1.0; # 阶跃时间 (s)