ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

无传感器FOC零低速位置估测核心:高频注入原理与工程调试解析

无传感器FOC零低速位置估测核心:高频注入原理与工程调试解析 做电机控制这些年被问得最多的问题十有八九是同一类反电动势观测器在低速下根本不行那位置到底怎么估出来的 答案如果不是加编码器那就是高频注入英文缩写HFI。压缩机、风机、电动助力转向、工业伺服但凡要求零速或极低速下还能输出力矩、又不能装传感器的场合高频注入几乎是唯一能选的路。这篇文章我不堆公式但会把关键推导讲到能自己推的程度不贴完整工程代码但会把解调、观测器结构、参数选择讲清楚附上我调过的系统和踩过的坑。适合刚接手无传感器FOC项目的新手也适合已经能跑反电动势法、想补上零低速段盲区的老手。看完你至少能回答三件事高频注入到底利用了电机的什么特性位置误差信号是怎么一步步算出来的以及到了现场该怎么调、怎么排故。1. 先搞清楚低速下为什么必须换玩法1.1 反电动势法的天花板反电动势观测器的工作基础是旋转的转子在定子绕组里感生出反电动势而反电动势矢量与转子位置有明确的相位关系。问题是反电动势的大小和转速成正比E ≈ Ke·ω。转速掉到额定转速的1%甚至完全停下来时反电动势只剩毫伏级完全淹没在电流采样噪声、逆变器死区误差和开关纹波里信噪比根本无法支撑准确观测。这不是算法不够强而是物理信号本身消失了。另外零速时还有一个更麻烦的事转子不动磁路完全没有变化你施加一个电压只看到电阻和电感而电感在某个固定角度上就是一组常数不携带任何角度信息。所以低速无传感器的核心矛盾是有用的自然信号反电动势消失替代信号必须自己造出来。1.2 高频注入的思路自己造一个探头既然靠自然信号不行那就主动发信号。高频注入的做法是在电流环输出的电压指令上叠加一个固定频率、固定幅值的高频电压或电流分量相当于往电机里打一个周期性探针。转子在不同位置时定子绕组看到的高频阻抗不同高频电流响应的大小和相位也不同。通过分析这个高频电流响应就能连续反推出转子位置。有个很贴切的比喻高频注入就像给电机做CT。反电动势法好比等电机自己发出声音来判断位置高频注入则是主动拍一束信号进去看反射回来的影子。它不怕零速也不怕转速太低因为入射探针信号是恒定存在的。这里必须建立一个认知高频注入本质是测量手段不是控制手段。代价是电压裕量被占用一部分、电机会多出高频损耗和噪声换来的是零速段的转子位置可观测性。这也解释了为什么所有实用的零速无传感器方案——脉振注入、旋转注入、INFORM法——本质上都是同一套主动探测解调的思路区别只在于打探针的方式不同。2. 凸极效应高频注入真正的底气2.1 为什么Ld偏偏不等于Lq高频注入能找到位置依赖的不是转子会转而是转子结构不对称。内置式永磁同步电机IPMSM的磁钢埋在转子铁芯里面d轴磁路必须穿过磁钢磁钢的相对导磁率接近空气相当于在磁路上放了一块砖头磁阻很大q轴磁路基本沿着硅钢片走硅钢片导磁率高磁阻小。所以d轴电感Ld明显小于q轴电感Lq差值通常有30%甚至更高。电感在这里起的作用可以理解成一条磁感应的通道宽度。转子把窄通道装在d轴方向转子一旋转这个窄通道也跟着转。站在定子这边看过去绕组的等效电感就不再是常数而是随转子角度以两倍电角度变化的量。这一点是所有高频注入方法的物理基础也是标题里到底怎么估算的第一层答案估算的不是反电动势而是电感的方向。需要特别提醒的是表面贴式永磁同步电机SPMSM没有明显的几何凸极Ld和Lq几乎相等。那它怎么做高频注入靠磁路饱和。大电流下定子齿部和磁桥进入饱和不同方向的磁路饱和程度不一样等效出一个随负载变化的饱和凸极。这个信号弱得多而且随工况漂移工程上要花不少精力去标定和补偿难度比IPMSM高一个量级。2.2 高频电压怎么把位置套出来以工程上最常用的脉振注入为例在估计的dq旋转坐标系下往估计d轴叠加一个高频电压指令v_dh V_inj·cos(ω_h·t)估计q轴不叠加。此时由于dq轴电感不对称估计q轴上会出现一个高频电流分量它的包络幅值正比于sin(2Δθ)其中Δθ θ_est - θ_actual就是估计位置与真实位置的偏差。可以做一个台架实验来验证把电机锁死在某个角度人为给定一个角度偏差把估计q轴的高频电流包络调出来看。偏差为零时包络等于零偏差加大时包络按正弦规律变大转过45°后开始回落到90°又回到零。这就是高频注入系统里最核心的误差传感器输入是角度偏差输出是一个可测的直流包络信号。从系统角度看整个高频注入位置观测就是一个非线性负反馈系统高频电流包络算出角度误差观测器把误差收敛到零于是估计位置被钉在真实位置上。后面我把从电压到包络的数学关系推一遍重点不是记公式而是理解每一步在信号链里干的是什么活。3. 位置误差信号是怎么算出来的3.1 高频模型简化到只留电感PMSM在转子dq坐标系下的电压方程是v_d Rs·i_d Ld·di_d/dt - ω_e·Lq·i_qv_q Rs·i_q Lq·di_q/dt ω_e·Ld·i_d ω_e·ψf高频注入时注入频率远高于基波频率而且低速下ω_e很小。对高频分量来说电阻压降和反电动势项都可以忽略方程简化成两个纯电感关系v_dh ≈ Ld·di_dh/dtv_qh ≈ Lq·di_qh/dt这两个式子只在真实dq坐标系下成立。实际控制器用的是估计坐标系两者之间差一个角度Δθ。把电感矩阵从真实坐标系变换到估计坐标系对角线之外会出现交叉项交叉项的大小正比于sin(2Δθ)。这就是凸极位置信息第一次现身的位置——它藏在电感矩阵的交叉项里。3.2 推导主线从注入电压到包络记ΣL (Ld Lq)/2ΔL (Ld - Lq)/2估计坐标系下的电感矩阵可以写成L_est [[ΣL ΔL·cos(2Δθ), ΔL·sin(2Δθ)],[ΔL·sin(2Δθ), ΣL - ΔL·cos(2Δθ)]]往估计d轴注入v_dh V_inj·sin(ω_h·t)估计q轴注入零。对电流求响应估计q轴的高频电流为i_qh ≈ V_inj/(2·ω_h) · (1/Lq - 1/Ld) · sin(2Δθ) · cos(ω_h·t)这里有两个关键点。第一包络不只包含sin(2Δθ)还直接乘了(1/Lq - 1/Ld)。凸极率越大、信号越大如果Ld等于Lq这个式子直接归零什么也测不到。第二对IPMSM来说Ld Lq所以(1/Lq - 1/Ld)是负的位置误差信号最终是负系数。后面调PLL符号时容易在这个地方栽跟头提前记住这个负号能省半天排查时间。3.3 解调三步带通、混频、低通实测电流里成分很杂基波电流、开关纹波、高频响应、电流传感器噪声。第一步用带通滤波器把ω_h附近的分量捞出来通常用二阶或四阶Butterworth中心频率等于注入频率带宽取注入频率的10%20%。带宽太窄信号衰减大、响应慢带宽太宽基波和谐波串进来污染误差信号。第二步是同步解调把带通后的q轴电流乘以和载波同相的参考信号。乘完以后信号里会出现一个直流分量包络和一个二倍载波分量。第三步用低通滤波器把二倍载波及高频残余滤掉剩下的直流就是位置误差ε ≈ K·sin(2Δθ)。小角度下sin(2Δθ) ≈ 2Δθ于是ε和角度偏差近似成线性比例。解调里最容易翻车的是参考相位。高频电流经过电感后相位本来就比电压滞后90°再加上滤波器相移、PWM执行延时实测电流的相位和理想载波差得更多。如果直接拿注入电压的载波去乘解调出来的直流分量会带上一个cos(φ)的衰减因子严重时信号直接消失。稳妥做法是用正交解调同时乘sin和cos两条路低通后用atan2把相位问题解决掉或者调试时先把参考相位标定出来。我自己的习惯是在软件里做一个载波相位在线校正——用一个小锁相环跟踪高频电流的实时相位作为解调参考换板子换电机都不用重新标省心不少。3.4 观测器把误差收敛到零误差信号ε进入位置速度观测器最简单的结构是PLL式的二级观测器ω_est Kp·ε ∫Ki·ε·dtθ_est ∫ω_est·dtPI输出估速度速度积分出估位置。工程上我更推荐带机械模型的状态观测器把转动惯量和阻尼也放进去对噪声的抑制比纯PLL好而且突加载时位置不容易跳变。带宽选择上位置环带宽一般取1030Hz阻尼比按0.7左右设计。带宽高了噪声大低了跟不上负载扰动需要上台架反复试。再强调一次符号问题ε是负系数PLL的Kp和Ki符号必须和它匹配否则就是正反馈一使能就发散。我调试的节奏是先不使能观测器通过编码器人为给定固定的Δθ观察ε的符号和幅值确认方向正确以后再闭合环路。多说一句这个先开环验证、再闭环收敛的顺序适用所有形式的无传感器观测器调试不只是高频注入。4. 工程实现频率、幅值、滤波器怎么定4.1 注入频率怎么选四个约束的博弈注入频率选在哪里是一场四边拔河必须远高于基波最高频率一般要求510倍以上否则高频分量和基波混在一起解调无法干净分离。必须高于电流环交叉频率否则电流调节器会把高频电流当误差去纠正注入信号被环路吃掉。一般要求注入频率至少是电流环带宽的23倍。必须低于PWM开关频率的可实现范围工程经验上取开关频率的1/101/5比较稳。太靠近开关频率采样和PWM的离散效应会把信号抹得一塌糊涂。还要避开机械共振点以及人耳最敏感的频率区间。给一组我实际用过的配置10kHz PWM电流环带宽600800Hz应用最高工作频率对应约200Hz电频率注入频率取1.5kHz幅值约为额定电压的8%。这组参数在压缩机类负载上跑得很稳。如果PWM只有6.6kHz注入频率就得压到800Hz左右同时电流环带宽也要降到300400Hz性能会明显下降。选频率时还要注意不要落在PWM谐波的特殊频点上比如1/6开关频率这种位置容易产生拍频干扰。注入幅值没有统一公式经验起点是额定电压的5%10%然后看高频电流幅值。一般让高频电流的幅值达到额定电流的5%15%既不会被电流传感器噪声淹没也不至于带来明显的发热和噪音。传感器分辨率太差时不要盲目加大幅值先解决采样同步问题否则就是噪声越来越大、信号并没有变得更好。4.2 滤波器与解调的工程设计带通滤波器和低通滤波器放在电流采样之后、观测器之前。数字实现推荐用二阶Section级联成四阶10kHz采样率下这些滤波器在MCU上的开销很小。带通中心频率设在注入频率带宽取注入频率的10%20%低通滤波器取注入频率的5%10%兼顾响应速度和纹波抑制。滤波器相位延迟是解调方案必须考虑的量。每一级二阶滤波器在中心频率附近都会引入明显相位偏移两级串起来偏移更大。正交解调之所以实用就是它把相位问题从必须知道精确值降级成相位变化不影响包络提取这是我在实际项目中从单路解调换成正交解调的最直接原因。关于电流采样还有一个容易忽略的点高频注入的电流是差模信号采样必须在PWM开关周期内稳定下来。推荐PWM中心对齐采样避开开关边沿和续流阶段的振荡。单电阻采样重构三相电流的拓扑做高频注入尤其痛苦因为相电流重构对占空比有约束高频电压叠加后容易进入重构盲区。我建议至少在调试阶段用双电阻或三电阻采样否则你会分不清到底问题在高频注入还是电流重构本身。4.3 N/S极的判断sin(2Δθ)天生的半周期盲区sin(2Δθ)以π为周期意味着观测器把误差收敛到零时可能对的是真实N极也可能差180°对的是S极。转子磁极翻转180°电感上看不出任何区别因为电感是二阶张量θ和θπ给出完全相同的值。这是高频注入原理上的半周期盲区不是调试误差。必须单独做磁极极性检测利用的是磁饱和效应沿估计d轴分别注入正向和反向等宽电压脉冲比较电流峰值。如果d轴磁动势和永磁体磁场同向磁路更饱和Ld更小电流峰值更大反向则电流峰值更小。比较两次响应差值就能判定当前估计的d轴到底是不是真实N极方向不对就修正180°。这个检测只在启动时做一次就够了但绝不能省。我见过不止一次因为省掉极性检测电机启动时看起来正常、一加载就过流报警的情况实际就是N/S搞反了后面整个位置轨迹全错。4.4 和反电动势观测器的交接高频注入在高速段就不合适了转速高了以后基波电压和气隙磁场变化都会干扰解调而且高频注入带来的损耗和噪声在高速下完全不可接受。实际工程中都是低速用HFI、高速用反电动势法中间划出一个过渡带用加权融合或状态切换在两种估计之间平滑过渡。过渡带一般选在额定转速的10%左右。切换逻辑里尤其要注意两种方法的估计位置不能直接跳变要做一阶惯性或者角度差限速。我习惯在过渡带同时运行两个观测器持续比较输出角度差差值超过10°就认为异常要么降低电流指令要么报警停机。这个角度差监控不需要落在控制主循环里低速定时器任务里跑就行但一定要有。5. 调试实录我踩过的坑和可以照抄的步骤5.1 第一个坑电流环把注入信号当误差吃掉了第一次调HFI时我把注入频率取在800Hz电流环带宽设在1kHz附近结果解调出来的误差信号小得可怜加大注入电压也没用噪声反而更大。后来想明白电流环带宽高于注入频率PI调节器拼命想把高频电流分量压回去电压指令里那一小块注入高频被电流环的动态响应严重削弱和移相。解决方法是把注入频率抬高到电流环带宽的23倍以上或者把电流环带宽调低。后来又遇到变体问题注入频率够高了但电流环离散采样延时导致注入电压实际施加时已经带了相位偏移解调没做相位补偿时误差信号跟着漂。这条提醒所有人看到误差信号异常先确认解调相位再怀疑控制环顺序反了容易越调越乱。5.2 第二个坑逆变器非线性和偏置失真空载实验一切正常一加载位置偏差就变大而且偏差随负载周期性波动。这是典型的逆变器非线性死区时间、开关管压降和交叉饱和共同造成的它们会往高频电流路径里注入额外谐波和直流偏置最终反映成位置误差纹波。处理分几步先做死区补偿和二管压降补偿把最基础的电压失真消掉再把ADC采样时刻对齐到PWM载波中心避免采样窗口内有开关动作最后如果还有剩余误差就标定一张角度误差补偿表按电流幅值和角度查表修正估计位置。现场标一张8×8的二维表通常能把负载下的位置误差从十几度压到两三度以内。这个表不用标太密关键是最小值和额定负载两个工况之间的区域插值密度要够。5.3 推荐的调试顺序我自己的调试流程写在这里可以照抄台架上带编码器锁死转子只执行注入和解调不闭合观测器。人为设置Δθ从0、5°、10°一直到90°把ε的曲线画出来确认是sin(2Δθ)的形状同时确定极性。使能观测器初始角度随便给观察估计位置能否在几百毫秒内收敛到编码器读数。如果收敛到差180°的位置去查极性检测逻辑。给转子一个很小的恒转速比如额定转速的2%看估计位置能否持续跟踪记录动态误差。逐步加载矩从0到额定负载记录位置误差随负载的变化曲线决定要不要加载补偿表。最后做动态性测试突加载、反转、零速悬停重点看位置误差是否还在可控范围内。每做完一步都要把高频电流包络、滤波后误差信号、估计位置三个量一起看不要只看最终位置。一个有用的习惯是在调试软件里加一个HFI调试页同时显示注入频率、注入幅值、带通输出有效值、解调直流分量、PLL带宽这几个参数现场改一个变量立刻看效果比黑盒试错快得多。5.4 一个可以快速验证的伪代码骨架贴一段示意性质的伪代码作用是展示软件结构真实工程里要加上中断处理、滤波状态保存和归一化标定// 每个PWM周期(载波中断)执行一次 // 1. 读取三相电流并变换到估计dq坐标系 read_current(ia, ib, ic); iq clarke_park(ia, ib, ic, theta_est); // 2. 带通滤波器提取q轴高频电流分量 iq_hf biquad_bpf(iq); // 中心频率 f_inj // 3. 正交解调乘sin/cos两路参考后低通 ref_sin sin(2 * PI * f_inj * t_sample); ref_cos cos(2 * PI * f_inj * t_sample); eps_a lpf(iq_hf * ref_sin); eps_b lpf(iq_hf * ref_cos); eps atan2(eps_a, eps_b); // 或单路解调配合相位校正 // 4. 位置观测器(PLL简化版) w_est ki * eps * Ts; w_est w_est kp * eps; theta_est w_est * Ts;这段代码每一行对应前面讲的一个环节采样变换、带通、解调、低通、PLL。调参顺序也是这个顺序先确认iq_hf里能看到干净的载波再确认解调后的ε随Δθ线性变化最后才动观测器参数。6. 常见问题速查表高频注入的故障不少但大多能归到几个典型大类。下面这张表是这几年在台架上和现场攒出来的经验不一定覆盖所有情况但八成以上的问题能对号入座。现象可能原因排查与处理零速时位置正常一加载偏差变大交叉饱和、逆变器非线性死区补偿、饱和误差补偿表使能观测器后位置发散PLL符号接反或增益过大开环确认ε极性降低增益解调信号太小加大注入电压也没用载波相位没对齐电流环带宽过高用正交解调确认f_inj高于电流环2~3倍收敛后位置恒差180°N/S极性检测缺失或误判补磁极极性脉冲检测开机后位置抖动无法稳定收敛滤波器带宽太窄或PLL带宽太高加宽带通降低PLL带宽高频啸叫明显客户不能接受注入频率落在人耳敏感区降低幅值或把注入频率移到18kHz以上需更高PWM转速升高后位置误差越来越大切换太晚已超出HFI适用范围提前进入与反电动势法的过渡带单电阻采样系统下效果差相电流重构盲区换多电阻采样或让注入避开低占空比区低速悬停时存在固定角度偏置电流传感器零漂、坐标变换角度标定偏差校准零漂核对坐标变换符号真正复杂的疑难杂症多数不是单点失效而是滤波、解调、观测器三个环节的参数互相牵扯。遇到这种问题我建议把前面调试流程的第1步重新做一遍回到开环状态一个环节一个环节排查。还有一个经验别在同一时间改两个参数。高频注入的参数耦合性强一次只动一个变量记录现象再动下一个否则你永远不知道自己到底改了哪个导致好转哪个导致恶化。我个人在高频注入上最大的体会就是这个技术的门槛不在公式推导而在你知道每一段信号在干什么。公式背得再熟如果不知道带通滤波之后的波形长什么样、解调出来的直流分量该是正是负、观测器使能瞬间会不会正反馈照样会把一块完好的板子调成废品。反过来只要把信号链每一个环节拿到示波器上过一遍高频注入其实是无传感器FOC里最不玄学的一部分。建议所有正在调这个方向的同行先花半天时间做信号链开环测试比盲目调PI参数管用得多。
返回列表