全速域无感FOC方案:高频注入与滑模观测器平滑切换的工程实践
做无感FOC的工程师都知道高速段用反电动势观测器、低速段用信号注入这两套方案在原理上几乎是两个世界。去年年底我把B1.1版本的全速域永磁同步电机无感控制方案在TI DSP F283xC2000平台上完整跑通这套代码同时实现了高频注入转子初始位置辨识、低速区域闭环运行、权重切换过渡以及滑模观测器SMOSliding Mode Observer驱动的中高速段最终目标是把IPM电机的无感FOC控制在零速到额定转速的全速域范围内做到稳定。整个过程踩了不少坑也沉淀了一些可以直接复用的经验这篇就把B1.1版本的架构思路、关键实现和调试链路完整梳理一遍如果你也在做FOC无感控制或者正在头疼转子初始位置检测和观测器切换这篇文章应该能帮你省不少时间。1. 无感FOC最难的不是跑高速而是知道转子在哪1.1 转子初始位置为什么这么重要电机的转矩本质上取决于定子磁场和转子磁场之间的夹角。有编码器的时候这个角度直接读出来就行无感控制没有这个硬件就得靠算法估算。但估算这件事在高速段和低速段的难度完全不对等电机转速一高反电动势幅值增大很容易从电压电流里提取出转子位置信息可在零速和极低速段反电动势幅值趋近于零信噪比差到没法用这时候你去硬套常规观测器转子位置估计误差会非常大。如果只是转起来之后慢慢矫正还好最致命的是启动那一刻。PMSM在零速状态下如果你不知道转子的初始位置在哪个方向直接给一个任意角度的电压矢量启动轻则力矩不够、启动卡顿重则电流很大但轴不动甚至反向旋转一下这在压缩机、风机、液压泵这类负载上会造成实际的设备冲击。所以无感FOC的第一步永远是先把转子初始位置认出来。B1.1版本在这个环节采用的是高频注入HFI方案。业界做转子初始位置辨识主要有两大类一种是给一个直流电压矢量扫描观察电流响应另一种就是高频信号注入利用电机的凸极效应来回推位置。我选择高频注入是因为它对负载不敏感也不存在扫描法那种需要多次尝试、辨识时间较长的缺点更适合一上电就要快速进入闭环的使用场景。1.2 为什么用高频注入而不是开环强拉很多入门级别的无感方案为了省事起动时直接用开环V/F或者I/F方式强拉转子。这种做法的隐性问题非常明显第一I/F强拉本质上靠的是让转子被“拖”着走如果负载很大或者突然卡住电流会飙高力矩却出不来状态非常危险第二强拉过程往往伴随着转速振荡被负载拖动时转子位置和给定位置会产生一个比较大的功角控制很容易失步第三如果设备要求静止启动且不能有明显的倒转或抖动比如某些油泵、空调压缩机有最小启动力矩要求开环强拉的表现很难令人满意。高频注入的思路不一样它不靠大力出奇迹而是给电机注入一个频率远高于基波频率的小幅值电压信号然后通过检测电流响应来判断转子磁极的朝向。这个方案在零速下依然有效因为它不依赖反电动势而是利用转子d轴和q轴的磁导率差异——也就是凸极性来工作。对IPM电机来说这种凸极性是结构自带的天然优于表面式PMSMSPMSM所以高频注入搭配IPM电机做初始位置辨识信号强度是有保障的。1.3 B1.1版本的总体分段逻辑整个B1.1版本的控制架构可以看成三个区段拼接起来速度区间位置获取方式核心目标零速/初始定位高频脉振注入 极性判断辨识转子初始位置建立正确磁场定向低速区0~10%额定转速高频注入闭环运行带载低速爬行转矩平稳中高速区10%额定转速以上滑模观测器SMO高速稳定运行动态响应好两个区段之间并不是硬切而是通过权重切换在重叠区域完成平滑过渡。这个设计说起来简单真正做起来的时候每一段都有各自的坑。下面我把每个环节拆开讲。2. 高频注入转子初始位置辨识的原理与落地2.1 高频脉振注入的数学模型高频注入在实现上有旋转高频注入和脉振高频注入两种主流方式。B1.1最终选用的是脉振高频注入原因在于它只依赖d轴磁路易饱和以及d/q轴电感差异对电机参数偏差的容忍度更好而且实现复杂度相对低一些。这里说的“d轴”是指估计的转子坐标轴实际注入时是往估计的d轴方向注入一个高频余弦电压信号。在转子参考坐标系下如果估计的d轴与实际d轴之间存在角度误差Δθ那么注入的高频电压会在q轴电流上产生一个高频响应分量这个分量的幅值正比于sin(2Δθ)。当Δθ很小的时候sin(2Δθ)近似等于2Δθ所以q轴高频电流的幅值就直接反映了角度误差。通过解调技术把q轴高频电流的幅值提取出来再用一个PI调节器或者锁相环把幅值收敛到零估计的d轴就和实际d轴对齐了。脉振高频注入的位置辨识公式可以简化为[ \varepsilon LPF{ i_{q_est} \cdot \sin(\omega_{hf} t) } \propto \sin(2\Delta\theta) ]这里(\omega_{hf})是注入角频率(i_{q_est})是估算dq旋转坐标系下的q轴电流。整个链条就是注入高频电压 - 电流响应 - 解调 - 低通滤波 - 角度误差信号 - PI调节 - 位置角收敛。2.2 解调链路的搭建从电流响应到位置角在实际代码里解调链路我拆成了四步处理。第一步在估计dq坐标系下叠加一个高频电压命令注入频率我选了800Hz幅值大概在母线电压的8%~10%之间。注入频率不能太高否则受限于PWM更新率和电流环响应实际加在电机上的电压会有较大衰减也不能太低否则会和基波电流频带重叠解调困难。800Hz这个值在我这版10kHz PWM载频下表现比较平衡。第二步是采样三相电流然后通过Clarke变换和Park变换变到估计dq坐标系下。第三步是关键把q轴电流和一个同频同相的参考正弦信号相乘也就是同步解调。相乘之后会产生一个直流分量和一个二倍频分量直流分量就是角度误差信号二倍频分量需要滤掉。第四步接一个一阶低通滤波器截止频率设在100~200Hz左右把二倍频和残余高频分量都压掉得到干净的误差信号。这里有一个特别需要注意的点解调用的参考正弦信号相位必须和注入电压信号保持同步。如果注入信号经过滤波器或者经过PWM更新引入相位延迟而你解调时没有做任何补偿误差信号会有一个固定的偏置最终导致位置角静态偏差。我调试的时候在这个问题上卡了两天最后把注入信号经过PWM的零阶保持延迟做了十分钟角量级的相位补偿静态偏差才消除。具体补偿方法见后面调试章节。2.3 磁极极性的判断高频注入方法能够把转子位置分辨到180度以内的“指向”但d轴有两个方向一个对应N极一个对应S极电机的转矩方向会因为磁极方向反转而完全相反。如果不做极性判断转子实际可能被锁定在反方向上带载时会直接反转。极性判断我采用的是磁饱和效应法。原理是如果沿着正向d轴注入额外的电压脉冲转子磁路倾向于饱和导致d轴电感变小电流上升更快如果沿着反向d轴注入同样的脉冲磁路饱和度降低d轴电感变大电流上升更慢。比较两个方向上电流响应的峰值就能判断当前估计的d轴正方向对应的是N极还是S极。工程实现上我通常在初始位置角度收敛之后分别向当前估计d轴正方向和负方向施加两个等幅值的电压脉冲每个脉冲持续几百微秒到一毫秒记录两次的电流响应峰值。电流响应大的是N极方向响应小的是S极方向。如果判断出方向反了直接对辨识结果做180度修正。2.4 F283xC2000上的工程实现TI的C2000系列做电机控制有三件事特别方便一是ePWM模块可以灵活配置PWM波形和触发ADC采样二是ADC的转换结果直接和PWM事件同步电流采样点非常准确三是TI官方提供了电机控制软件库里面有Clarke、Park、反Park等标准变换函数直接调用省去了很多底层验证时间。高频注入这部分在主中断里实现。主中断频率我设成了10kHz也就是PWM载频注入频率800Hz是10kHz的1/12.5通过一个相位累加器生成。核心代码如下// 高频注入相位累加 hf_angle HF_INC_STEP; // 800Hz对应10kHz中断里的相位增量 if (hf_angle 2.0f * PI) hf_angle - 2.0f * PI; // 注入d轴高频电压分量 vd_inj HF_INJ_AMP * __sinpufd(hf_angle); v_park_ref[0] vd_out vd_inj; v_park_ref[1] vq_out; // q轴电流解调q轴反馈电流乘以同频正弦 err_raw iq_fbk * __sinpufd(hf_angle); // 低通滤波截止频率150Hz err_lpf lpf_alpha * err_lpf (1.0f - lpf_alpha) * err_raw; // 位置角PI校正 hf_pi_out kp_hf * err_lpf ki_hf * err_lpf_integral; theta_hfi theta_hfi hf_pi_out * TS;极性判断放在位置角收敛后的状态机里执行等整个初始位置辨识流程走完控制器再把theta_hfi作为起始角度切到正常FOC闭环状态。3. 低速区闭环运行的几个关键点3.1 注入频率、载波频率和电流环带宽三者怎么匹配高频注入方案不只用于零速初始位置辨识它还可以在低速段持续工作让电机在无感状态下从零速开始带载爬升。但这个问题要处理好几个频率之间的关系否则系统会非常不稳定。首先电流环带宽不能高于注入频率否则电流环会对注入信号产生响应一方面导致注入电压命令被电流环部分抵消另一方面会在电机上产生实际的高频电流增加损耗和震动。经验上电流环带宽取注入频率的1/5~1/4比较合适。我这版10kHz载频下电流环闭环带宽设计在300Hz左右而注入频率是800Hz留出了一倍以上的间隔。其次注入频率和载频之间要满足同步关系。注入频率如果能被载频整除也就是在每个载波周期里注入相位步进是固定的那么解调出来的误差信号不会因为离散化而产生拍频干扰。我这版10kHz载频配800Hz注入频率是可整除的通过相位累加方式实现始终不会产生低频拍频噪声。3.2 滤波器设计带通拿出来陷波挡出去在低速闭环运行的时候控制器里的电流反馈信号包含三类分量基波电流、高频注入电流、电流纹波和谐波。如果让高频分量顺着电流环走到输出端会出现两个问题一是电流环的PWM输出会叠加明显的800Hz抖动导致相电流畸变二是高频电流分量会饱和电流调节器。解决方法是做两级处理。在反馈路径上基波电流必须经过低通滤波或者一个中心频率在注入频率上的陷波器把高频注入成分尽量去掉再把干净的基波电流送入电流环。在解调路径上则需要一个带通滤波器先把高频电流分量选出来但TI DSP里面我并没有真的用带通滤波器而是把解调乘法放在Park变换之后的dq轴电流上再配合低通滤波效果等同但实现更简单。有一点值得注意既然电流环带宽远低于注入频率其实电流环本身就会衰减高频响应所以电流反馈路径上的陷波器不一定非要加。我实测后发现只要电流环带宽设计合理800Hz的注入分量在闭环里被抑制得较好陷波器不是必需品。但有一种情况必须加陷波器就是你的电流环带宽偏高或者PI参数调得非常激进这时注入分量会被放大你可能不得不把电流环带宽降下来或者增加陷波器。3.3 低速爬行和带载启动的测试方法低速段验证我建议用“对拖平台”来做一台被测电机和一台负载电机同轴相连负载电机工作在转矩模式可以模拟不同的负载被测电机工作在速度模式。这样你就可以在实验室里复现各种带载工况。在零速到150rpm这个区间内我会用一个斜坡给定做爬升测试从零速开始给转速斜坡比如每秒100rpm左右的斜率观察位置角估计值和电磁转矩的稳定性。最容易出现的问题是低速时位置估计噪声大导致电流环解耦不准确q轴电流波动明显。如果出现这种情况优先检查解调后低通滤波器的截止频率是不是太高把150Hz往下降到100Hz试试同时检查电流采样有没有受到PWM开关噪声的干扰。带载启动测试更重要。我会让负载电机先给定一个额定负载转矩比如50%额定转矩然后让被测电机从零速开始爬升。正常情况下高频注入锁定的位置角应该始终保持在磁极方向上电机从静止到爬升的过程不应该有反向转动电流波动应该限制在一个较小的范围内。如果启动瞬间出现力矩不足很可能是极性判断出了问题或者注入电压幅值不够导致位置角收敛精度不够。4. 滑模观测器SMO中高速段的反电动势重构4.1 SMO的数学基础当转速提升到一定水平之后反电动势已经足够大此时高频注入已经没有优势反而会带来额外的损耗和噪声所以需要切换到反电动势观测器方案。B1.1的B1版先实现的是滑模观测器原因是SMO对参数变化不敏感、对电感误差有一定鲁棒性在工程上比磁链观测器更容易先跑通。SMO的基本思路并不复杂在αβ静止坐标系下PMSM的电流方程为[ \frac{di_\alpha}{dt} -\frac{R}{L}i_\alpha \frac{1}{L}v_\alpha - \frac{1}{L}e_\alpha ] [ \frac{di_\beta}{dt} -\frac{R}{L}i_\beta \frac{1}{L}v_\beta - \frac{1}{L}e_\beta ]其中反电动势(e_\alpha, e_\beta)包含转子位置信息[ e_\alpha -\lambda_f \omega_e \sin\theta_e,\quad e_\beta \lambda_f \omega_e \cos\theta_e ]SMO的核心是构建一个电流观测器用滑模项把实测电流和估计电流的误差驱动到零滑模项的输出就是等效反电动势的估计值。这个思路本质上是一种鲁棒观测不管模型参数怎么偏只要滑模增益足够大误差都会被硬“压”到滑模面上观测出来的反电动势在性能上依然可靠。4.2 滑模增益与等效控制我这里归纳一下SMO在三相电机实现时的参数关系。设(K_{smc})为滑模增益(L_s)为相电感(R_s)为相电阻采样周期(T_s)。离散化后的电流观测方程可以写成// 电流观测器 i_alpha_est (T_s / L_s) * (v_alpha - R_s * i_alpha_est - K_smc * sign(i_alpha - i_alpha_est)); i_beta_est (T_s / L_s) * (v_beta - R_s * i_beta_est - K_smc * sign(i_beta - i_beta_est)); // 等效反电动势 滑模项经低通滤波 e_alpha_hat lpf(K_smc * sign(i_alpha - i_alpha_est)); e_beta_hat lpf(K_smc * sign(i_beta - i_beta_est)); // 转子位置角估计 theta_smo atan2(-e_alpha_hat, e_beta_hat);滑模增益的选取是SMO调试的头号难题。理论要求是滑模增益必须大于反电动势幅值加上模型误差的扰动上界否则系统无法进入滑模面位置估计会发散。但增益也不是越大越好增益过大意味着等效控制信号里包含更强的高频抖振低通滤波后的残余噪声变大。实际经验上我会把滑模增益设为额定反电动势幅值的2~3倍然后在实验里从小往大调直到位置角波形不再出现明显失真。4.3 低通滤波器和相位补偿由于滑模控制本身是bang-bang式切换等效反电动势信号里天然带有高频抖振必须经过低通滤波器才能使用。低通滤波会引入相位滞后而且转速越高相位滞后越大如果不做补偿转子位置的估计会滞后于真实位置带来的后果就是高速时q轴电流效率降低甚至出现转矩波动。标准处理方案是两种一是采用自适应截止频率的低通滤波器截止频率随转速升高而升高这样相位滞后与频率的关系相对固定便于用固定角度补偿二是在位置角上直接加一个和电频率成正比的相位补偿角补偿角的大小由低通滤波器的相频特性决定。我采用的是第二种补偿公式为[ \theta_{comp} k_{\theta} \cdot \omega_{est} ]其中(k_{\theta})是实测标定出来的系数。具体做法在某个恒定转速下用编码器信号做对比对拖平台上负载电机带编码器记录SMO估算位置角与编码器真实角度的差然后推算这个差值随电频率的变化率反过来确定补偿系数。另外还要注意反电动势幅值本身受磁链和速度影响如果电机有退磁情况或者高温下磁链下降SMO的幅值估算也会受影响。不过位置角只用反正切比值幅值误差不会直接影响角度这一点比直接幅值观测的方案要稳一些。5. 权重切换怎么让两个观测器平稳交棒5.1 切换策略先速度带后位置带把高频注入和SMO拼接起来最关键的问题不是算法本身而是切换那一瞬间的位置角不要跳变。一个非常容易犯的错误是低速时位置角来自高频注入通道高速时位置角来自SMO通道两者估计出来的角度总会有一些偏差如果到了切换阈值瞬间从A切到B位置角会突跳电流和转矩当场就会震荡甚至失控。我的处理方式是分段重叠切换原则是“先速度带重叠再位置角加权”。具体来说设定两个速度阈值(n_{sw1})和(n_{sw2})比如额定转速为3000rpm的电机(n_{sw1})设为300rpm(n_{sw2})设为600rpm。在300rpm以下完全使用高频注入位置在300~600rpm之间高频注入通道和SMO通道同时运行位置角按权重插值合成600rpm以上完全切换为SMO。这种方式的好处是切换不是瞬时的而是经历一个过渡带。过渡带里两个观测器都在工作即使有一个估计误差稍大一些权重插值也能够抑制位置角的突跳再配合速度环的输出连续性电机几乎感觉不到切换过程。5.2 权重函数的选择权重函数我使用了速度的平方关系而不是线性关系。设(w_{smo})为SMO位置角的权重定义如下[ w_{smo} \begin{cases} 0, n n_{sw1} \ \frac{(n - n_{sw1})^2}{(n_{sw2} - n_{sw1})^2}, n_{sw1} \le n \le n_{sw2} \ 1, n n_{sw2} \end{cases} ]第一个版本的实现代码// 权重切换 float w_smo 0.0f; if (speed SW_N2) { w_smo 1.0f; } else if (speed SW_N1) { float k (speed - SW_N1) / (SW_N2 - SW_N1); w_smo k * k; // 速度平方权重 } else { w_smo 0.0f; } float w_hfi 1.0f - w_smo; // 位置角加权合成这里采用角度误差形式的加权避免角度跨零点的跳变 pos_err theta_smo - theta_hfi; if (pos_err PI) pos_err - 2.0f * PI; if (pos_err -PI) pos_err 2.0f * PI; theta_final theta_hfi w_smo * pos_err;采用平方权重的原因有两个一是低速端SMO还没完全稳定这时权重增速太快会过早引入SMO噪声二是过渡带后半段电机已接近中高速SMO的估算精度已经很可靠权重增速加快对稳定性影响不大。实测下来这个曲线比线性加权的切换过程更平滑。5.3 切换过程实测中的波形特征切换是否平滑最终要以实测波形说话。在对拖平台上我会用示波器同时记录速度给定、位置角估计、d/q轴电流、实际转矩几个信号。正常情况下的波形特征应该是在切换带内看不到明显的电流毛刺速度曲线没有回退或过冲位置角曲线平滑过渡。如果我观察到切换带内q轴电流出现连续的冲击脉冲说明两个通道的位置角偏差较大这时需要回去检查SMO的相位补偿系数以及高频注入解调低通滤波的最终误差。切换时还有一个容易被忽略的细节速度观测值要统一。高频注入通道本身就是从位置角微分得到速度SMO通道同样是从位置角微分得到速度在切换带内如果速度分别从两个通道各取一部分会导致速度环的反馈信号含有额外噪声。我的做法是在切换带内速度反馈统一使用由最终加权位置角(\theta_{final})微分后得到的速度而不是分别取两个通道的速度再加权。这个小改动对切换平稳性的改善很明显。6. 调试这台样机踩过的坑6.1 高频注入和电流环之间的干扰第一个坑出现在高频注入和电流环的交互上。最开始我按照经典的HFI方案直接注入d轴电压结果发现转速稍微起来一点电流环就开始尖叫相电流波形上看到了明显的800Hz分量而且随着速度增加越来越严重。排查链路是这样的先确认注入信号确实是加在PWM命令上的用示波器看相电流发现800Hz纹波确实存在。检查反馈电流路径发现DSP内部电流反馈是直接用的ADC采样值没有经过任何陷波处理。将反馈电流做一个800Hz陷波器后重新测试纹波下降但仍然不够干净。进一步分析发现电流环PI输出里已经有了800Hz的高频分量说明电流环本身在高频段仍然有增益于是把电流环带宽从500Hz降到300Hz再试问题才基本消失。这个坑的经验就是高频注入并不是“注入多少电压就能在电机上产生多少电流”电流环本身相当于一个闭环阻抗它会部分抵消高频注入的效果。设计时必须把电流环带宽和注入频率放在一起统筹考虑而不是各自独立调参。6.2 SMO在高速段的噪声问题SMO在1000rpm以下的运行还算安静但转速拉到1500rpm以上位置角估计波形上开始出现明显的锯齿状噪声速度环的反馈噪声变大了电机有轻微的啸叫。这个问题的根源是滑模抖振。滑模增益在那时调得比较高又加了固定的低通滤波器滤波截止频率为了照顾低速段设得比较低导致高速时滤波后的反电动势信号虽然平滑但相位延迟严重即便加了固定补偿角也无法在高转速全范围内完全对齐。最后的解决方案是把低通滤波器的截止频率做成随转速自动变化的自适应形式。具体实现是当估算速度低于某个阈值时截止频率固定在500Hz速度升高后截止频率线性提高到1500Hz。同时在位置角补偿上使用了动态补偿角以电频率为输入查表实现。6.3 切换时转矩跌落的排查链路B1.0版本最早出现的切换问题是在切换带出口附近转矩有一个明显的跌落速度环要过冲一下才能恢复。这个问题排查了好几轮才发现根本原因。第一轮怀疑是权重切换速度过快于是把切换带加宽了一倍但问题依然存在。第二轮怀疑是SMO位置角精度不够于是用编码器做了对比发现SMO在切换带内其实只有很小的偏差不会导致这么大的转矩变化。第三轮把目光放到了速度反馈上发现切换带内的速度反馈出现了一个小的阶跃原因是速度环在切换带内使用了两个通道速度的加权平均而两个通道速度的静差导致了不连续。改成统一由最终加权位置角微分得到速度之后转矩跌落消失速度曲线恢复平滑。这个坑最后总结出来的规律是切换不是简单的“位置角加权”就完了必须把速度反馈、电流环解耦、甚至弱磁控制的参考角度统统统一到同一个最终位置上否则任何一处不一致都会在切换带内放大成转矩扰动。7. 硬件平台和工程化细节F283xC2000 IPM7.1 F283xC2000的资源分配以F28335为例我做了这样的资源分配硬件资源用途ePWM1~ePWM3三相PWM输出三角载波对称PWMADCINA0~A2三相电流采样母线电压采样ePWM1 SOC触发ADC同步触发在PWM计数值为零时触发CPU Timer010kHz控制中断SPI/CAN上位机调试通信GPIOIPM故障输入、继电器控制等C2000系列做FOC时最占资源的是三角函数和坐标变换调用F28335是浮点核心运算压力不大。我把10kHz主中断里的总计算时间控制在40微秒以内CPU负载率不到一半留有足够余量给上位机通信和故障诊断。7.2 PWM与ADC同步电流采样的准确度直接决定FOC的控制质量。在IPM方案里三相电流采用低侧采样电阻或者直通式电流传感器采样都行但采样时刻必须放在下桥臂开通的中间时刻也就是PWM周期中心点附近此时母线电流的噪声最小、电流纹波处于平均值附近。F283xC2000的ePWM模块自带ADC触发功能我把它配置成在计数值为零的时刻触发ADC转换这样每个PWM周期都精确地在一个固定相位点采样电流。有一点要注意PWM周期中心点采样对占空比范围有限制当占空比非常接近0%或100%时低侧采样窗口会变窄甚至消失。此时单电阻重构或者扩大最小脉宽是必要的但我在B1.1版本里三相都装了传感器就没有这块压力。7.3 IPM驱动与保护IPM智能功率模块通常是自带栅极驱动、过流保护、短路保护、温度保护的一体化模块这在设计上大大简化了硬件工作。但我有两点经验值得分享一是IPM故障信号比如FO引脚拉低触发后一定要在软件里加入“硬件故障锁存”逻辑。IPM的内部保护会在十几个微秒内动作而DSP的中断响应时间通常达不到这个量级如果软件不锁存会出现保护动作之后又重新开通的间隙造成二次损坏。二是IPM的母线电压检测和过压保护要特别注意母线寄生电感带来的电压尖峰。IPM关断瞬间直流母线电感会产生较高的尖峰电压这个尖峰在调试中很常见。母线电容和吸收电路要按规格书推荐值来不要随便减容量。B1.1版本我一开始为了节省空间减小了母线电容容量结果在堵转测试里直接击穿了两个IPM教训很深刻。7.4 上位机调试与参数监控无感FOC的调试没有好的上位机观察手段几乎寸步难行。我用C2000的SCI串行接口以250kbps的波特率周期发送调试帧里面打包了位置角估计值、真实位置角对拖平台的编码器值、速度反馈、dq轴电流、权重值等十几个变量。在上位机端用串口转USB工具接PC写了一个简单的C#调试界面实时绘制波形并记录数据。这套调试系统的实用价值体现在两个地方一是可以离线分析位置角的跳变时刻定位切换或者低频扰动的时间点二是可以从记录的数据里自动计算位置角误差的均值与方差用来快速评价SMO相位补偿和HFI解调质量。8. 调试节奏与控制环参数B1.1版本沉淀下来的一套方法论8.1 分模块验证不要上来就切我调试B1.1版本时的总体顺序是先把高频注入初始位置辨识单独验证确认零速收敛精度在电角度5度以内然后把低速段闭环跑通确认带载爬行稳定再独立调试SMO用编码器做位置对比确认观测误差在全速范围内可控最后才做权重切换联调。如果跳过前面的分模块验证直接一套代码从头跑到尾一旦出现问题你很难判断是HFI解调的问题还是SMO的问题还是切换的问题。这一点上我和很多同行吃过同样的亏所以强烈建议建立“分模块验证全程指标量化”的调试流程。8.2 关键参数的初值设定表我整理了一张B1.1版本的关键参数初始设定表直接抄作业是可以的但要根据你的电机重新整定参数初值建议说明注入频率800Hz载频10kHz情况下注入幅值0.08~0.10倍母线电压以位置辨识可靠为下限HFI解调LPF截止频率150Hz太高会让误差信号含二倍频纹波电流环带宽300Hz必须低于注入频率滑模增益Ksmc2~3倍反电动势幅值从小往大调直到估计角不畸变SMO反电动势LPF截止频率500~1500Hz随转速升配合同步相位补偿切换带下限/上限10%/20%额定转速可视电机特性调整8.3 从B1.1往后还能做哪些扩展B1.1版本完成之后全速域无感架构已经具备基础后续主要方向有三个一是把SMO升级为基于反电动势模型的自适应观测器或者龙伯格观测器进一步提高高速段动态性能特别是突然加减速和负载突变工况下的位置跟踪能力二是加入弱磁控制让电机在全速域内真正发挥内置式电机的恒功率区能力三是把高频注入的位置辨识和SMO的位置估计用卡尔曼滤波融合取代目前的权重切换这样可以进一步减少切换带内的残余扰动代价是计算量和调试复杂度都会明显上升。我在实际跑B1.1版本时最大的体会是无感FOC这条路没有一步到位的万能方案只有把每个速域各自的核心问题逐个解决然后用一个经过仔细设计的过渡机制把它们粘起来才能得到一套真正可交付的工程代码。如果让我给刚开始做无感FOC的人一个建议我会说先别急着把高频注入和SMO拼起来把高频注入的初始位置辨识做到精、把SMO的相位补偿做到准剩下的事情会顺利很多。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →