☰
无感FOC低速破局:d轴方波高频注入HFI算法推导与实战避坑
2026/10/27 9:22:06 网站建设 项目流程

1. 无感FOC低速困境与HFI的破局逻辑

1.1 为什么低速段成了无感FOC的“灯下黑”

搞过永磁同步电机(PMSM)无感FOC的人都有一个共识:中高速段靠反电动势观测转子位置,基本能跑得不错,但一到低速甚至零速,反电动势幅值小到被噪声淹没,观测器就彻底“瞎了”。我刚开始做无感FOC那会儿,用隆贝格观测器在额定转速30%以上跑得很稳,但一旦降到5%以下,转子位置估算误差直接飙到30度以上,电机开始抖动、失步,甚至反转。这个问题的根源在于:反电动势与转速成正比,低速时信噪比太低,任何基于基波模型的观测器都无能为力。

那怎么办?既然基波信号太弱,那就主动注入一个高频信号,让电机在低速段也能“被看见”。这就是高频注入(HFI,High Frequency Injection)的核心思路。HFI不依赖反电动势,而是利用电机的凸极效应(saliency),通过注入高频电压信号,从高频电流响应中提取转子位置信息。这个思路的美妙之处在于:凸极效应是电机结构本身决定的,与转速无关,所以HFI在零速和极低速下依然有效。

1.2 凸极效应:HFI的物理根基

要理解HFI,必须先吃透凸极效应。PMSM按转子结构分为表贴式(SPM)和内置式(IPM)。SPM的永磁体贴在转子表面,d轴和q轴电感基本相等,凸极率接近1,HFI效果很差。而IPM的永磁体嵌入转子内部,d轴磁路经过永磁体(磁导率接近空气),q轴磁路经过硅钢片(磁导率高),导致Ld < Lq,凸极率通常在1.5到3之间。这个电感差异就是HFI的“信号源”。

从数学上看,电机的电压方程在dq坐标系下可以写成:

ud = Rs*id + Ld*d(id)/dt - ωe*Lq*iq uq = Rs*iq + Lq*d(iq)/dt + ωe*Ld*id + ωe*ψf

在低速时,ωe≈0,交叉耦合项和反电动势项可以忽略,方程简化为:

ud ≈ Rs*id + Ld*d(id)/dt uq ≈ Rs*iq + Lq*d(iq)/dt

这时候,如果在d轴注入一个高频方波电压,电流响应就只跟Ld有关;如果在q轴注入,电流响应只跟Lq有关。由于Ld≠Lq,通过检测高频电流的幅值差异,就能判断转子位置。这就是HFI的底层逻辑。

1.3 方波注入 vs 正弦波注入:为什么选方波

HFI的注入信号形式有很多种:正弦波、方波、脉冲序列等。早期我用正弦波注入,效果还行,但有几个痛点:一是需要低通滤波器提取高频响应,滤波器带来相位延迟,影响动态性能;二是正弦波注入的幅值受限,信噪比不够高;三是解调过程需要乘法器和滤波器,计算量大。

后来切换到方波注入,发现优势明显。方波注入的频谱更宽,能量集中在开关频率附近,可以用同步采样直接提取电流响应,不需要低通滤波器,省掉了相位延迟。而且方波注入的幅值可以更大,信噪比更高。最关键的是,方波注入的解调过程极其简单:只需要在方波的正半周期和负半周期分别采样电流,然后做差即可。这个差值直接反映了凸极效应,计算量小到可以忽略。

具体来说,d轴方波高频注入的基本原理是:在估计的d轴(d_hat)上注入一个高频方波电压,频率通常取开关频率的一半(比如10kHz开关频率,注入5kHz方波)。然后在每个方波周期的正负半周期分别采样d_hat轴和q_hat轴的电流,通过电流差值提取位置误差信号,再送入锁相环(PLL)或龙贝格观测器估算转子位置和转速。

2. d轴方波高频注入的算法推导全流程

2.1 坐标系定义与注入信号建模

推导之前,先把坐标系理清楚。设实际转子位置为θe,估计转子位置为θ_hat,位置误差Δθ = θe - θ_hat。定义实际dq坐标系和估计d_hat-q_hat坐标系。注入信号加在估计d轴(d_hat)上,形式为:

u_d_hat_inj = V_inj * (-1)^n

其中V_inj是注入电压幅值,n是方波周期计数,(-1)^n表示正负交替。注入频率f_inj = f_sw/2,f_sw是PWM开关频率。这个方波在频域上表现为奇次谐波,基波频率就是f_inj。

为什么选d轴注入而不是q轴?因为d轴注入时,高频电流响应主要包含位置误差信息,而q轴注入会引入转矩脉动。d轴注入对转矩影响小,更适合低速运行。当然,也有q轴注入的方案,但d轴注入在工程上更常见。

2.2 高频电流响应推导

在估计坐标系下,高频电压方程可以写成:

u_d_hat = Rs*i_d_hat + L_d_hat*d(i_d_hat)/dt + L_dq_hat*d(i_q_hat)/dt u_q_hat = Rs*i_q_hat + L_dq_hat*d(i_d_hat)/dt + L_q_hat*d(i_q_hat)/dt

其中L_d_hat、L_q_hat、L_dq_hat是估计坐标系下的电感参数,它们与实际dq轴电感的关系为:

L_d_hat = L_avg + L_diff*cos(2Δθ) L_q_hat = L_avg - L_diff*cos(2Δθ) L_dq_hat = L_diff*sin(2Δθ)

这里L_avg = (Ld+Lq)/2,L_diff = (Lq-Ld)/2。注意,对于IPM,Lq > Ld,所以L_diff > 0。

在高频注入下,电阻压降远小于电感压降,可以忽略Rs。同时,注入频率远高于基波频率,基波电流可以视为常数。于是方程简化为:

u_d_hat_inj ≈ L_d_hat*d(i_d_hat)/dt + L_dq_hat*d(i_q_hat)/dt 0 ≈ L_dq_hat*d(i_d_hat)/dt + L_q_hat*d(i_q_hat)/dt

从第二个方程解出d(i_q_hat)/dt,代入第一个方程,得到:

d(i_d_hat)/dt = u_d_hat_inj * L_q_hat / (L_d_hat*L_q_hat - L_dq_hat^2) d(i_q_hat)/dt = -u_d_hat_inj * L_dq_hat / (L_d_hat*L_q_hat - L_dq_hat^2)

把L_d_hat、L_q_hat、L_dq_hat的表达式代入,经过三角恒等变换,可以得到:

d(i_d_hat)/dt = u_d_hat_inj * (L_avg - L_diff*cos(2Δθ)) / (Ld*Lq) d(i_q_hat)/dt = -u_d_hat_inj * L_diff*sin(2Δθ) / (Ld*Lq)

这个结果非常关键。可以看到,d_hat轴的高频电流导数包含cos(2Δθ)项,而q_hat轴的高频电流导数包含sin(2Δθ)项。当Δθ很小时,sin(2Δθ)≈2Δθ,所以q_hat轴的高频电流导数与位置误差成正比。这就是提取位置误差信号的依据。

2.3 方波正负半周期电流差值提取

方波注入的巧妙之处在于,不需要对电流求导,而是利用正负半周期的电流差值。设方波正半周期电压为+V_inj,持续时间为T_inj/2;负半周期电压为-V_inj,持续时间也是T_inj/2。在正半周期结束时,电流变化量为:

Δi_d_hat_pos = V_inj * T_inj/2 * (L_avg - L_diff*cos(2Δθ)) / (Ld*Lq) Δi_q_hat_pos = -V_inj * T_inj/2 * L_diff*sin(2Δθ) / (Ld*Lq)

在负半周期结束时,电流变化量为:

Δi_d_hat_neg = -V_inj * T_inj/2 * (L_avg - L_diff*cos(2Δθ)) / (Ld*Lq) Δi_q_hat_neg = V_inj * T_inj/2 * L_diff*sin(2Δθ) / (Ld*Lq)

正负半周期的电流差值(正减负)为:

Δi_d_hat_diff = V_inj * T_inj * (L_avg - L_diff*cos(2Δθ)) / (Ld*Lq) Δi_q_hat_diff = -V_inj * T_inj * L_diff*sin(2Δθ) / (Ld*Lq)

在实际实现中,我们通常在每个方波半周期的末尾采样电流,然后计算相邻两个半周期的电流差值。这个差值就是上面推导的结果。注意,这里假设电流在半个周期内线性变化,这个假设在注入频率远高于基波频率时成立。

2.4 位置误差信号提取与锁相环设计

从Δi_q_hat_diff中提取位置误差信号。由于sin(2Δθ)≈2Δθ(当Δθ很小时),所以:

ε = -Δi_q_hat_diff * (Ld*Lq) / (V_inj * T_inj * L_diff) ≈ 2Δθ

这个ε就是位置误差信号。实际实现中,不需要知道Ld、Lq、L_diff的精确值,只需要知道它们的符号和大致比例,因为后续的PLL会通过闭环调节消除误差。通常把ε乘以一个增益Kp,然后送入PLL。

PLL的结构很简单:一个PI控制器加上一个积分器。PI控制器的输入是ε,输出是估计转速ω_hat;积分器的输入是ω_hat,输出是估计位置θ_hat。PI参数的设计需要根据注入频率和电机参数来整定。我一般先用MATLAB/Simulink仿真调参,然后再上实物。经验值是:Kp取0.5到2之间,Ki取Kp的1/100到1/10之间,具体看电机惯量和注入频率。

注意:PLL的带宽不能太高,否则会引入高频噪声;也不能太低,否则动态响应慢。一般取注入频率的1/10到1/5。

2.5 方波注入的离散化实现细节

在实际DSP实现中,方波注入需要与PWM周期同步。假设PWM频率为10kHz,注入方波频率为5kHz,那么每个方波半周期对应一个PWM周期。具体实现步骤:

  1. 在每个PWM周期开始时,判断当前是正半周期还是负半周期。
  2. 如果是正半周期,在d_hat轴电压指令上叠加+V_inj;如果是负半周期,叠加-V_inj。
  3. 在每个PWM周期结束时,采样三相电流,经过Clarke/Park变换得到i_d_hat和i_q_hat。
  4. 计算当前半周期电流与上一个半周期电流的差值。
  5. 用Δi_q_hat_diff计算位置误差信号ε。
  6. 将ε送入PLL,更新θ_hat和ω_hat。
  7. 将θ_hat用于Park变换和SVPWM。

这里有一个关键点:电流采样时刻必须与方波边沿对齐。通常选择在PWM周期中点采样,这样可以避开开关噪声。另外,采样延迟和PWM更新延迟会影响PLL的相位裕度,需要在设计时补偿。

3. 从仿真到实物的完整实操记录

3.1 仿真环境搭建与参数配置

我一般用MATLAB/Simulink做HFI的仿真验证。搭建模型时,需要包含以下模块:PMSM电机模型(设置Ld、Lq、Rs、ψf等参数)、逆变器模型(用平均模型或开关模型)、HFI注入模块、电流采样模块、PLL模块、SVPWM模块。电机参数我常用一台2.2kW的IPM电机:Ld=5mH,Lq=15mH,Rs=0.5Ω,ψf=0.1Wb,极对数4。

仿真步长设为1e-6秒,PWM频率10kHz,注入方波频率5kHz,注入电压幅值20V。为什么选20V?因为注入电压太小,信噪比不够;太大,会引入额外的转矩脉动和噪声。一般取额定电压的10%到20%。对于这台电机,额定电压约200V,20V就是10%。

仿真时,先让电机在零速启动,观察PLL能否锁定转子位置。我一开始调的时候,PLL增益设得太大,导致位置估算振荡;后来把Kp降到0.8,Ki降到0.01,就稳定了。然后测试低速运行,从0到100rpm,观察位置误差。仿真结果显示,稳态位置误差在5度以内,动态响应时间约50ms。

3.2 实物平台搭建与调试步骤

实物平台我用的是TI的TMS320F28069控制板,搭配一台2.2kW IPM电机和一台伺服驱动器。调试步骤:

  1. 先不注入高频信号,用电流闭环和速度开环,确认电流采样和PWM输出正常。
  2. 加入方波注入,但先不接PLL,用示波器观察Δi_q_hat_diff波形。正常情况下,应该看到与位置误差相关的正弦波形。
  3. 接入PLL,先用手转动转子,观察θ_hat是否能跟随θe。如果跟随不上,检查PLL增益和注入幅值。
  4. 零速闭环启动:给一个小的速度指令(比如10rpm),观察电机能否平稳启动。如果抖动,降低PLL带宽或增大注入幅值。
  5. 低速运行测试:从10rpm到200rpm,逐步增加速度,观察位置误差和电流波形。

我踩过的一个坑:一开始没有考虑电流采样延迟,导致PLL相位滞后,电机在低速时抖动。后来在PLL中加了一个相位补偿环节,问题解决。具体做法是在ε上乘以一个补偿系数,或者直接在θ_hat上加上一个固定的相位偏移。

3.3 关键参数整定与优化

HFI的性能很大程度上取决于参数整定。以下是我总结的关键参数整定表:

参数典型值影响整定建议
注入电压幅值10%-20%额定电压信噪比、转矩脉动从小往大调,直到位置误差稳定
注入频率开关频率的1/2噪声、采样精度一般取5kHz-10kHz
PLL Kp0.5-2动态响应、稳定性从0.5开始,逐步增大
PLL KiKp/100 - Kp/10稳态误差、振荡先调Kp,再调Ki
电流采样延迟补偿0.5-1个PWM周期相位裕度根据实际延迟调整

提示:注入电压幅值不要超过额定电压的25%,否则会引起明显的转矩脉动和噪声。

3.4 实测波形分析与问题定位

实测时,我用示波器抓取了几个关键波形:d_hat轴电流、q_hat轴电流、位置误差信号ε、估计位置θ_hat和实际位置θe。正常波形应该是:d_hat轴电流呈方波形状,q_hat轴电流呈正弦形状,ε在零附近波动,θ_hat平滑跟随θe。

如果发现θ_hat抖动,可能的原因有:PLL增益太大、注入幅值太小、电流采样噪声大、PWM死区影响。我遇到过一次θ_hat抖动,排查后发现是电流采样电阻的温漂导致采样偏差,换了低温漂电阻后解决。还有一次是死区补偿没做好,导致电流波形畸变,影响了HFI的精度。

4. 常见问题排查与避坑经验实录

4.1 HFI低速抖动与失步的排查思路

低速抖动是HFI最常见的故障。排查时,我一般按以下顺序:

  1. 检查注入信号是否正常:用示波器看d_hat轴电压指令,确认方波幅值和频率正确。
  2. 检查电流采样:看d_hat和q_hat轴电流波形,确认没有明显畸变或噪声。
  3. 检查PLL:看ε和θ_hat波形,确认PLL没有振荡。
  4. 检查电机参数:确认Ld、Lq、Rs设置正确,特别是Ld和Lq的差异是否足够大。
  5. 检查死区补偿:死区会导致电压误差,影响HFI精度。

如果以上都正常,但电机仍然抖动,可以尝试降低PLL带宽、增大注入幅值、或者改用q轴注入。我遇到过一台SPM电机,凸极率只有1.1,HFI效果很差,最后改用其他方法。

4.2 高频噪声与电磁干扰的抑制技巧

HFI注入的高频信号会带来噪声和电磁干扰。抑制方法:

  • 在电流采样电路上加RC低通滤波器,截止频率设为注入频率的2倍以上。
  • 在PWM输出上加共模扼流圈,减少高频辐射。
  • 在软件中加限幅和滤波,防止噪声进入PLL。
  • 注入频率尽量避开机械共振频率。

我实测下来,加RC滤波和共模扼流圈后,噪声明显降低,位置估算更稳定。

4.3 不同电机凸极率下的HFI适配策略

不同电机的凸极率差异很大,HFI的适配策略也不同:

凸极率电机类型HFI效果适配策略
<1.2SPM差不建议用HFI,改用其他方法
1.2-1.5弱凸极IPM一般增大注入幅值,降低PLL带宽
1.5-2.5常规IPM好标准参数即可
>2.5强凸极IPM很好可降低注入幅值,提高PLL带宽

我手头有一台凸极率1.3的电机,用HFI时位置误差约10度,勉强能跑;后来换了一台凸极率2.0的电机,位置误差降到3度以内,效果立竿见影。

4.4 从HFI到全速域无感FOC的切换逻辑

HFI只在低速段有效,中高速段还是要靠反电动势观测器。所以需要设计一个平滑切换逻辑。我一般用以下策略:

  • 低速段(<10%额定转速):HFI单独工作。
  • 过渡段(10%-20%额定转速):HFI和观测器加权融合,权重随速度线性变化。
  • 高速段(>20%额定转速):观测器单独工作。

切换时要注意:两个观测器的输出要平滑过渡,避免突变。我通常用一阶低通滤波器做加权,时间常数取100ms左右。实测下来,切换过程平稳,没有明显抖动。

注意:切换点不能太低,否则观测器还没准备好;也不能太高,否则HFI的噪声已经很大。一般取10%-20%额定转速。

4.5 实操心得与独家避坑清单

最后分享几条我踩坑总结的经验:

  • 注入方波的边沿要尽量陡峭,但也要考虑EMI。我一般用PWM比较值直接生成方波,边沿时间约100ns。
  • 电流采样时刻要精确对齐方波边沿,误差超过1us就会影响精度。
  • PLL的积分器要加限幅,防止积分饱和。
  • 电机参数会随温度变化,Ld和Lq的差异也会变化,所以HFI的精度会受温度影响。高温时位置误差可能增大,需要做温度补偿。
  • 调试时先用示波器看波形,再用示波器看波形,最后还是用示波器看波形。重要的事情说三遍。

这个内容后续还可以这样扩展:一是把方波注入改成伪随机注入,降低噪声;二是结合粒子群算法优化PLL参数;三是用卷积神经网络做位置误差信号的去噪。这些方向我都试过一些,效果不错,有机会再细聊。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询