ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

无感FOC方案:高频注入与滑模观测器融合的IPM低速控制实践

无感FOC方案:高频注入与滑模观测器融合的IPM低速控制实践 1. 这套无感FOC方案到底在解决什么问题永磁同步电机的无感控制说白了就是去掉旋转变压器或者霍尔传感器只靠电流和电压采样去“猜”转子现在在什么位置、转多快。这件事在高速段其实不难反电动势足够大滑模观测器SMO随便跑跑就能收敛。真正让人头疼的是两个场景一是零速和极低速反电动势几乎为零观测器直接“瞎了”二是启动瞬间转子初始位置如果判断错了轻则启动抖动、重则直接反转甚至过流炸管。这套TIDSP_F283xC2000_IPM_FOC_Sensorless_V1.0的 B1.1 版本核心思路就是分段治理低速区域用高频注入HFI把转子凸极信息“逼”出来中高速区域切到滑模观测器中间用一套权重切换逻辑做平滑过渡。主控选的是 TI 的 F283xC2000 系列C2000 家族里带 FPU 和 TMU 的经典款电机对象是 IPM内置式永磁同步电机因为 IPM 有天然的凸极效应Ld ≠ Lq高频注入才有物理基础。我先把这套方案的适用人群说清楚如果你正在做风机、水泵、压缩机这类负载相对平稳、对低速转矩有一定要求的应用这套架构非常合适如果你做的是需要频繁正反转、零速大转矩保持的伺服场景那高频注入的带宽和噪声问题需要额外权衡。下面我按“为什么这么设计—关键细节—实操落地—踩坑排查”的顺序把整个方案拆开讲。2. 整体架构设计与方案选型逻辑2.1 为什么是“高频注入 滑模观测器”而不是单一观测器很多人第一反应是既然 SMO 在中高速好用HFI 在低速好用那能不能只用一个实测下来不行。SMO 的本质是基于反电动势的反电动势幅值正比于转速零速时它就是个零数学上无法观测。而 HFI 依赖的是电机的凸极效应转速越高基波频率越接近注入频率两者会互相干扰解调出来的位置误差会越来越大。所以这套方案的分工非常明确零速到低速段大约 0~10% 额定转速HFI 主导负责初始位置辨识和低速闭环。中高速段大约 15% 额定转速以上SMO 主导负责稳态和动态跟踪。中间过渡带用权重系数做加权融合避免硬切换导致的转矩冲击。这个“权重切换”是 B1.1 版本相对早期版本最大的改进点。早期版本用阈值硬切切换瞬间电流环给定会跳变听声音就是“咯噔”一下。加权融合之后两个观测器的估计角度按转速平滑过渡实测切换过程基本听不出来。2.2 IPM 凸极效应是高频注入的物理前提这里必须补一个基础知识点否则后面看不懂。IPM 电机的转子磁钢是内嵌的导致 d 轴磁钢方向和 q 轴的电感不一样通常 Lq Ld。这个差值就是凸极率一般 IPM 的凸极率在 1.2~2.5 之间。高频注入就是往电机里打一个高频电压信号由于 Ld ≠ Lqd 轴和 q 轴对高频信号的阻抗不同响应电流里就带上了转子位置信息。注意如果你的电机是表贴式SPMLd ≈ Lq凸极率接近 1高频注入基本失效。这套方案对 SPM 不适用选型时先确认电机类型。2.3 主控选型为什么是 F283xC2000F283xC2000 系列有几个关键外设直接决定了这套方案能不能跑起来资源作用为什么关键12位 ADC多通道采样三相电流、母线电压高频注入需要高采样率ADC 转换时间要短ePWM 模块生成 SVPWM 驱动信号死区、载波频率、注入信号都靠它FPU TMU浮点运算和三角函数加速SMO 和 HFI 解调涉及大量 sin/cosTMU 能省一半周期CLA 协处理器并行处理观测器把观测器丢给 CLA主核专心跑电流环我实测下来如果不用 TMU光 HFI 的解调部分两次 Park 变换加低通滤波就能吃掉 30% 的 CPU。用了 TMU 之后整个观测器加电流环跑在 10kHz 载波下CPU 占用大概 55%~65%留有余量。3. 核心细节解析与实操要点3.1 高频注入的具体实现方式这套方案用的是旋转高频电压注入不是方波注入。为什么选旋转注入因为方波注入虽然带宽高、噪声小但对电流采样时刻要求极其苛刻需要和 PWM 载波严格同步调试难度大。旋转注入实现简单、鲁棒性好适合先跑通再优化。具体做法是在估计的 d 轴坐标系上叠加一个高频电压Vd_hfi Vc * cos(ωc * t) Vq_hfi Vc * sin(ωc * t)其中 Vc 是注入幅值ωc 是注入角频率。注入频率一般选在500Hz~2kHz之间我通常取载波频率的 1/10 到 1/5。比如载波 10kHz注入频率取 1kHz 左右。注入幅值的选取有个经验公式Vc 大约取额定电压的 10%~20%。太小了解调信噪比不够太大了会引入额外损耗和噪声。我一般从 15% 开始试看解调出来的位置误差波形如果毛刺大就适当加大。3.2 位置解调的关键同步解调 低通滤波高频响应电流里包含正序和负序分量转子位置信息藏在负序分量里。解调步骤大致是采样三相电流Clarke 变换到 αβ。用注入频率做 Park 变换把高频分量搬到直流。通过低通滤波器LPF滤掉基波和开关频率。对滤波后的信号做反正切得到位置误差。误差送进锁相环PLL或龙伯格观测器输出估计角度和转速。这里的 LPF 截止频率很讲究。截止频率太高基波干扰滤不干净太低动态响应变慢。我一般取注入频率的 1/5 到 1/3。比如注入 1kHzLPF 截止取 200~300Hz。实操心得LPF 用一阶还是二阶一阶相位滞后小但衰减不够二阶衰减好但相位滞后大。低速段对相位滞后敏感我建议先用一阶跑通如果解调纹波大再换二阶同时把 PLL 带宽相应调高补偿相位。3.3 滑模观测器的设计要点SMO 的核心是用电流观测误差构造滑模面通过符号函数或者饱和函数迫使观测电流跟踪实际电流从而反推出反电动势再从中提取转子位置。这套方案里 SMO 的几个关键参数滑模增益 K太小收敛慢太大抖振严重。经验值是反电动势幅值的 1.5~2 倍。边界层厚度用饱和函数代替符号函数时边界层越厚抖振越小但精度越低。我一般取额定电流的 5%~10%。反电动势 LPFSMO 输出的反电动势有高频抖振必须滤波。截止频率取基波频率的 2~3 倍。SMO 在低速段精度差是物理决定的所以这套方案里 SMO 只在 15% 额定转速以上才真正参与输出低速段它的输出被权重系数压到接近零。3.4 权重切换的数学实现权重切换的核心是一个随转速变化的系数 ww f(ω_est)当 ω_est ω_low 时w 0完全用 HFI当 ω_est ω_high 时w 1完全用 SMO中间线性过渡。最终估计角度θ_est (1 - w) * θ_hfi w * θ_smo这里有个坑两个观测器输出的角度是各自独立的直接加权平均在角度跨越 0/2π 边界时会出错。正确做法是先把角度转成 sin/cos 分量再加权或者做角度差归一化后再融合。我踩过这个坑切换瞬间角度突然跳了 2π电机直接抖一下。注意ω_low 和 ω_high 的选取要看电机额定参数。我一般取 ω_low 8%~10% 额定转速ω_high 15%~20% 额定转速。过渡带太窄切换冲击大太宽则两个观测器互相干扰的时间变长。4. 实操过程与核心环节实现4.1 硬件与工程环境准备先把基础环境搭起来。硬件上你需要F283xC2000 主控板我用的是官方 LaunchPad 加自制功率板IPM 电机一台确认凸极率 1.2三相逆变桥母线电压根据电机额定选至少两相电流采样三电阻或双电阻方案编码器仅用于调试对比最终要能脱开软件环境CCSCode Composer Studio最新版C2000Ware 里的电机驱动库示波器或 DAC 输出通道用来实时看观测器波形4.2 电流环与 PWM 配置载波频率我设 10kHz电流环也在 10kHz 中断里跑。ePWM 配置成中心对齐模式死区设 1~2μs根据你的驱动芯片和 MOS 管选。电流采样时刻很关键。中心对齐模式下一般在计数器过零或者峰值时触发 ADC。我习惯在下桥臂全通的时刻采样这样能采到真实的相电流。具体时刻要结合你的 PWM 模式和死区补偿来调。// 伪代码示意实际用 C2000 的 EPWM 配置 EPWM_setCounterCompare(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, dutyA); EPWM_setCounterCompare(EPWM1_BASE, EPWM_COUNTER_COMPARE_B, dutyB); EPWM_setCounterCompare(EPWM1_BASE, EPWM_COUNTER_COMPARE_C, dutyC); // ADC 触发点设在计数器零点 ADC_setInterruptTrigger(ADC_BASE, ADC_INT_SOC, EPWM1_SOCA);4.3 高频注入的代码落地HFI 部分我建议单独放一个函数在电流环中断里调用。核心步骤// 1. 生成注入电压 float Vc 0.15f * Vdc; // 注入幅值 float theta_c omega_c * t; // 注入相位 float Vd_inj Vc * cosf(theta_c); float Vq_inj Vc * sinf(theta_c); // 2. 叠加到电流环输出上 Vd_ref Vd_inj; Vq_ref Vq_inj; // 3. 采样电流后做同步解调 // 把 αβ 电流用注入频率旋转到 dq i_d_hf i_alpha * cosf(theta_c) i_beta * sinf(theta_c); i_q_hf -i_alpha * sinf(theta_c) i_beta * cosf(theta_c); // 4. 低通滤波 i_d_hf_filt LPF(i_d_hf, fc); i_q_hf_filt LPF(i_q_hf, fc); // 5. 提取位置误差 theta_err atan2f(i_q_hf_filt, i_d_hf_filt); // 6. PLL 跟踪 pll_update(theta_err, theta_hfi, omega_hfi);这段代码里cosf和sinf如果不用 TMU 会非常耗时。F283xC2000 的 TMU 可以直接算周期数从几十降到几个。4.4 初始位置辨识流程上电后的初始位置辨识是这套方案的重头戏。流程是先给一个固定的 d 轴电压矢量让电机轻微对齐可选有些方案跳过。施加高频旋转电压持续 200~500ms。采集解调后的位置误差等 PLL 收敛。读取收敛后的 θ_hfi 作为初始位置。判断极性N/S 极因为高频注入只能辨识出凸极方向无法区分磁极极性。极性判断我一般用脉冲注入法在估计的 d 轴正反方向各打一个短时电压脉冲比较电流响应幅值幅值大的方向就是磁极方向。这一步不能省否则有 50% 概率启动反转。实操心得初始位置辨识期间电机可能会有轻微抖动或“吱”声这是正常的。如果抖动很大说明注入幅值太大适当降低 Vc。如果完全没声音且辨识失败检查注入频率是否和载波冲突。4.5 从开环到闭环的启动时序启动时序我整理成一张表方便对照阶段时间观测器控制方式初始位置辨识0~500msHFI开环只辨识不输出转矩低速闭环500ms~HFI闭环电流环速度环过渡带转速到 8%~15%HFISMO 加权闭环中高速转速 15%SMO闭环启动时速度环给定要斜坡上升不能直接给阶跃。我一般用 100~200ms 的斜坡避免启动电流冲击。5. 常见问题与排查技巧实录5.1 初始位置辨识不准的几种表现现象可能原因排查方法辨识角度偏差固定极性判断错误检查脉冲注入方向确认磁极辨识角度随机跳PLL 未收敛延长辨识时间降低 PLL 带宽辨识完全失败注入幅值太小或电机凸极率低加大 Vc确认电机类型辨识时有异响注入频率接近机械共振调整注入频率避开共振点5.2 切换瞬间抖动的排查切换抖动是这套方案最容易出问题的地方。我遇到过三种情况第一种是角度融合时没处理 2π 边界前面提过改成 sin/cos 加权就好。第二种是两个观测器的转速估计不一致切换时速度环给定跳变解决办法是在过渡带内对转速也做加权。第三种是 SMO 在低速段本身输出就是错的权重系数还没压到零就开始参与导致污染。这时候要把 ω_low 往上调确保 SMO 输出有效后才开始加权。5.3 低速段电流纹波大高频注入本身会带来电流纹波这是原理决定的。如果纹波大到影响控制可以从三个方向优化降低注入幅值 Vc但要注意解调信噪比。提高注入频率让纹波更容易被 LPF 滤掉但受限于载波频率。优化 LPF 参数在相位滞后和滤波效果之间找平衡。我实测下来注入幅值取额定电压 12%~15%、注入频率取载波 1/8 左右纹波和辨识精度比较平衡。5.4 SMO 抖振严重SMO 抖振一般来自滑模增益过大或者边界层太薄。先把增益降到反电动势幅值的 1.2 倍试试如果收敛变慢再往上加。边界层厚度可以适当加大代价是精度略降。另外反电动势 LPF 的截止频率也要检查太低会导致相位滞后太高则滤波无效。5.5 常见问题速查表问题首选排查点次选排查点电机不转PWM 输出、死区、母线电压电流采样极性启动反转极性判断、初始位置相序接线低速抖动HFI 参数、LPF 截止电流环带宽高速失步SMO 增益、反电动势 LPF速度环限幅切换冲击权重系数、角度融合方式转速加权电流采样噪声大采样时刻、ADC 参考硬件滤波6. 调试经验与参数整定顺序6.1 参数整定的推荐顺序这套系统参数多乱调容易互相干扰。我总结的顺序是先调电流环脱开观测器用编码器做有感到电流环把 PI 参数整定好。电流环带宽一般取载波频率的 1/10 到 1/5。再调 HFI锁定电机不转只跑高频注入看解调角度是否稳定。调注入幅值、频率、LPF、PLL 带宽。然后调 SMO用编码器对比在中高速段调 SMO 增益和 LPF看估计角度和实际角度的误差。最后调切换把两个观测器都跑起来调权重系数和过渡带宽度看切换过程。整体联调从零速启动到额定转速看全过程。这个顺序的核心逻辑是先局部后整体每个环节单独验证过再联调否则出了问题根本不知道是哪部分的锅。6.2 几个容易被忽略的细节第一个是死区补偿。低速段死区导致的电压误差占比很大不补偿的话 HFI 解调出来的位置会有固定偏差。我一般用基于电流极性的补偿方法简单有效。第二个是母线电压波动。HFI 注入幅值如果按固定值给母线电压波动时实际注入幅值会变影响辨识一致性。建议注入幅值按母线电压标幺化。第三个是温度影响。电机电感随温度变化凸极率也会变长时间运行后 HFI 精度可能下降。高精度场合需要做参数在线辨识或者温度补偿。6.3 实测波形分析要点调试时我习惯把几个关键量用 DAC 输出到示波器上看实际角度 vs 估计角度HFI 和 SMO 各一路权重系数 w解调后的位置误差三相电流看波形时重点关注估计角度是否平滑、切换时是否有跳变、位置误差是否在零附近小幅波动。如果位置误差有规律性波动通常是 LPF 相位滞后或者死区补偿没做好。7. 后续可扩展的方向这套 B1.1 版本跑通之后我实际用下来觉得还有几个可以继续优化的点。一是把旋转注入换成方波注入噪声和损耗都能降下来但对采样时序要求更高。二是加入电感在线辨识解决温度漂移问题。三是把观测器全部搬到 CLA 上主核只跑电流环和通信CPU 占用能再降 20% 左右。另外如果你做的是风机水泵类应用其实可以简化——低速段要求不高的话HFI 只用于初始位置辨识启动后很快切到 SMO过渡带可以做得更窄调试工作量会小很多。我有个水泵项目就是这么干的从零速到 5% 额定转速用 HFI之后直接切 SMO运行两年多没出过问题。最后分享一个小技巧调试初期如果 HFI 一直调不好可以先跳过初始位置辨识用编码器读一个初始角度把 HFI 闭环跑通之后再回头调辨识。这样能把问题拆开避免一上来就被初始位置卡住。
返回列表