故障排查
本站各章节正文从机理出发,顺带指出该机理在工程中引发的故障。本页则将顺序倒过来:先列出故障症状,方便已经在实验台上遇到问题的读者按图索骥。
共收录 32 种典型故障,绝大多数都源自真实电机驱动器在调试台架上踩过的坑。
电机表现出违背物理常理的诡异行为
当观测到的物理现象在理论上根本讲不通时,几乎总是因为逆变器实际施加到电机端子上的电压并非控制算法算出的那个电压。在怀疑控制律之前,请先排查电压执行链路。
- 实际输出的占空比间歇性地不等于计算值
- 同一中断周期内有两处代码先后改写了占空比比较寄存器。当第一次写入正处于等待重装载(Reload pending)状态时,第二次写入会被硬件静默丢弃;而究竟哪一次生效,完全取决于代码执行时定时器计数器恰好走到哪里。预装载与重载规则
- 出现窄脉冲(毛刺脉冲),甚至直接炸桥
- 为了省下半个开关周期的延迟而关闭了比较寄存器的影子预装载功能(异步直接写入)。正是影子寄存器(Shadow register)机制防止了占空比更新在脉冲高电平中途突然生效。外设触发链路
- 输出逼近满量程的 87% 左右时驱动器突然失控
- 纯正弦脉宽调制(SPWM)在调制比超过 0.866(即 √3/2,六边形内切圆与半母线电压之比)时会发生削顶限幅。多出的 15.5% 电压
- dq 轴电流出现 6 倍电频率的周期性脉动
- 逆变器死区效应所致。其谐波特征(6 倍频)与电流传感器故障截然不同,解决手段也完全不同。死区间隙内究竟发生了什么
环路出现振荡、大幅超调或迟迟无法收敛
在按模型整定良好的电流环中,闭环稳定性是一项时序延迟属性,而非增益属性。动手盲目调小增益之前,请先核查控制链路的延迟预算。
- 电流阶跃响应超调约 50%,但最终能够稳定
- 按“带宽取 f_pwm/10”这一经验法则整定时,典型控制延迟下恰好只剩约 36° 的相位裕度——虽然勉强稳定,但处于临界欠阻尼状态,这一经验法则被严重高估了。工程上建议优先取 f_pwm/20。经验法则的真正来源
- 明明已经实现了抗积分饱和(Anti-windup),积分器却依然发生饱和失控
- 将反电动势或解耦前馈项加在了 PI 输出限幅器之后。此时控制器在毫不知情的情况下实际上已经触发了逆变器硬件限幅,导致抗积分饱和反算回路根本不会被激活。抗积分饱和机制
- 转速阶跃超调量远大于线性设计预期
- 由于最大加速度完全受限于电流限幅值,转速环在每次大幅启动或加速时都必然进入饱和状态。因此,转速环的抗积分饱和是结构性必需品,而非可选项。转速环在每次启动时都会饱和
- 速度环听起来很安静,但动态带宽却丧失殆尽
- 对转速反馈估算值进行了低通滤波。反馈通道上的任何滤波器都直接串联在闭环回路内部,其相位滞后会被直接从相位裕度中扣除。与其靠滤波掩盖量化噪声,不如直接换用更高线数的编码器。转速信号的来源与量化
- 实测电流环带宽与理论设计值存在约 5% 的系统偏差
- 源自数字积分器的离散化近似方法:在穿越频率处,前向欧拉法幅频增益偏低约 5%,后向欧拉法则偏高约 5%。在怀疑电机电感参数失准而重新辨识之前,请先排除离散化方法的影响。离散化并非完全等价,原因在此
实际输出的转矩或电流与给定值不符
这类问题最棘手,因为驱动器表面上仍在平稳运转——既无故障跳闸,也无剧烈振荡,仅仅是出来的数值不对。
- d 轴与 q 轴的动态响应快慢不一致
- 内置式(凸极)电机的 L_d ≠ L_q,因此两轴天生需要不同的比例增益——以本站参考电机为例,要获得相同带宽,q 轴的 K_p 必须比 d 轴高出 57%。两轴共用同一套 PI 增益只是一种将就妥协,而非正规设计。参数整定不是盲目试错
- 流过电机的实际相电流峰值比设定限幅值高出 √2 倍
- 对 i_d 和 i_q 分别进行了独立矩形限幅,而非对合成电流矢量模长进行圆形限幅。当两轴同时满幅输出(位于象限对角线上)时,独立限幅会放行高达预期幅值 1.414 倍的电流。电流矢量限幅在闭环中的位置
- MTPA 轨迹偏差了几毫安或数安培,但表面上看起来很正常
- 文献中广泛引用的 MTPA 闭式公式是以合成电流矢量*幅值* I_s 为自变量推导的。如果误把 q 轴电流指令 i_q 当作自变量代入该公式,就会算出一个看似合理实则偏离最优解的 i_d。MTPA 闭式解及其常见陷阱
- 实测效率低于数据手册指标,且正反转表现不一致
- 位置传感器零位对齐存在恒定的电角度偏移。注入直流电流强拖对齐时,齿槽转矩的阻碍会留下数度的残余偏差——而在 10° 偏移角下,凸极电机仍能输出高达对齐状态 100.8% 的转矩,因此在空载或轻载测试中极难察觉。零位偏移角才是核心难题
测量与反馈信号在“说谎”
FOC 的每一次控制决策都完全建立在四个电机参数与两路反馈电流之上。当系统行为无法用常理解释时,应先怀疑这些测量值,再去怀疑控制算法。
- 测出的定子电阻比标称值偏高百分之几十
- 使用了普通两线制万用表测量。0.35 Ω 级别的定子相电阻与表笔引线电阻及接触电阻处于同一数量级,必须采用四线开尔文(Kelvin)测法。R_s 测量与系数 2 的陷阱
- 测出的电阻或电感恰好比真实值大一倍(相差 2 倍)
- 在任意两相引出线之间进行线间测量时,相当于将两相绕组串联测量。对于星形(Y)接法电机,必须将线间测量结果除以 2 才是单相参数。R_s 测量与系数 2 的陷阱
- 换算出的永磁体磁链偏差了 1.73 倍、0.71 倍或极对数倍
- 从数据手册的反电动势常数 K_e 换算到单相峰值磁链 λ_m 需要连过三道关:线间电压转相电压除以 √3(≈1.732)、有效值转峰值乘以 √2(或除以 0.707),以及机械转速转电角速度乘以极对数 p。漏掉其中任何一个系数,算出来的数值表面上都很像那么回事。λ_m 与连续三次单位换算
- dq 轴电流中存在 1 倍或 2 倍电频率的周期性波动
- 相电流采样零点偏移(Offset)会在 dq 轴产生 1 倍电频率纹波;两相采样通道增益不一致(Gain mismatch)则会产生 2 倍电频率纹波。动手盲目补偿之前,请先对 i_d、i_q 做一次 FFT 频谱分析。从谐波频谱反推传感器误差类型
- 测量电流中存在任何低通滤波器都滤不掉的缓慢拍频波动
- ADC 采样时刻未与 PWM 载波严格硬件锁定。同步采样能够将开关纹波整周期折叠为恒定直流偏置;一旦采样频率与载波频率相差哪怕 100 Hz,高频开关纹波就会通过混叠折叠回来,变成实实在在的 100 Hz 低频正弦分量。混叠:离散采样的第三重效应
- 在大电流重载区(电机出力最猛时),按标称电感预测的性能过于乐观
- 定子电感 L 会随电流增大因磁路饱和而显著下降(而非随温度变化)。必须在额定工作电流附近实测电感,而不能直接采信 LCR 电桥在毫安级小信号下测出的空载电感。四个电机参数如何随温度与电流变化
机械运动表现反常,但电机与控制环本身完全无辜
有些故障现象看起来像极了机械卡滞或电机参数失配,实则是外围任务调度或转速量化惹的祸。
- 指令斜坡的加速速率只有设定值的一小部分
- 将斜坡给定生成逻辑放在了周期不受严格定时调度的低优先级任务中。例如某台架将名义 10 Hz 的 UI 循环用于按拍累加给定,而该任务实际只以 2–3 Hz 运行,结果把 500 rpm/s 的加速斜坡硬生生拖慢到了约 80 rpm/s。同一控制律,两种截然不同的调度方式
- 实测转速与指令转速恰好相差某个精确的整数倍或分数倍
- 极对数 p 设错了。这种成精确比例的偏差特征非常鲜明,且问题根源完全不在你第一反应去怀疑的闭环控制器里。极对数同样值得亲手实测验证
- 转速降到某一阈值以下后,转速估算值就彻底失真不可用
- 在固定时间窗口内对编码器脉冲边沿进行计数(M 法测速)时,其转速量化步长与转速高低无关;因此随着电机减速,单个脉冲对应的量化台阶占实际转速的比例会急剧放大。转速信号的来源与量化
硬件频繁过压跳闸、异常发热,或无法正常减速停机
本质上都是能量流向问题:能量正往哪里涌,以及系统里究竟有没有吸收这股能量的出路。
- 快速减速制动时频繁触发直流母线过压保护
- 再生的机械制动能量无处宣泄:前端稳压电源或二极管整流桥无法倒灌吸收能量,母线电解电容只能吸纳毫焦耳级的能量,而转子动能却与转速的平方成正比。此时可通过主动注入 d 轴去磁电流产生铜耗,把电机绕组本身当作制动电阻来消耗能量。制动能量必须有处可去
- 直流母线电容在半载(中等转速)下反而比满载时更烫
- 流过母线电容的纹波电流有效值(RMS)在调制深度接近一半(M ≈ 0.5–0.6)时达到峰值。仅按满载满速工况选型校核的母线电容,恰恰漏掉了纹波发热最严苛的工作点。母线电容究竟承受了多大的纹波电流
- 换用了导通电阻更低的好管子,温升却反而比以前更高
- 换用低 R_ds(on) 的大芯片 MOSFET 虽然将导通损耗砍半,但往往伴随更大的寄生电容与更长的开关时间,导致开关损耗不降反升,使导通损耗与开关损耗相等的交叉频率点下移。要想提高 PWM 开关频率,必须为“更快的开关速度”买单,而非单纯追求低导通电阻。选型陷阱:导通损耗与开关损耗的权衡
- 接上长供电电缆后,高转速区间的线性调制裕度莫名消失
- 长电缆阻抗引起的直流母线电压跌落(Bus sag)。逆变桥母线电容两端的实际电压远低于稳压电源面板上的显示电压;若调制器仍按写死的标称 V_dc 计算占空比,就会在未察觉的情况下提前进入过调制削顶。母线电压跌落直接侵蚀调制极限
无位置传感器估算“自信满满地给出错误结果”
丢失了真实转子位置的无感观测器绝不会主动报错说自己跟丢了。工程上必须保留一个完全独立、绝不参与控制律闭环的“见证测量量(Witness)”。
- 状态机显示处于健康的高速 RUN 运行状态,但电机轴实际上纹丝不动
- 无感观测器自激锁定到了由死区失真和控制器自身输出构成的“幻影解”上。当时唯一指出异常的,是一路完全不参与闭环控制的编码器计数值——它死死停在原地没动。安全守护机制与独立“见证量”
- 在所有转速下都存在几度恒定不变的估算角度偏差
- 根源在于电机凸极性(Saliency),而非观测器增益没调好。在 L_d ≠ L_q 的内置式电机上,若磁链观测器仅用单一电感 L 去减去电枢反应磁链,必然会引入随负载电流变化的稳态角度误差。观测器 1:磁链观测器
- 无感控制在高速区运行完美,但随着转速降低逐渐崩溃失效
- 逆变器死区电压误差在高速区相对于几伏、几十伏的反电动势几乎可以忽略不计,但在低速区却与微弱的反电动势处于同一数量级。无感观测器真正的生死关头永远在低速端。两种无感观测器的横向对比
数学公式和参数都对,但跑出来的代码结果却不对
标幺化定标与定点算术运算——许多在浮点仿真中完全正确的设计,正是在移植到目标微控制器的这一步翻了车。
- 算出的标幺值(Per-unit)毫无物理意义
- 基准值(Base)的选择纯粹是人为约定,而非客观物理定律。几乎所有的标幺化错误都源于“记账混乱”——例如某个物理量除错了基准值,或者在接口传递时被重复标幺化了两次。标幺值:将每个物理量除以其额定基准
- 定点数发生溢出时直接回绕(Wrap-around)反相,而非饱和限幅(Clip)
- 标准 C 语言的有符号整数溢出会发生模回绕(正极值瞬间跳变为负极值)。定点控制器中的饱和限幅(Saturation)必须通过饱和指令或显式限幅代码主动实现。定点数:在整数寄存器中表示小数
- 算出的转矩常数恰好偏差了 1.5 倍或 √1.5 倍
- 将等幅值变换(Amplitude-invariant)与等功率变换(Power-invariant)两种约定混用了。这两种约定本身都没有错;但如果算式各取一半混在一起用,就会凭空多出或漏掉 3/2(或 √(3/2))的系数。系数 3/2 的真正来源