直流电机转速环Kp理论计算:从试凑到建模推导
2026/9/16 23:22:59 网站建设 项目流程

手里这个直流电机转速环,从实验2开始就一直在用试凑法调Kp。每换一种负载,就得重新拍一轮参数;每次改Kp,都是“加上去跑一跑,啸叫了就往回退”,跟调收音机旋钮差不多。折腾了几天之后,我决定停下来,把Kp的计算过程老老实实推一遍,至少要让参数从哪里来、能推到什么程度这件事心里有数。

这篇笔记就记录我这次“Kp参数理论计算尝试”的完整过程,包括对象建模、公式推导、边界估算、实验验证,以及最后理论值和实测值差在哪里。整个过程用的是最典型的直流电机转速闭环场景:STM32做控制,霍尔编码器测速,PWM驱动,目标就是让电机转速快速、平稳地跟上设定值。适合正在学PID、卡在调参阶段、或者想知道“Kp到底能不能算出来”的读者参考。

1. 为什么突然想算Kp而不是继续试凑

1.1 试凑法把我折腾惨了

前几轮实验里,我的调参流程基本是:设一个Kp,跑阶跃,看波形,overshoot大了就降,响应慢了就升。听起来很合理,但实际跑起来完全不是那么回事——参数调整互相牵扯,Kp加大响应变快的同时超调变大,一旦负载变化,之前调好的参数瞬间失效。有一次把Kp从2.0加到2.5,电机直接开始持续振荡,声音都变了,只能赶紧断电。

后来复盘才发现,问题不在于“我不会调”,而在于“我没有方向”。试凑法只有在参数空间比较平滑、系统比较接近线性的时候才高效,一旦系统存在非线性摩擦、滞后环节或者测量噪声,试凑就是盲人摸象。

1.2 理论计算的真正价值

做Kp理论计算,不是想一步到位得到完美参数,而是想搞清楚一件事:Kp的合理范围到底在哪里。只要知道这个范围,后面的试凑就不是无头苍蝇,而是在一个“安全区间”里做微调。

这里面有个核心认知:Kp不是拍脑袋拍出来的,它和三个东西有明确的数学关系——被控对象的增益、时间常数、系统等效滞后。只要能把对象模型测出来,Kp就有了一个可以推导、可以验证的理论值基础。

2. 算Kp之前,先把被控对象“摸”清楚

2.1 直流电机转速环为什么可以简化成一阶惯性

对直流电机做转速控制时,电枢回路的电气时间常数通常远小于机械时间常数,电流响应比转速响应快得多。在只关心转速外环的前提下,电流环的动态可以合并掉,电机从“电压/PWM输入”到“转速输出”的特性,近似就是一个一阶惯性环节加一个增益。

数学上写成:

G(s) = K / (Ts + 1)

其中K是开环增益,T是时间常数。这个模型当然不是特别精确,但用来算Kp足够了。工程上有个共识:控制设计先基于简化模型算出范围和方向,再靠实验修正细节,比一上来就用超级精确的模型要高效得多。

2.2 开环阶跃响应实验:测K和T

为了测出K和T,我做了个最简单的开环实验:让电机闭环部分不参与控制,直接给定一个固定PWM占空比,记录转速从零开始变化的曲线。

实验步骤很简单:

  1. 给PWM输出一个阶跃值,我用的是500(对应50%占空比,PWM范围0~1000)。
  2. 用定时器中断以5ms为周期读取编码器速度,串口发到VOFA+上位机。
  3. 等转速稳定后记录稳态值。
  4. 从曲线上找转速到达稳态值63.2%对应的时刻,这个时间就是时间常数T。
  5. 开环增益K = 稳态转速 / 输入PWM值。

为什么是63.2%?因为一阶惯性系统的阶跃响应公式是 y(t) = Ku(1 - e^(-t/T)),当 t=T 时,y(T) = Ku(1 - e^-1) ≈ 0.632 * 稳态值。这是一个非常方便的手工读数方法,不用做曲线拟合也能拿到T的近似值。

2.3 我实测到的数据和安全注意事项

我的电机在PWM=500(50%占空比)下,空载稳定转速约为1200rpm,到达稳态值约758rpm(63.2%)的时刻大约是0.12s。于是:

  • 开环增益 K = 1200 / 500 = 2.4(rpm / PWM单位)
  • 时间常数 T = 0.12s

这里有个单位问题容易栽跟头。控制计算里最怕“单位不统一导致增益算错”,我在实验里把PWM统一映射到0~1000的整数,转速统一用rpm,所以K的单位就是rpm每PWM单位。如果你用百分比PWM,那K的单位会变,推导公式时一定要把单位换算一致。

再提醒一句:开环阶跃实验不要一上来就给100%满占空比,大电流冲击容易把驱动板或电机搞出问题。建议从30%~50%开始,确认曲线规律后再逐步加大。

3. 一阶模型下Kp的推导:快速性约束和精度约束

有了K=2.4、T=0.12s这两个对象参数,Kp就可以从理论上推导了。很多人以为Kp只有一个正确答案,其实Kp是被多个约束条件夹出来的一个范围。在纯一阶模型下,最主要的是两个约束:快速性约束和稳态精度约束。

3.1 快速性约束:期望闭环时间常数反推Kp

采用单位负反馈,闭环传函是:

Φ(s) = Kp * G(s) / (1 + Kp * G(s))

把 G(s) = K/(Ts+1) 代进去:

Φ(s) = KpK / (Ts + 1 + KpK)

整理成一阶标准形式:

Φ(s) = [KpK/(1+KpK)] / [T/(1+Kp*K) * s + 1]

也就是说,闭环时间常数 Tcl = T / (1 + Kp*K)。

这意味着Kp越大,闭环响应越快,而且快多少是能算出来的。我的开环T是0.12s,如果我希望闭环响应比开环快4倍,也就是Tcl = 0.03s,那么:

0.12 / (1 + Kp*2.4) = 0.03

解得:

1 + Kp*2.4 = 4 Kp = 3 / 2.4 = 1.25

这就是第一个理论值:如果只考虑快速性,Kp=1.25可以让转速环比开环快4倍。

3.2 稳态精度约束:稳态误差反推Kp

纯比例控制下,单位负反馈系统对阶跃输入是有稳态误差的。设参考转速为R,稳态误差为:

ess = R / (1 + Kp*K)

可以看到,Kp越大,稳态误差越小。如果我要求稳态误差不超过参考值的10%:

1 / (1 + Kp2.4) < 0.1 1 + Kp2.4 > 10 Kp > 3.75

如果要求误差不超过5%,则需要Kp > 7.9。

到这里就能发现,单纯按快速性算出的Kp=1.25,对应稳态误差是1/(1+3)=25%,实际用起来转速会明显偏低。如果你对精度有要求,Kp就得按稳态误差约束去选更大的值。

3.3 为什么“纯P”永远没法又快又准

把两个约束放在一起看就很清楚了:

  • 稳定精度要求Kp ≥ 3.75(至少)
  • 但要达到这个精度,闭环时间常数会被压到 T/(1+9) = 0.012s,响应快得离谱。

在这条路上继续追下去,会遇到两个现实瓶颈:一是执行机构饱和(PWM输出早就限幅了),二是测量噪声被比例放大。我试过把Kp加到8附近,转速波形看起来响应极快,但电机声音明显发闷,PWM输出长期顶在饱和值上,本质上已经失去了线性控制的意义。

所以纯P控制在工程上的定位是“快速逼近、容忍静差”。如果系统要求无静差,后面必须加积分项。这次Kp理论计算的另一个收获,就是让我彻底理解了“为什么要加积分”——不是有人告诉你该加,而是数学推导直接暴露了纯P的短板。

4. 把滞后算进去:Kp稳定边界的理论值

4.1 实际系统里那些“看不见的滞后”

如果只看一阶模型,Kp无论多大系统都不会发散——因为一阶惯性环节永远不会造成相位过-180度。但实际实验告诉我们,Kp大到一定程度,系统一定会振荡。

因为真实系统不是纯一阶。我粗略梳理了一下,我的系统里至少存在这些“看不见的滞后”:

  1. 速度测量本身有延迟:5ms采样周期,外加一阶低通滤波,等效滞后在10ms量级。
  2. PWM脉宽刷新和驱动器响应不是纯瞬时,有微秒到毫秒级死区时间。
  3. 电流环动态虽然快,但高频时也会贡献相位滞后。
  4. 编码器M法测速在低速时量化误差变大,导致低速段等效增益变化。

这些滞后杂在一起,可以等效成一个纯滞后项 e^(-τs)。实测中,我把等效滞后系数粗估为 τ≈0.025s。这个值不算精确,但量级足够做边界计算。

4.2 相位裕度法求Kp的理论上限

把对象模型修正为:

Gp(s) = K * e^(-τs) / (Ts + 1)

在频域里,开环传函的相位是:

∠Gp(jω) ≈ -arctan(Tω) - ωτ

工程上常用穿越频率法:穿越频率ωc是开环幅值等于1的频率。在这个频率上,系统的相位裕度不能太小,工程上建议在30°~60°之间。

我取45°相位裕度作为设计目标,此时:

  • 相位条件:π/2 - ωc*τ = π/4,推出 ωc = π/(4τ) ≈ 31.4 rad/s
  • 幅值条件:|Kp * K / (1+jTωc)| = 1

代入K=2.4、T=0.12、ωc=31.4:

|1 + jTωc| = sqrt(1 + (0.12*31.4)^2) = sqrt(1 + 14.2) ≈ 3.90

所以:

Kp = 3.90 / 2.4 ≈ 1.63

这就是考虑等效滞后之后的理论Kp推荐值,和我第3节按快速性推出来的1.25非常接近,说明这个系统在1.3~1.6附近是一个合理的Kp工作点。

如果按更保守的30°相位裕度来设计,Kp会到2.1左右;如果按零相位裕度硬推到临界振荡,Kp_max约为3.2左右。所以理论计算给我的最终结论是:Kp安全区间在1.0~2.0,临界点在3.0上下,再大必然振荡。

4.3 理论给出的Kp推荐区间

综合前面所有推导,我得到一个可以直接用于实验的结论:

  • 快速性设计值:Kp ≈ 1.25
  • 稳定边界设计值:Kp ≈ 1.6(45°相位裕度)
  • 临界稳定Kp:约3.2
  • 推荐实际启动范围:Kp = 1.0 ~ 1.6

这个区间的最大意义是,我不需要从Kp=0.1开始一点点往上碰,直接落在1.5附近就能看到接近预期的响应曲线。

5. 上实验台验证:Kp=1.6跑出来的结果

5.1 实验平台配置

验证实验的平台是这样一套东西:

  • 主控:STM32F103,10kHz PWM输出,5ms速度环计算周期
  • 反馈:霍尔编码器AB相,4倍频后每圈共4000个计数
  • 驱动:H桥驱动模块,PWM死区约1μs
  • 上位机:串口把转速和PWM输出发到VOFA+,直接画曲线
  • 负载:先空载,再手动加一个小惯性轮

代码结构就是最经典的位置式PID,只不过这次只启用P环节,Ki和Kd先置0。控制周期到了之后,先读编码器算转速,再算误差,乘以Kp,输出限幅到0~1000,更新PWM。

5.2 实测阶跃响应记录

我先按理论值Kp=1.6加载,给定目标转速1200rpm,记录阶跃响应。实测结果如下表:

Kp超调量稳定时间(±5%)现象
1.0约3%约0.24s响应偏慢,无振荡
1.25约5%约0.20s比较稳,符合快速性预期
1.6约12%约0.18s超调偏大,但能收敛
2.5约28%振荡收敛慢已经有明显振荡征兆
3.2持续振荡不收敛和理论临界值基本吻合

最让我兴奋的是最后一行:临界振荡Kp实测在3.2附近,和相位裕度法推出来的Kp_max几乎没有差别。这说明把系统简化成一阶惯性加等效滞后,对Kp的边界预测是有效的。

5.3 理论值和实测差在哪里

理论推导说Kp=1.6应该有45°相位裕度,理论上超调应该在20%左右,实测超调12%,这其实合理——因为我的模型还是偏保守,把不少高频小惯性都揉进了等效滞后里,实际相位裕度比预期略大。

但更值得关注的是稳态误差。Kp=1.6对应的理论稳态误差是1/(1+2.4*1.6)≈20.6%。实测中,目标1200rpm下的稳定转速大约是980rpm,误差约18%,基本符合。这个静差在实际控制中是不能忍的,所以我下一步一定会加Ki。

还有一个细节:低速时有明显的速度波动,特别在200rpm以下。原因是编码器M法测速在低速下脉冲间隔大,量化误差被Kp直接放大。这个现象在计算Kp时很难提前预判,但确实告诉我:Kp的理论值在高转速段有效,低速段要配合测速方式改进(比如换M/T法测速)才能保证控制品质。

6. 常见问题与避坑清单

在整轮实验里,我踩了不少坑,也总结了一些排查经验。这里整理成一张速查表,给准备复现这个实验的人参考。

现象可能原因检查与对策
Kp用理论值加载后系统直接大幅振荡模型参数不准确,等效滞后实际比估算值更大降低Kp到理论值的一半,再逐步上升;用临界实验重新标定τ
系统响应非常慢,Kp几乎没作用开环增益K被低估,或PWM限幅导致实际输出饱和检查单位换算是否统一,检查PWM是否长时间顶在上下限
转速波动在低速特别明显编码器M法测速分辨率不足,量化噪声被Kp放大降低Kp,或改为M/T测速法;也可以加大低通滤波,但要意识到这会增加滞后
正向响应和反向响应不对称摩擦非线性、驱动死区补偿不足先做正反两个方向的阶跃实验对比,再针对性补偿死区
理论算出的Kp和实验差别很大把系统过度简化了,忽略了高阶动态用频率响应扫频或做临界振荡实验,重新辨识对象模型

三条我认为最值得记住的心得:

第一,理论计算的Kp不是“直接用就完事”,而是用来划定实验搜索范围。直接算出Kp=1.6,那我就从1.0开始试,最多试到2.0,而不是像以前那样从0.1往上爬。

第二,对电机转速环来说,模型里的时间常数T对Kp计算最敏感。如果你时间常数测不准,后面所有推导都会偏。建议至少做三次不同幅值的阶跃响应,取平均值再用于计算。

第三,采样周期和滤波会直接改变等效滞后,Kp的稳定边界和它们强相关。你想把Kp调大的同时还想滤波干净,这是一个矛盾,必须取舍。我后来选择把滤波系数调轻一点,让噪声稍大但Kp可以保持理论值,控制品质反而更好。

7. 下一步和一点个人体会

这次Kp理论计算做完,我最大的收获不是“我算出了一个能用的Kp”,而是终于能回答一个一直困扰我的问题:Kp到底应该从哪里开始试。理论上画个圈,实操在里面微调,比盲目试凑高效太多了。

基于同样的思路,接下来我准备把积分时间Ti也推导一遍。Kp解决响应速度和精度下限,Ti负责消除稳态误差,两者配合的推导逻辑会更复杂一点,但有了这次的经验,至少知道该怎么入手。另外我还打算拿同一套方法去跑一下温度控制对象,试试一阶惯性加纯滞后模型在不同对象上是否依然有效。

如果你也在做PID调参卡壳了,我真心建议你先停下来,花一个小时做一个开环阶跃辨识,把K和T测出来,再回来算Kp。你会发现,调参这件事从玄学变成科学,也就差这一步。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询