2. 速度环数学模型:从电机方程到PI控制器的传递函数推导
做速度环调参,不懂数学模型,就像开车不看仪表盘——也能跑,但心里没底。这一章,我带你把电机方程到PI控制器的传递函数,一步步捋清楚。
说实话,我刚入行那会儿,也觉得数学推导太枯燥。直到有一次,一个伺服系统在低速时抖得厉害,我调了三天参数都没搞定。后来静下心来,把传递函数画了一遍,才发现是反电动势补偿没做对。嗯,从那以后,我再也不敢跳过数学模型了。
核心观点:速度环的数学模型,本质上是把电机的物理特性(转动惯量、阻尼、反电动势)和PI控制器的数学特性(比例、积分)用传递函数统一表达。你理解了它,调参就不再是“瞎蒙”。
2.1 直流电机的动态方程
我们先从最简单的直流电机开始。你想想看,一个电机转起来,受哪些力?
- 电磁转矩:电流产生的驱动力,Te = Kt · i
- 负载转矩:外部施加的阻力,TL
- 阻尼转矩:轴承摩擦、风阻等,B · ω
- 惯性转矩:转子加速需要的力,J · dω/dt
根据牛顿第二定律(旋转形式):
J · dω/dt = Te - TL - B · ω
其中:
- J —— 转动惯量(kg·m²)
- ω —— 角速度(rad/s)
- B —— 阻尼系数(N·m·s/rad)
- Kt —— 转矩常数(N·m/A)
再看电枢回路。电机旋转时,会产生反电动势 e = Ke · ω,其中 Ke 是反电动势常数(V·s/rad)。对于理想电机,Kt = Ke,这个后面会用到。
电枢电压方程:
u = R · i + L · di/dt + Ke · ω
这里 u 是电枢电压,R 是电枢电阻,L 是电枢电感。这两个方程,就是电机动态特性的“DNA”。
2.2 拉普拉斯变换与传递函数
把上面两个方程拉到复频域(s域)处理,会清爽很多。为什么要做拉普拉斯变换?因为微分方程变成代数方程,乘除关系一目了然。
假设初始条件为零,对两个方程做拉普拉斯变换:
J · s · Ω(s) = Kt · I(s) - TL(s) - B · Ω(s)
U(s) = R · I(s) + L · s · I(s) + Ke · Ω(s)
整理一下,从电压 U(s) 到转速 Ω(s) 的传递函数,需要消去中间变量 I(s)。
从第一个方程解出 I(s):
I(s) = (J · s + B) · Ω(s) / Kt + TL(s) / Kt
代入第二个方程,并令 TL(s) = 0(空载情况),得到:
U(s) = (R + L·s) · [(J·s + B) · Ω(s) / Kt] + Ke · Ω(s)
整理后,电机本体传递函数为:
Gmotor(s) = Ω(s) / U(s) = Kt / [(L·s + R)(J·s + B) + Kt·Ke]
个人经验:实际项目中,电气时间常数 τe = L/R 通常远小于机械时间常数 τm = J/B。所以很多时候,我们可以忽略电感 L 的影响,把电机简化为一阶惯性环节。但如果你做的是大功率直驱电机,L 就不能省了——我吃过这个亏。
2.3 PI控制器的传递函数
速度环最常用的控制器就是PI。为什么不用纯P?因为纯比例控制会有静差,你想想看,负载一变,转速就回不到设定值。积分项就是用来消除这个静差的。
PI控制器的时域表达式:
u(t) = Kp · e(t) + Ki · ∫e(t)dt
其中 e(t) = ωref(t) - ω(t) 是速度误差。
拉普拉斯变换后:
C(s) = U(s) / E(s) = Kp + Ki / s
写成更常用的形式:
C(s) = Kp · (1 + 1 / (Ti · s))
其中 Ti = Kp / Ki,称为积分时间常数。
| 参数 | 物理含义 | 增大效果 | 减小效果 |
|---|---|---|---|
| Kp(比例增益) | 对误差的即时响应强度 | 响应变快,但容易超调 | 响应变慢,稳态误差增大 |
| Ki(积分增益) | 对误差累积的消除速度 | 静差消除快,但可能振荡 | 静差消除慢,系统更稳定 |
| Ti(积分时间) | 积分作用的快慢尺度 | 积分作用减弱 | 积分作用增强 |
2.4 速度环闭环传递函数
把PI控制器和电机串起来,就构成了速度环的开环传递函数:
Gopen(s) = C(s) · Gmotor(s)
如果忽略电感 L(工程上常见简化),电机传递函数简化为:
Gmotor(s) ≈ Kt / (R · (J·s + B) + Kt·Ke)
令总等效阻尼 Beq = B + Kt·Ke/R,等效增益 Km = Kt/R,则:
Gmotor(s) = Km / (J·s + Beq)
开环传递函数:
Gopen(s) = Kp · (1 + 1/(Ti·s)) · Km / (J·s + Beq)
闭环传递函数(单位负反馈):
Gclose(s) = Gopen(s) / (1 + Gopen(s))
展开后是一个典型的二阶系统。它的自然频率 ωn 和阻尼比 ζ,直接决定了速度环的动态响应特性。
避坑指南:我曾经在一个项目中,直接套用这个简化模型去调一个低速大扭矩电机,结果系统一直振荡。后来发现,那个电机的电感 L 很大,简化模型忽略了 L,导致相位裕度计算严重偏差。所以,简化模型只适用于电气时间常数远小于机械时间常数的场合。拿不准时,老老实实用完整模型。
2.5 知识体系总览
下面这张图,把整个推导脉络串起来了。你可以把它当作本章的“地图”。
2.6 从传递函数看调参方向
有了闭环传递函数,我们就能从数学上理解:为什么调 Kp 和 Ki 会有那些效果。
对于简化后的二阶系统,闭环传递函数可以写成标准形式:
Gclose(s) = ωn² / (s² + 2ζωn·s + ωn²)
其中:
- ωn —— 自然频率,决定响应速度
- ζ —— 阻尼比,决定超调和振荡
Kp 主要影响 ωn,Ki 主要影响 ζ。具体来说:
- 增大 Kp:ωn 变大,响应变快,但 ζ 变小,超调增大,甚至振荡
- 增大 Ki:ζ 变小,积分作用增强,静差消除快,但相位裕度下降,容易低频振荡
我的调参习惯:先给一个较小的 Ki(或者先设为零),只调 Kp 让系统达到临界稳定的边缘——就是刚刚开始持续振荡的那个点。记下这个 Kp 值,然后取它的 0.4~0.6 倍作为最终 Kp。再加入 Ki,从零逐渐增大,直到静差消除且不产生低频振荡。这个方法,其实就是 Ziegler-Nichols 整定法的变种,我用了十几年,屡试不爽。
当然,实际系统还有电流环延时、采样延时、滤波器等因素,会让模型更复杂。但有了这个基础模型,你至少知道:调参不是乱调,每个旋钮都有它的数学含义。