1. 速度环基础:什么是速度环?它在伺服系统中的位置与关系
大家好,我是老张。搞伺服驱动调试十几年了,今天咱们聊聊速度环。
很多刚入行的朋友问我:“张工,速度环到底是个啥?”
说白了,速度环就是伺服驱动器里负责控制电机转速的那个闭环。你给电机一个目标转速,比如每分钟3000转,速度环就负责让电机实际转速死死咬住这个目标,别跑偏。
核心定义:速度环(Speed Loop)是一个闭环控制系统,它实时检测电机当前转速,与目标转速比较,计算出误差,然后通过PID调节器输出控制量,让电机转速快速、平稳地跟随目标值。
1.1 伺服系统的“三环架构”
我习惯把伺服驱动器比作一个三层小楼。从上到下分别是:
- 位置环(最顶层)——管位置,比如“走到第1000个脉冲的位置”。
- 速度环(中间层)——管速度,比如“以3000转/分的速度运行”。
- 电流环(最底层)——管力矩,比如“输出2安培电流产生力矩”。
这三层是嵌套关系。位置环的输出,就是速度环的目标;速度环的输出,就是电流环的目标。一层套一层,像俄罗斯套娃。
为什么会这样设计?你想想看,如果直接让位置环去控制电流,那电机转起来会非常“愣”,一冲一冲的,根本没法用。中间加个速度环,相当于加了个“缓冲器”,让运动更平滑。
1.2 速度环与位置环的关系
位置环是老大,速度环是老二。位置环说“我要去那里”,速度环就负责“用多快的速度去”。
我遇到过不少调试案例,位置环参数调得挺好,但电机一跑就抖。查了半天,原来是速度环没调好。速度环不稳,位置环再努力也白搭。
| 对比项 | 位置环 | 速度环 |
|---|---|---|
| 控制对象 | 位置(角度/位移) | 速度(转速/线速度) |
| 反馈来源 | 编码器位置信号 | 编码器速度信号(微分或M/T法) |
| 响应速度 | 较慢(几十毫秒级) | 较快(几毫秒级) |
| 典型带宽 | 10~50 Hz | 100~500 Hz |
| 输出 | 速度指令 | 电流指令(转矩指令) |
你看这个表就明白了。位置环的带宽比速度环低一个数量级。这意味着速度环必须比位置环“跑得快”,才能及时响应位置环的指令变化。
个人经验:我调试时有个习惯——先调好速度环,再调位置环。速度环稳了,位置环基本不会出大问题。反过来,如果位置环怎么调都抖,八成是速度环没伺候好。
1.3 速度环与电流环的关系
电流环是速度环的“执行层”。速度环说“我需要这么大的力矩”,电流环就负责“输出这么大的电流”。
电流环在三环中响应最快,带宽通常能达到1~3 kHz。它直接控制电机绕组里的电流,也就是直接控制力矩。
我曾经遇到一个案例:客户说电机低速时一顿一顿的。我一看,速度环参数没问题,但电流环的PI参数太软了,导致力矩响应慢。把电流环的积分时间调小一点,问题立刻解决。
注意:电流环的带宽不能设得太高,否则容易引起电流震荡,甚至烧毁驱动器。一般建议电流环带宽不超过PWM开关频率的1/10。
1.4 为什么速度环这么重要?
我个人的理解是:速度环是整个伺服系统的“脊梁骨”。
- 承上启下:它承接位置环的指令,又驱动电流环执行。
- 决定动态性能:系统的响应速度、抗扰动能力、平稳性,大半靠速度环。
- 影响定位精度:速度环调得好,位置环才能精准定位。速度环有静差,位置环就会过冲或欠冲。
说白了,速度环调好了,这台伺服就成功了一半。很多所谓的“伺服抖动”、“跟踪误差大”、“响应慢”问题,根源都在速度环。
1.5 速度环的典型结构
一个标准的速度环包含以下几个部分:
- 速度给定——来自位置环的输出或上位机直接指令。
- 速度反馈——来自编码器,经过速度计算(通常用M/T法或T法)。
- 误差计算——给定值减去反馈值,得到速度误差。
- PI调节器——对误差进行比例-积分运算,输出电流指令。
- 限幅——防止输出电流超过驱动器或电机允许范围。
// 速度环PI调节器伪代码示例
float speed_error = speed_target - speed_feedback;
float current_target = Kp * speed_error + Ki * speed_error_integral;
// 限幅处理
if (current_target > current_limit_max)
current_target = current_limit_max;
if (current_target < current_limit_min)
current_target = current_limit_min;
// 更新积分项(带抗饱和)
speed_error_integral += speed_error * dt;
if (current_target == current_limit_max || current_target == current_limit_min)
speed_error_integral -= speed_error * dt; // 积分冻结
这段代码看着简单,但实际工程里坑不少。比如积分饱和问题,我曾经吃过亏——电机堵转时积分项一直累加,一松开就猛冲出去。后来加了抗饱和逻辑才解决。
关键点:速度环的PI参数(Kp和Ki)决定了系统的响应速度和稳定性。Kp太大容易震荡,Kp太小响应慢;Ki太大容易超调,Ki太小有静差。后面几章我会详细讲怎么调这两个参数。
1.6 速度环的响应速度要求
速度环的响应速度介于位置环和电流环之间。一般来说:
- 电流环带宽:1~3 kHz(响应时间约0.3~1 ms)
- 速度环带宽:100~500 Hz(响应时间约2~10 ms)
- 位置环带宽:10~50 Hz(响应时间约20~100 ms)
为什么速度环不能太快?因为速度反馈来自编码器,编码器信号有量化噪声。速度环带宽太高,会把噪声放大,导致电机“嗡嗡”响。
我记得有一次调试高速主轴,速度环带宽设到800 Hz,电机噪音大得吓人。降到300 Hz后,噪音没了,响应也够用。
1.7 小结
这一章咱们把速度环的底子打好了。你记住三句话:
- 速度环是伺服系统的中间层,管转速。
- 它从位置环接指令,向电流环发指令。
- 速度环调好了,系统就稳了一半。