FOC系统调试

← 返回 FOC MOC | ← 返回主页


一、调试工具与波形分析

调试FOC系统需要借助专业仪器观察关键信号,从而判断算法运行状态。

1.1 必备工具

  • 数字示波器 :至少4通道,带宽≥100MHz,带深度存储。
  • 电流探头 :高频带宽(≥50MHz),用于非侵入式测量相电流。
  • 差分探头 :安全测量MOSFET桥臂中点电压。
  • 函数发生器 :可模拟编码器信号或注入测试信号。
  • 调试器/串口工具 :实时监控变量、修改参数。

1.2 关键波形观测点

观测点信号类型正常波形特征异常可能原因
相电流 (Iu, Iv)模拟量正弦波,相位互差120°,幅值平稳PI参数不当、采样失真、死区时间错误
PWM输出 (UH, UL)数字量互补对称,死区时间清晰,占空比平滑变化死区配置错误、硬件保护触发、驱动故障
Clark变换后 (Iα, Iβ)模拟/数字两相正交正弦波,幅值相等电流采样偏置、增益误差、相位不对齐
Park变换后 (Id, Iq)模拟/数字Id≈0(弱磁控制除外),Iq跟随转矩指令转子角度误差、电流环PI失调
转子位置 (θ)数字量连续递增/递减,无跳变编码器接线错误、信号干扰、估算器故障

FOC软件架构与信号流图

图1:FOC控制算法核心信号流图(调试关键观测点已标出) **📊 波形分析技巧:**始终同时观测相电流和PWM占空比。理想情况下,电流正弦波应与对应桥臂的占空比调制波同相位。若出现相位偏移或畸变,首先检查采样延时和死区补偿。

二、PI参数调试技巧

电流环PI参数是FOC性能的核心,直接影响动态响应、稳态误差和稳定性。

2.1 调试准备

  1. 确保电机机械固定,安全第一。
  2. 将速度环和位置环的PI参数暂时设为0,仅调试电流环。
  3. 设定较小的电流指令(如额定电流的10%-20%)。
  4. 准备好示波器,测量Iq(或相电流)的阶跃响应。

2.2 调试步骤(Ziegler-Nichols法的变种)

步骤操作目标现象参数调整公式
1. 纯比例测试将Ki设为0,逐步增大Kp,给Iq一个阶跃指令系统出现等幅振荡(临界振荡)记录此时Kp=Kc,振荡周期=Tc
2. 计算初始参数根据经典Z-N公式计算获得一组较激进的参数Kp = 0.45 * Kc, Ki = 0.54 * Kc / Tc
3. 微调优化根据实际波形,精细调整Kp和Ki快速响应、超调小、无静差依据“先比例后积分”原则

2.3 代码示例:电流环PI控制器实现

typedef struct {
    float Kp;          // 比例系数
    float Ki;          // 积分系数
    float integral_max; // 积分限幅
    float output_max;   // 输出限幅
    float integral_sum; // 积分累加值
    float prev_error;   // 上次误差(可选,用于微分)
} PI_Controller;
 
float PI_Update(PI_Controller* pi, float error, float dt) {
    // 比例项
    float proportional = pi->Kp * error;
 
    // 积分项(带抗饱和)
    pi->integral_sum += pi->Ki * error * dt;
    // 积分限幅
    if (pi->integral_sum > pi->integral_max) {
        pi->integral_sum = pi->integral_max;
    } else if (pi->integral_sum < -pi->integral_max) {
        pi->integral_sum = -pi->integral_max;
    }
 
    // 计算输出
    float output = proportional + pi->integral_sum;
 
    // 输出限幅
    if (output > pi->output_max) {
        output = pi->output_max;
    } else if (output < -pi->output_max) {
        output = -pi->output_max;
    }
 
    return output;
}
 
// 调试时,可通过串口实时修改Kp, Ki
// printf("设置Id环 Kp=%.4f, Ki=%.4f\n", new_Kp, new_Ki);
// motor.id_pi.Kp = new_Kp;
// motor.id_pi.Ki = new_Ki;

**⚠️ 重要提醒:**实际调试中,电机电气时间常数远小于机械时间常数。电流环带宽通常设计在500Hz~2000Hz。过高的带宽会放大噪声,甚至引发振荡。务必在带载和空载情况下分别测试。

三、常见问题排查

以下是FOC调试过程中最常遇到的“坑”及其解决方案。

3.1 电机不转或抖动

  • 现象 :上电后电机发出“滋滋”声或轻微抖动,但不旋转。
  • 排查步骤 : 检查 转子初始位置 是否准确。对于无传感器启动,初始位置检测失败会导致失步。 测量 相电流波形 。如果只有两相有电流或波形非正弦,检查驱动电路和采样电阻。 确认 PWM死区时间 是否合适。死区过长会导致有效电压损失,过短会导致上下管直通。 检查 电流采样电路 的偏置电压。理想状态下,零电流时ADC读数应为中间值(如3.3V系统为1.65V)。

3.2 高速运行时失控

  • 现象 :低速运行平稳,但速度升高后电流急剧增大,电机啸叫或失步。
  • 可能原因 : 速度/电流环带宽不足 :无法跟踪高速指令,需重新整定PI参数。 反电动势(BEMF)影响 :高速时BEMF升高,母线电压不足导致调制饱和。考虑弱磁控制(增加Id负分量)。 采样延时 :高速时电流变化快,ADC采样、计算、PWM更新之间的延时变得不可忽略。优化中断时序,或采用预测性控制。 估算器收敛问题 :无传感器算法在高速时可能失锁。检查观测器或锁相环参数。

3.3 电流噪声大、波形毛刺

  • 现象 :电流波形正弦度尚可,但叠加了大量高频噪声。
  • 解决方案 : 硬件层面 : 在电流采样运放输入端增加 RC低通滤波 (截止频率设为PWM频率的1/10~1/5)。 检查PCB布局,确保 高dv/dt回路 (如MOSFET桥臂)远离模拟采样线路。 为采样电阻和运放使用 独立的模拟地 ,单点连接到电源地。 软件层面 : 对ADC采样结果进行 滑动平均滤波 或 中值滤波 。 适当降低 电流环带宽 ,本身就是一个低通滤波器。 确保PWM中断服务程序(ISR)执行时间 稳定且短促 ,避免被高优先级中断打断。

3.4 调试检查清单

类别检查项是/否备注
硬件电源电压稳定,电容容量足够□示波器看母线电压纹波
所有接地可靠,无虚焊□重点检查采样电阻接地
MOSFET驱动电压(如12V)正常□确保开关速度
软件配置PWM频率、死区时间设置正确□与硬件设计匹配
ADC采样触发时刻在PWM中点□避免开关噪声
电流采样值经过校准和偏置消除□上电时自动校准
控制算法Clark/Park变换公式无误□检查系数和角度
SVPWM扇区判断和矢量作用时间计算正确□仿真验证