🎛️ FOC 调参整定实战手册

从电流环到位置环的工程整定顺序、参数公式与症状对症表——把"会跑 FOC"变成"调得动 FOC"。
FOCPID整定电流环带宽法
🎯 本页学习目标
1. 能说出三环整定的正确顺序以及"内环带宽 ≥ 外环 5~10 倍"的原因
2. 会用带宽法公式算出电流环 PI 初值(Kp = ωc·L,Ki = ωc·R)
3. 能根据阶跃响应症状(超调/振荡/慢)判断该动哪个参数、往哪边动
建议用时:约 30 分钟

1 整定总纲:为什么必须"由内向外"

FOC 三环是级联结构:位置环的输出是速度环的参考,速度环的输出是电流环的参考。内环对外环而言必须"足够快"——否则外环发出的指令,内环还没执行完,外环又发了新的,等效于给系统叠加了延迟,直接表现就是振荡或莫名发热。工程约定:

📏 带宽分离原则:f电流环 ≥ (5~10)·f速度环 ≥ (25~100)·f位置环。典型数值:电流环 500~2000 Hz,速度环 50~200 Hz,位置环 5~50 Hz。先整定最内环并验证合格,再逐级向外;顺序错了,外环参数怎么调都是错的。

1.1 交互式整定流程单(点击阶段查看要点)

2 电流环:带宽法一步到位

电流环对象近似为一阶 RL 电路(电压→电流),用 PI 控制器做极点对消:把 PI 零点放在电机转折频率 R/L 上,闭环带宽就等于积分系数与电感的乘积。得到一组工程上广泛使用的初值公式:

K_p = \omega_c \cdot L, \qquad K_i = \omega_c \cdot R, \qquad \omega_c = 2\pi f_{bw}

其中 fbw 为目标闭环带宽(Hz),L 为相电感(H),R 为相电阻(Ω)。Kp 单位 V/A,Ki 单位 V/(A·s)。注意 SimpleFOC 的 LPF 与 ODrive 的 anticogging/rampe 各有差异,先关掉再整定。

🔌 电流环 PI 初值计算器(带宽法)
⚠️ 带宽上限:fbw 不能超过 PWM 频率的 1/10~1/20(20 kHz PWM → 电流环 ≤ 1~2 kHz),也受电流采样噪声与执行延时限制。给 U/V/W 三相扰动阶跃,标准是:无静差、无振荡、上升时间 ≈ 0.35/fbw。上电后电机应有"定住"的刚度且安静;嗡嗡声大说明带宽过高或噪声大。

完整算例:给定 R/L 算三环 PI 初值(带宽法 worked example)

已知某关节电机相电阻 R = 0.8 Ω、相电感 L = 0.2 mH,PWM 频率 fPWM = 20 kHz,求电流环 PI 初值。

第 1 步 · 定目标带宽(取 PWM/20 并说清依据):带宽上限受 PWM 频率约束,须 ≤ fPWM 的 1/10~1/20——留 20 倍余量是为保证每个电流环控制周期内有足够个数的 PWM 载波完成采样与更新,且把数字延时(采样+计算+PWM 保持,约 1.5 个控制周期)带来的相位滞后压在可接受范围。取保守值:fbw = fPWM/20 = 20000/20 = 1000 Hz,则 ωc = 2π·fbw = 2π×1000 ≈ 6283 rad/s

第 2 步 · 代入公式(注意单位坑:0.2 mH = 0.0002 H):

K_p = \omega_c \cdot L = 6283 \times 0.0002 \approx 1.26\ \text{V/A}, \qquad K_i = \omega_c \cdot R = 6283 \times 0.8 \approx 5027\ \text{V/(A·s)}

第 3 步 · 验收:给 q 轴 0.5 A 电流阶跃,预期上升时间 ≈ 0.35/fbw ≈ 0.35 ms;响应无超调、无静差、电机安静有刚度即为合格。若手算和上面的电流环计算器结果对不上,先检查 L 是否忘了从 mH 换算成 H——这是本页最常见的错误(自测第 2 题即此算例,可先盖住答案自己算一遍)。

3 速度环:从 J 出发,看曲线调参

速度环对象是积分环节(电流→加速度)+ 机械惯性 J,常用 PI 或 PD。初值同样可用带宽法:Kp,v = J·ωv/Kt(把转矩常数折算进去),Ki,v 取 Kp,v 的 1/5~1/10 积分时间。之后靠速度阶跃曲线微调:

症状该动的参数方向与理由
阶跃超调 > 20%,来回振Kp / Kd(阻尼)降 Kp 或加 Kd——增益过大激发机械谐振
爬到目标很慢,软绵绵Kp升 Kp,直到轻微超调再回退 20~30%
稳态有差(带载下垂)Ki加 Ki 消差;过大则低速来回" hunting"
空载正常,带载啸叫速度 LPF / Kp滤波太重→延迟振荡;减轻滤波并降 Kp
停止时低频晃动Ki / 死区补偿积分饱和或齿槽转矩未补偿

4 位置环:Kp 就是带宽,Kd 管阻尼

位置环对象含一个积分(速度→位置),纯 P 就能稳,特征非常直观:位置环 Kp(1/s, rad/s 量纲)≈ 期望位置带宽 ωp,响应时间约 3/ωp。需要更硬的跟踪或抑制超调时加 Kd(对速度环参考做阻尼)。经验流程:Kp 从小往大加,直到负载阶跃下位置误差满意且无振荡;超调则加 Kd。对人形关节,位置环带宽 5~30 Hz 已足够,剩下的刚性靠力控环(阻抗)实现。

5 症状 → 参数速查表(贴在工位版)

症状首选排查参数其次排查
电机高频嗡叫、电流波形毛刺大电流环 Kp/Ki 过高、LPF 过重PWM 死区、采样噪声、接地
一给速度就过流跳保护电流环未整定就开速度环编码器方向接反、零位错
速度稳但电机发烫速度环 hunting、Ki 过大齿槽转矩、死区、机械卡滞
位置慢漂位置环 Ki(或速度环积分)编码器多圈计数、重力前馈缺失
换向瞬间抖一下死区补偿量电流采样偏置校零
带载后整体变"软"电流限幅值、母线电压速度环 Kp(按负载 J 重算)

6 框架参数名对照(SimpleFOC / ODrive)

含义SimpleFOCODrive
电流环 Kp / Kimotor.PID_current_q.Kp / .Ki(同 d 轴)axis.controller.config.current_ctrl_bandwidth(直接给带宽,自动算 PI)
速度环 Kp / Kimotor.PID_velocity.Kp / .Ki + .output_rampconfig.vel_gain / vel_integrator_gain
位置环 Kpmotor.P_angle.Kp + .P_angle.velocity_limitconfig.pos_gain
电流滤波motor.LPF_current.Tfconfig.current_filter_bandwidth
💡 动手建议:整定现象都可以先在 代码实验室 里预演——PID 实验的"阶跃/方波/扰动"三种激励与本节的判读方法一一对应,练出"看曲线说参数"的手感再到真机上手。

7 本节自测

1. 三环整定的正确顺序与原因是?
💡 解析:级联控制要求内环带宽 ≥ 外环 5~10 倍。先内后外,每级验证合格再进下一级;顺序颠倒时外环会把内环的滞后当成被控对象特性,参数永远调不稳。
2. 相电阻 0.8 Ω、相电感 0.2 mH、目标电流环带宽 1000 Hz,带宽法 PI 初值约为?
💡 解析:ωc=2π×1000≈6283 rad/s;Kp=ωc·L=6283×0.0002≈1.26 V/A;Ki=ωc·R=6283×0.8≈5027 V/(A·s)。注意 L 要用 H(0.2 mH=0.0002 H),这是最常见的单位坑。
3. 速度阶跃响应超调 30% 且持续振荡,首先应该?
💡 解析:超调+振荡是典型增益过高;降 Kp 或加阻尼。加大 Ki 会加剧振荡;加重滤波只掩盖症状还增加相位滞后;电流环与本症状无关(它是内环,已验收合格)。
4. 关于位置环整定,下列说法正确的是?
💡 解析:位置环对象含一个积分(速度→位置),纯 P 就能稳定(见第 4 节);Kp(rad/s 量纲)≈ 期望位置带宽 ωp,响应时间约 3/ωp。人形关节 5~30 Hz 已足够,刚性交给上层力控;超调应加 Kd 而非加大 Kp。
5. 电机速度稳定但发热严重,新手常误判为散热问题,实际首选排查是?
💡 解析:第 5 节速查表:速度稳但发烫 → 首选速度环 hunting、Ki 过大(高频来回微调产生热耗),其次齿槽转矩/死区/机械卡滞。盲换散热或调母线电压治标不治本,会漏掉真正的控制问题。
6. 关于电流环目标带宽的选取,下列正确的是?
💡 解析:第 2 节警示框:带宽受 PWM 频率、电流采样噪声与执行延时约束,须 ≤ PWM 的 1/10~1/20(20 kHz PWM → 电流环 ≤ 1~2 kHz)。带宽过高反而嗡嗡声大、电流波形毛刺多,并非越高越好。
7. 级联三环为什么要求「内环带宽 ≥ 外环 5~10 倍」?
💡 解析:级联控制的全部便利都建立在「时间尺度分离」上:内环足够快 → 在外环看来它瞬时到位 → 外环的 plant 才是干净的「速度=K×电流」模型(B)。若内外环带宽接近,两环互相争抢,整定永远调不完——这是本手册第 1 节的第一原则。
8. 电流环「Kp=ωc·L、Ki=ωc·R」公式的来源是?
💡 解析:电机相绕组近似 R+L 一阶环节;PI 的零点 1/Kp·Ki 若精确对消被控对象极点(R/L),开环变成纯积分 1/(s·L/Kp),再令幅值穿越发生在 ωc → Kp=ωc·L、Ki=ωc·R(A)。这也是为什么 R、L 的测量精度直接决定「公式法」起点好不好——后续再按波形微调。
9. 空载运转时电机发出高频「嗡叫」,转速稳不住,手册推荐的第一个动作是?
💡 解析:症状优先级表(本节第 5 节)把「嗡叫/啸叫」的第一嫌疑给到速度环 Kp 过高:机械谐振或编码器噪声被高增益放大成可闻振荡(C)。加大 Ki(A)会让相位裕度更差;B/D 与振荡机理无关。口诀:先降益、后补差、再查噪。
10. 人形关节位置环带宽通常 5~30 Hz 就够,原因是?
💡 解析:带宽跟着信号走,不跟着「越高越好」走:人形行走/摆臂的轨迹能量集中在 10 Hz 以内,位置环 5~30 Hz 已无损跟踪(D);突发的接触动态由速度环(百 Hz 级)与电流环(kHz 级)兜住。A/C 是硬件错配,B 与事实无关。
11. 「空载静止时关节位置读数缓慢漂移」,排查顺序正确的是?
💡 解析:慢漂移的高频原因是反馈链(编码器零位松动/磁环温漂)与慢积分(Ki 大在死区里慢慢积),都属「先软后硬」排查(B);机械间隙表现为双向空程而不是单向慢漂。手册第 5 节症状速查表正是按「症状→首选参数→次选硬件」组织的,建议打印贴工位。
📌 本节要点速查:①三环由内向外整定,内环带宽 ≥ 外环 5~10 倍;②电流环带宽法 Kp=ωc·L、Ki=ωc·R(ωc=2πf),带宽 ≤ PWM 的 1/10~1/20;③速度环 Kp,v=J·ωv/Kt、Ki 取 Kp 的 1/5~1/10,按症状表看曲线微调;④位置环 Kp≈带宽(5~30 Hz 足够),超调加 Kd;⑤嗡叫/过流/发烫/漂移各有首选排查参数,见第 5 节速查表。
📌 本节小结:①级联三环必须由内向外整定,带宽分离 5~10 倍;②电流环用带宽法一步算出初值(Kp=ωcL,Ki=ωcR),上限受 PWM 频率约束;③速度环按"症状-参数表"看曲线微调,位置环 Kp≈带宽、Kd 管阻尼;④嗡叫/过流/发烫/漂移各有首选排查参数,配合故障诊断树页使用。
🤔 思考题:1. 若电机参数(相电感)手册值偏小 30%,算出的电流环会发生什么现象?如何在示波器上发现?
2. 为什么速度环整定合格后,带上传动比 100:1 的减速器,外环参数通常要重新整定?(提示:折算惯量与反向驱动性)

M 参考来源