1. 三环控制基础:电流环、速度环、位置环的基本概念与层级关系
做PMSM控制这些年,我见过不少新手一上来就调PID参数,结果调了半天电机要么抖得像筛子,要么干脆转不起来。其实说白了,三环控制就像盖楼——你得先打好地基,再砌墙,最后才能装修。这个地基,就是电流环。
1.1 为什么是三个环?
永磁同步电机的控制,本质上是在跟电磁转矩较劲。你想让电机转多快、转到哪、输出多大扭矩,最终都得靠电流来实现。所以三个环的分工很明确:
- 电流环(最内层):直接控制电机绕组里的电流,响应最快
- 速度环(中间层):根据目标转速和实际转速的偏差,给电流环发指令
- 位置环(最外层):根据目标位置和实际位置的偏差,给速度环发指令
我刚开始做伺服驱动时,总觉得位置环直接给电流环发指令不就行了?结果电机到位后总在目标位置附近来回震荡。后来才明白——没有速度环做阻尼,位置环就是个没刹车的跑车。
核心认知:三环的本质是带宽分层。电流环带宽最高(1-5kHz),速度环次之(100-500Hz),位置环最低(10-100Hz)。内环必须比外环快5-10倍,否则系统会失稳。
1.2 电流环——最内层的"肌肉"
电流环控制的是啥?说白了就是Id和Iq。Id负责励磁,Iq负责转矩。在表贴式PMSM(SPMSM)里,我们通常让Id=0,只控制Iq;但在内置式PMSM(IPMSM)里,还要考虑MTPA(最大转矩电流比)控制,Id和Iq要配合着来。
电流环的典型结构是这样的:
// 电流环PI控制器(离散化实现)
typedef struct {
float Kp; // 比例增益
float Ki; // 积分增益
float integral; // 积分累加项
float output_max; // 输出限幅
float output_min; // 输出限幅
} PI_Controller;
float PI_Update(PI_Controller *pi, float error) {
pi->integral += pi->Ki * error;
// 抗积分饱和
if (pi->integral > pi->output_max) pi->integral = pi->output_max;
if (pi->integral < pi->output_min) pi->integral = pi->output_min;
float output = pi->Kp * error + pi->integral;
// 输出限幅
if (output > pi->output_max) output = pi->output_max;
if (output < pi->output_min) output = pi->output_min;
return output;
}
实战技巧:调电流环时,我习惯先给一个阶跃电流指令(比如0.5A),用示波器看实际电流的响应波形。如果电流上升沿有超调,说明Kp偏大;如果上升太慢,说明Kp偏小。积分项Ki主要消除稳态误差,但Ki太大会引起震荡。
1.3 速度环——中间的"大脑"
速度环接收位置环或用户直接给定的速度指令,输出给电流环作为Iq的参考值。速度环的带宽比电流环低一个数量级,所以它的采样周期通常比电流环慢5-10倍。
这里有个坑——速度反馈的精度直接影响控制效果。我遇到过一台电机,低速时转速波动特别大,查了半天发现是编码器分辨率不够,导致速度计算值跳变太大。后来换了高分辨率编码器,问题就解决了。
| 参数 | 电流环 | 速度环 | 位置环 |
|---|---|---|---|
| 采样频率 | 10-20 kHz | 1-4 kHz | 0.1-1 kHz |
| 带宽 | 1-5 kHz | 100-500 Hz | 10-100 Hz |
| 主要干扰 | 反电动势、死区 | 负载突变、摩擦 | 机械谐振、间隙 |
| PI参数影响 | 电流响应速度 | 转速跟随性 | 定位精度 |
1.4 位置环——最外层的"指挥官"
位置环是最外层的控制环,它根据目标位置和实际位置的差值,计算出速度指令给速度环。位置环的带宽最低,因为位置信号通常来自编码器,采样频率受限,而且机械系统的惯性也限制了位置响应的速度。
位置环的控制策略有两种主流方式:
- P控制:只用比例项,位置误差直接映射为速度指令。简单,但会有稳态误差
- PI控制:加入积分项消除稳态误差,但容易引起位置超调
我个人更倾向于在位置环用P控制加前馈。为什么?因为位置环的积分项很容易和速度环的积分项打架,导致系统响应变慢甚至震荡。前馈补偿可以提前给速度指令,让系统更快响应。
避坑指南:我曾经在一个高精度定位项目中,位置环用了PI控制,结果每次到位后都会过冲再回调。后来把积分项去掉,换成纯P控制加速度前馈,定位精度从±0.1mm提升到了±0.02mm。记住——位置环的积分项不是必须的,有时候反而是累赘。
1.5 三环的层级关系——一张图说清楚
下面这张图展示了三环控制的完整结构。你从右往左看,就是信号流动的方向:位置指令→速度指令→电流指令→电机。从左往右看,是反馈信号的反向流动。
1.6 调参顺序——为什么必须从内到外?
这个问题我回答过很多次。你想想看——如果电流环都没调好,速度环给一个Iq指令,实际电流却跟不上,那速度环调得再好有什么用?
正确的调参顺序是:
- 先调电流环:让Id和Iq能快速准确地跟踪指令值
- 再调速度环:让转速能平滑跟随速度指令
- 最后调位置环:让位置定位精准且无超调
每个环节调好后,最好锁定参数,不要回头乱改。我见过有人调速度环时觉得响应慢,就去改电流环的Kp,结果电流环开始震荡,速度环也跟着抖——这就是典型的"拆东墙补西墙"。
一句话总结:三环控制就是电流环保响应、速度环保平稳、位置环保精度。从内到外,层层递进,缺一不可。