2、速度环的数学模型:从电机方程到速度环传递函数
做速度环调试,很多人一上来就调 PID 参数。调来调去,效果不好。为什么?
说白了,你不了解被控对象的脾气。电机就是你的被控对象。它的数学模型,就是它的性格说明书。今天我们就来把这份说明书读懂。
2.1 直流电机的等效电路与基本方程
我们先从最简单的直流电机入手。你想想看,一个直流电机,从电路角度看,就是个电阻串个电感,再反串一个反电动势。
核心方程:电枢回路电压平衡方程
Ua = Ra * Ia + La * dIa/dt + Ea
其中:Ua 是电枢电压,Ra 是电枢电阻,La 是电枢电感,Ia 是电枢电流,Ea 是反电动势。
反电动势 Ea 怎么来的?电机一转起来,转子切割磁感线,自然就产生了。它和转速成正比:
Ea = Ke * ω
Ke 是反电动势系数,ω 是电机角速度。这个公式,我建议你刻在脑子里。很多现场问题,追根溯源都能回到这里。
再说转矩。电机产生的电磁转矩 Te 和电枢电流成正比:
Te = Kt * Ia
Kt 是转矩系数。理想情况下,Ke 和 Kt 在数值上是相等的(SI 单位制下)。嗯,这里要注意,实际电机因为制造工艺,会有微小偏差,但工程上我们通常认为它们相等。
最后是运动方程。电机轴上的转矩平衡:
Te - TL = J * dω/dt + B * ω
TL 是负载转矩,J 是转动惯量,B 是粘性阻尼系数。我在项目中遇到过,很多人把 B 忽略掉,结果高速时模型总对不上。低速可以忽略,高速不行。
2.2 从时域方程到传递函数
有了上面三个方程,我们就可以拉普拉斯变换了。为什么要变换?因为微分方程在时域里解起来太麻烦,到了复频域,乘除就能搞定。
假设初始条件为零,对三个方程分别做拉氏变换:
- 电压方程:Ua(s) = (Ra + La*s) * Ia(s) + Ke * ω(s)
- 转矩方程:Te(s) = Kt * Ia(s)
- 运动方程:Te(s) - TL(s) = (J*s + B) * ω(s)
把这三个方程联立,消去中间变量 Ia(s) 和 Te(s),就能得到从 Ua(s) 到 ω(s) 的传递函数。我习惯先画个框图,理清信号流向,再推导公式。
从框图可以直观看到:电枢传递函数、转矩系数、机械传递函数串联,反电动势构成内部反馈。负载转矩 TL(s) 作为扰动输入。
忽略负载扰动(TL=0),推导传递函数:
ω(s) / Ua(s) = Kt / [ (Ra + La*s) * (J*s + B) + Kt * Ke ]
这个式子看起来有点复杂。但在实际工程中,我们经常做简化。电气时间常数 Te = La/Ra,机械时间常数 Tm = J/B。如果 Te 远小于 Tm(通常如此),我们可以忽略电感 La 的影响。
工程简化:当 La 可忽略时,传递函数简化为:
ω(s) / Ua(s) = (1/Ke) / (Tm * s + 1)
其中 Tm = J * Ra / (Kt * Ke)。这就是一阶惯性环节!
我建议你在做快速原型验证时,先用这个简化模型。等系统跑通了,再考虑更精确的模型。
2.3 速度环的闭环传递函数
有了被控对象模型,我们加上速度环控制器。典型的速度环结构如下:
速度环闭环结构:
ω_ref(s) → [PI控制器] → [被控对象] → ω(s)
↑ |
└──────── 反馈 ──────────┘
PI 控制器的传递函数为:
C(s) = Kp + Ki/s = Kp * (1 + 1/(Ti * s))
其中 Ti = Kp/Ki 是积分时间常数。
闭环传递函数为:
G_cl(s) = C(s) * G(s) / [1 + C(s) * G(s)]
代入简化后的 G(s) = 1/(Ke * (Tm * s + 1)),得到:
G_cl(s) = (Kp * s + Ki) / (Ke * Tm * s² + Ke * s + Kp * s + Ki)
整理成标准二阶系统形式:
G_cl(s) = (2*ζ*ωn * s + ωn²) / (s² + 2*ζ*ωn * s + ωn²)
其中:
| 参数 | 表达式 | 物理意义 |
|---|---|---|
| ωn | √(Ki / (Ke * Tm)) | 自然频率 |
| ζ | (Ke + Kp) / (2 * √(Ki * Ke * Tm)) | 阻尼比 |
看到这里,你应该明白了:速度环的响应速度,本质上由 ωn 和 ζ 决定。ωn 越大,响应越快;ζ 在 0.4~0.8 之间,超调量和响应时间能取得较好的平衡。
避坑指南:我曾经在一个项目中,为了追求快速响应,把 Kp 调得很大。结果 ωn 上去了,但系统出现了高频振荡。后来才发现,我忽略了被控对象的高频未建模动态。记住:数学模型是简化,实际系统有延迟、有饱和、有谐振。调参时一定要留有余量。
2.4 模型参数辨识:理论到实践的桥梁
模型有了,参数怎么来?你不可能每次都去查电机手册。我习惯用实验法辨识。
常用方法:电流阶跃响应法
- 给电机一个恒定的电压阶跃(速度环开环)
- 记录转速响应曲线
- 从曲线上读取稳态值和时间常数
举个例子:
| 步骤 | 操作 | 读取参数 |
|---|---|---|
| 1 | 施加 12V 阶跃电压 | 稳态转速 ω_ss = 300 rad/s |
| 2 | 测量上升到 63.2% 稳态值的时间 | Tm = 0.05 s |
| 3 | 计算 Ke = Ua / ω_ss | Ke = 12 / 300 = 0.04 V·s/rad |
| 4 | 已知 Ra,计算 J | J = Tm * Ke * Kt / Ra |
这个方法虽然粗糙,但足够工程用了。如果你需要更高精度,可以用扫频法或最小二乘拟合。不过说实话,对于大多数速度环应用,阶跃响应法已经能给出可用的参数。
我的经验:辨识出来的参数,不要直接用于控制器设计。我会先做一次仿真,看看闭环响应是否符合预期。如果仿真结果和实际差异大,再回头检查模型。记住:模型是工具,不是真理。现场调试才是最终的检验标准。