第4章:速度环参数初调:比例增益Kp的初步整定、积分增益Ki的初步整定、参数对响应速度的影响观察

好,咱们进入正题。上一章我们把速度环的框架搭好了,也跑通了基本逻辑。但说实话,那会儿的电机转起来就像个没睡醒的醉汉——晃晃悠悠,响应慢,还容易抖。为什么?因为参数没调。

这一章,我们就来干这件事:初调Kp和Ki。注意我的用词——「初调」。不是一次搞定,而是先让系统「能动起来」,并且能看出参数变化的趋势。

核心目标:让电机对速度指令有快速、平滑的响应,且不产生明显振荡。

4.1 比例增益Kp:系统的「油门」

Kp,比例增益。说白了,就是误差有多大,你就给多大劲。误差大,输出大;误差小,输出小。这是最直觉的控制方式。

我刚开始做调试时,总想着Kp越大越好。你想想看,误差一出现,立马给大力,响应不就快了吗?嗯,理论上没错。但实际呢?

Kp太小:电机像陷在泥里。给一个阶跃指令,它慢悠悠地爬过去,半天到不了目标。稳态误差也大——就是永远差那么一点转速。

Kp太大:电机开始「哆嗦」。指令一到,它猛地冲过去,冲过头了,然后往回拉,又拉过头了……来回振荡。严重时直接啸叫,甚至过流保护。

我在项目中遇到过一台伺服,Kp调到30左右时,电机空载跑得挺好。一加上负载,立刻开始抖。后来发现,负载惯量变了,系统的谐振频率也变了。嗯,这就是为什么Kp不能盲目加大。

我的习惯:先给一个很小的Kp(比如0.5~1.0),让电机能转起来。然后逐步加大,每次加20%~30%,观察响应。直到出现轻微振荡,再退回20%。这个点,就是当前工况下的「临界Kp」。

4.2 积分增益Ki:消除那「最后一点」误差

光有Kp,你会发现一个问题:电机永远到不了目标转速。比如目标1000rpm,它跑到980rpm就停住了。为什么?因为误差小了,Kp给的力也小了,刚好被摩擦力、阻力抵消掉。

这时候,Ki就派上用场了。积分项,它会累积误差。误差存在的时间越长,积分项输出的力越大。直到把最后那点误差「挤」掉。

Ki太小:稳态误差消除得很慢。你可能等好几秒,转速才慢慢爬到目标值。

Ki太大:积分饱和,系统超调严重。指令一给,转速冲过头,然后积分项还在往上加,导致更大的超调,甚至振荡。

我曾经调试一台印刷机,Ki设得偏大,结果每次启动时转速都会冲高10%以上,然后花很长时间才稳定下来。后来把Ki减半,超调消失了,但启动慢了。最后折中了一下,同时加了一点前馈,才搞定。

注意:Ki不是越大越好。积分项的本质是「慢动作」,它不应该干扰Kp的快速响应。我建议Ki的初值设为Kp的1/10到1/20,然后微调。

4.3 参数对响应速度的影响观察

怎么观察?别光靠感觉。我们要看数据。最直观的方式就是看阶跃响应曲线。

我一般会这样操作:

  1. 给一个阶跃指令,比如从0rpm跳变到1000rpm。
  2. 用示波器或上位机记录实际转速曲线。
  3. 观察三个指标:上升时间超调量调节时间

下面这张表,是我在实际调试中总结的规律:

参数变化 上升时间 超调量 调节时间 稳态误差
Kp ↑ ↓ 变快 ↑ 变大 先↓后↑ ↓ 减小
Kp ↓ ↑ 变慢 ↓ 变小 ↑ 变长 ↑ 增大
Ki ↑ → 几乎不变 ↑ 变大 ↑ 变长 ↓ 减小
Ki ↓ → 几乎不变 ↓ 变小 ↓ 变短 ↑ 增大

你看,Kp主要影响响应速度,Ki主要影响稳态精度。两者配合,才能得到一个又快又准的系统。

4.4 实战:动手调一调

光说不练假把式。我们写一段简单的代码,来模拟这个过程。这里我用的是伪代码,方便你理解逻辑。

// 速度环参数
float Kp = 1.0;   // 比例增益
float Ki = 0.1;   // 积分增益
float integral = 0.0;
float target_speed = 1000.0;  // 目标转速
float current_speed = 0.0;    // 当前转速

// 控制周期 1ms
void speed_loop(void) {
    float error = target_speed - current_speed;
    
    // 比例项
    float p_out = Kp * error;
    
    // 积分项,带限幅
    integral += error * 0.001;  // 积分时间常数
    if (integral > 100.0) integral = 100.0;
    if (integral < -100.0) integral = -100.0;
    float i_out = Ki * integral;
    
    // 总输出
    float output = p_out + i_out;
    
    // 限幅
    if (output > 3000.0) output = 3000.0;
    if (output < -3000.0) output = -3000.0;
    
    // 更新电机转速(模拟)
    current_speed += output * 0.0005;  // 简化的电机模型
}

你可以试着改Kp和Ki的值,观察current_speed的变化。我建议你从Kp=1.0, Ki=0.05开始,然后逐步增加Kp到3.0、5.0,看看响应有什么不同。

一个小技巧:调Ki时,先让系统稳定在目标转速附近,然后突然给一个负载扰动。看Ki能不能把转速拉回来。拉得越快,说明Ki越合适。但注意别拉过头。

4.5 本章知识体系

为了让你更直观地理解本章的内容,我画了一张流程图。它展示了Kp和Ki在速度环中的角色,以及它们对响应的影响路径。

速度环参数初调知识体系 目标转速 误差计算 Kp 比例 Ki 积分 输出合成 电机响应 反馈 Kp↑ → 响应快,但易振荡 Ki↑ → 消除稳态误差,但超调大

这张图很清楚地展示了:目标转速和实际转速的误差,分别经过Kp和Ki两条路径,最后合成输出给电机。反馈闭环,这就是速度环的本质。

我的建议:初调阶段,别追求完美。先让系统稳定,能响应指令,不振荡。后面我们还会讲更精细的调试方法,比如加前馈、加滤波器。一步一步来,别急。

好了,这一章就到这里。Kp和Ki的初调,说白了就是找到那个「既不慢也不抖」的平衡点。多试几次,你就会有手感。


公众号:蓝海资料掘金营,微信deep3321