永磁同步电机的无感控制,真正卡人的地方从来不是中高速。那个区间反电动势够大,随便一个观测器都能把角度估个七七八八,剩下的只是调参细活。真正让人反复推倒重来的是启动:转子静止时反电动势为零,观测器没有任何可用的输入信号,你连转子磁极在哪儿都不知道,闭环根本无从谈起。所谓全速域无感控制,本质上就是想办法把这段“看不见”的区域用一套确定性的流程顶过去,等转速和反电动势涨起来,再把控制权交还给观测器。
B1.0 这套方案就是围绕这件事搭的:预定位把转子拉到一个已知位置,IF 强拖负责把转速从零推到观测器能工作的门槛,降 q 轴电流切换策略处理开环到闭环的交接,最后进入滑模观测器(Sliding Mode Observer, SMO)的闭环区间。整套东西拆开看每一项都不新鲜,但真正做起来,它们之间的耦合和交接细节才是决定成败的部分。下面我按这套流程的时间顺序,把每一步的物理含义、参数怎么定、现场会遇到什么,尽量说透。
1. 全速域无感控制绕不开的“零速盲区”
1.1 反电动势在零速附近为什么给不出可用信号
PMSM 的转子位置信息藏在反电动势里,反电动势幅值和电角速度成正比:e = ωe · ψf,其中ψf是永磁磁链。转速一低,e就跟着往下掉,到了零速直接归零。这意味着基于反电动势的观测器在低速段天生“近视”,不是算法不行,而是物理上就没有可观测的量。
更麻烦的还不是幅值小,而是信噪比。定子电压方程在 αβ 坐标系下大致是u = Rs·i + Ls·di/dt + e。低速时Rs·i这一项占了大头,反电动势只是个小零头。你想把e抠出来,就得先精确地把Rs·i和Ls·di/dt减掉。问题在于Rs随温度漂移,冷机热机能差出百分之二三十,Ls也随电流饱和变化。这些误差在低速时会被直接放大成角度误差,观测器输出的角度就飘了。
归纳下来,零速附近有三个硬约束:反电动势幅值趋零、定子电阻压降主导导致信噪比极差、以及转子静止时没有反电动势导致信息缺失。任何基于模型反电动势的观测器都跳不出这三条。所以低速启动必须靠“外部注入”的形式人为制造可观测性,而不是指望观测器自己收敛。
1.2 预定位 + IF 强拖 + 切换这套组合的由来
既然观测器在零速靠不住,那思路就变成:先用一个不依赖转子位置的开环策略把电机转起来,等转速涨到反电动势足够大,再切进闭环。这中间分三件事。
第一件是“起点问题”。如果我连转子在哪都不知道,直接加一个旋转电流矢量,转子可能被正向拉,也可能被反向拉,甚至来回摆。所以我先加一个方向固定的电流矢量,把转子强行拉到电角度的某个已知位置,这叫预定位。
第二件是“过渡问题”。定位完成后,我以一个固定的电流幅值、一个人为设定的旋转电频率去驱动定子电流矢量,转子在电磁转矩牵引下跟着转,这叫IF 强拖(也有叫 I/F 开环启动)。这个阶段我不关心转子真实角度,只保证电流矢量转多快、转子就跟多快,相当于用电流矢量“牵着”转子走。
第三件是“交接问题”。当转速足够、反电动势足够、观测器能稳定输出角度时,我把控制权从开环转到闭环。这个交接如果做得糙,就会出现转矩冲击、转速跌落甚至失步。B1.0 里单独设计了降 q 轴电流切换策略来处理这一刻,这是整套方案里最见功力的部分。
1.3 B1.0 的状态机划分
把这套流程落到固件里,就是一个带交接条件的状态机。下面这张表是 B1.0 里的状态划分和各自的判据,参数值只是我台架上的量级参考,实际要按机型改。
| 状态 | 控制量 | 进入条件 | 退出条件 |
|---|---|---|---|
| 预定位 | 固定方向电压矢量 | 上电或低速请求 | 定时结束(约 1~2 s) |
| IF 强拖 | 固定幅值电流矢量,频率按斜率上升 | 预定位结束 | 电频率达到切换阈值 |
| 切换窗口 | IF 与闭环电流加权混合,角度平滑过渡 | 观测器角度稳定 | 权重走到 1,观测器接管 |
| SMO 闭环 | 速度环 + 电流环,角度来自观测器 | 切换完成 | 转速跌回阈值以下 |
这张表看着简单,真正的复杂度全在“进入条件”和“退出条件”怎么写。比如切换窗口的进入,我一开始只写了“电频率大于 25 Hz”,结果空载能过、带载抖动,后来加了观测器角度误差持续小于某一阈值的判据才稳。后面第 4、6 节会细说。
2. 预定位:先把转子钉在一个确定的位置上
2.1 预定位的电流矢量到底该怎么加
预定位的做法很朴素:在电角度的参考方向上给一个固定的电压矢量,让定子电流在 d 轴上建起来,转子磁极会被这个电流产生的磁场“吸”过去,最后稳定在电流矢量方向。对于表贴式 PMSM,d 轴和 q 轴电感相近,d 轴电流不产生转矩,但会产生磁阻力矩把转子拉到对齐位置;对于内置式 PMSM,d 轴电感小,磁阻特性会让转子更倾向停在 d 轴,这一点选参考轴时要注意。
实现上通常有两种加法定:一是直接给Ud = 固定值, Uq = 0,靠电流环自己建立电流;二是直接给电流参考id_ref = I_pre, iq_ref = 0,让电流环去跟踪。我更推荐第二种,因为有电流环兜底,实际电流更可控,过流风险小。这里有个容易被忽略的点:预定位阶段给的电流矢量方向是对应“电角度 0”的,但预定位只解决电角度对齐,不解决磁极极性(N/S 分辨),极性得靠后续 IF 段自然收敛。
代码上大致是这样:
/* 预定位阶段:电流环给定 id,iq 置零,角度固定 */ void pre_position_step(void) { g_theta_e = 0.0f; /* 电角度固定在 0,坐标系不动 */ g_id_ref = PRE_POS_CURRENT; /* 预定位电流给定 */ g_iq_ref = 0.0f; /* q 轴不给定,避免产生转矩 */ /* 内部仍是标准电流环,Park 变换用固定角度 */ current_loop_run(g_id_ref, g_iq_ref, g_theta_e); }上面这段的关键就是角度固定不动,整个 Park 变换的坐标系是死的,所以定子电流矢量在空间里是静止的,转子才有机会被吸过来对齐。
2.2 电流幅值与保持时间怎么估算
预定位电流不能太小,太小了转矩不足以克服齿槽转矩和静摩擦,转子就在原点附近来回摆;也不能太大,太大会让绕组发热、驱动过流。我的经验取值范围是额定电流的30% 到 80%,轻载小惯量取小值,带减速箱或有静摩擦的取大值。
保持时间取决于转子的机械动态。转子在电磁转矩作用下转动、摆动、收敛,是个二阶过程。简单估法是取机械时间常数的若干倍,再留点余量。工程上一般给0.5~2 秒,大惯量、带负载的往长里给。判断标准很简单:看预定位结束时 d 轴电流是否稳定、转子有没有残余摆动。如果电机在预定位阶段发出“嗡嗡”的低频敲击音,多半是电流太小在来回振荡,或者保持时间不够。
注意:预定位时间不是越长越好。时间过长会让 d 轴电流长时间流过,SPM 虽然不产生转矩,但铜耗实打实地热,在大电流机型上连续几秒就可能触发过温降额。
2.3 预定位“没定住”的几种表现和排查
我踩过几个典型的坑,列出来方便对照。
第一种是转子来回摆。表现是电机在原地低频抖动,声音像闷雷,预定位结束后进入 IF 段立刻失步。原因基本两个:预定位电流太小,或者电流环带宽太低导致电流建立慢、还没稳定就进下一阶段了。解法是加大电流或延长预定位时间,同时检查电流环的 PI 参数。
第二种是定位到反方向。表现是 IF 强拖阶段一开始就往回拽,或者启动特别吃力。这是磁极极性没确定导致的,预定位只能把转子拉到某条轴线上,到底停在 0° 还是 180° 它不区分。这个问题不需要在预定位阶段解决,交给 IF 段:如果一开始方向反了,IF 电流矢量牵引会把它拉回正确方向,或者靠启动时的小幅试探来判极性。别指望预定位一步到位。
第三种是负载稍大就定不住。表现是空载能起、带载起不来。这往往是预定位电流按空载整定,带载时齿槽和静摩擦增大,电流不够。老老实实按最恶劣工况整定预定位电流。
3. IF 强拖:低频段的“托底”逻辑
3.1 I/F 开环的受力本质
IF 强拖的核心思想是:我不问转子在哪,我直接施加一个幅值恒定、角度以设定角速度旋转的定子电流矢量,让转子被这个旋转磁场“拖”着走。电流矢量与转子磁极之间的夹角叫负载角δ,产生的电磁转矩近似为Te = 1.5 · p · ψf · Is · sin(δ),其中Is是电流矢量幅值,p是极对数。
只要负载角 δ 小于 90°,转矩就是正向的,会把转子往前拉、减小 δ,形成负反馈,系统就是稳定的。这就是 I/F 能开环跑的根本原因:它不是真开环,而是靠转矩-角度的自然负反馈实现的“准同步”。转子跟不上时,δ 增大,转矩增大,把它拽回来;转子领先时,δ 减小甚至变负,转矩反向,把它拉回来。
3.2 升频斜率、电流幅值与失步边界
I/F 段最容易翻车的地方是升频斜率和电流幅值的匹配。电流矢量幅值Is决定了最大可用转矩1.5·p·ψf·Is,升频斜率决定了转子需要多大加速度,两者要留够余量。
我的整定顺序是这样的:先按最恶劣负载估算需要多少启动转矩,反推出Is,再在此基础上留20%~30% 余量;然后确定升频斜率,原则是“慢到电机能跟上,快到切换点时间别拖太久”。启始电频率一般从几 Hz 起,切换点看机型,表贴式高速机可能要 30 Hz 以上,低极对数机 15~20 Hz 就够。斜率我常用的范围是10~50 Hz/s,惯量大的往下取。
一个实用的判断技巧:如果 IF 段电流稳定、转速平滑上升、声音均匀,说明 δ 一直在合理范围;如果听到周期性的“咯噔”声或电流出现包络起伏,说明 δ 已经接近 90°,离失步不远了,要加大电流或放缓斜率。
3.3 强拖阶段绕不过去的几个约束
第一,Is不能太大。开环阶段电流矢量方向和转子真实 d 轴不一定对齐,有一部分电流其实做的是“无效发热”甚至产生反向转矩分量,电流越大损耗越大,效率越低。所以 IF 段只求“托过去”,别贪高。
第二,Is也不能太小。除了失步,还有观测器的问题——如果电流太小,反电动势在采样里就更不显眼,切换时观测器可能没收敛。
第三,IF 段不要待太久。它本身是低效的过渡手段,转速一到位就该切。我遇到过为了“稳”把 IF 段拖到 40 Hz 才切的方案,结果绕组温升明显,切换前观测器也没多余收益,纯属浪费。
提示:IF 段的电流矢量角度是人为积分出来的,
θ_if = ∫ ω_if dt,这个角度和转子真实角度之间就差一个 δ。把这个关系记住,第 4 节的切换策略全建立在它上面。
4. 降 q 轴电流切换:开环到闭环的平滑交接
4.1 切换判据不能只看转速
我早期版本的切换判据就一条:电频率大于阈值。结果台架上空载切换丝滑,一带载就抖。原因很简单,转速到了不代表观测器收敛了。负载大时反电动势虽然幅值够,但观测器受参数误差影响可能角度偏差还在。
后来 B1.0 的切换判据改成三条同时满足:一是电频率大于阈值;二是观测器估算角度与 IF 矢量角度之差在允许范围内持续一段时间;三是观测器估算的转速波动小于阈值。第二条尤其关键,它本质上是在问“观测器现在信得过吗”,而不是“电机转得够快吗”。
实际做法是给观测器角度的误差做一个滑动窗口统计或者一阶滤波,只有这个误差稳定地小,才允许进切换窗口。这里要注意处理角度回绕,θ_if和θ_est差值的绝对值在 ±π 处会跳变,得先做归一化再比较。
4.2 降 q 轴电流到底降的是什么
这是整套方案里最容易被问的一句话。切换瞬间的转矩冲击从哪来?切换前,电流矢量角是θ_if,它在物理空间的位置和转子真实角度差一个 δ;切换后,参考坐标系变成观测器角度θ_est,近似等于转子真实角度。坐标系一变,电流矢量在空间里那个差值 δ 就会被“重新解释”,如果参考电流没跟着变,实际电流矢量就会突然跳一下。
这一跳对应的转矩突变近似为ΔTe ≈ 1.5·p·ψf·iq·sin(Δθ) ≈ 1.5·p·ψf·iq·Δθ,其中Δθ是角度偏差,iq是切换前的 q 轴电流(也就是转矩电流)。看这个式子就明白了:想压低冲击,要么减小Δθ,要么减小iq。Δθ靠观测器精度和判断,压不了太多;iq是可以主动控制的。所谓降 q 轴电流切换策略,就是在切换窗口里把开环段的 q 轴电流参考逐步降到一个小值,让iq·Δθ这个乘积变小,把转矩冲击压下去,等观测器完全接管、角度对齐后再把电流升回闭环需求值。
这里有个必须讲清楚的取舍:iq降低,电机输出转矩就下降,如果窗口太长、负载又大,电机可能在这段时间掉速甚至失步。所以这个窗口必须“短而准”,而且iq不是降到零,是降到能维持转速的一个小值。B1.0 里窗口长度是几十到几百毫秒量级,具体跟惯量和负载走。别一刀切。
4.3 交接窗口的时序与权重分配
切换不是“啪”一下换源,而是一个加权过渡。我用的做法是把角度和电流都做成权重混合,权重w从 0 平滑走到 1。
角度上,先把观测器 PLL 的积分初值直接设成当前的θ_if,避免交接一上来就跳。然后在一个窗口内做角度平滑:
/* 切换窗口:角度按权重从 IF 平滑过渡到观测器估计值 */ float delta = wrap_pi(theta_est - theta_if); /* 归一化到 ±π */ g_theta_e = theta_if + w * delta; /* w: 0 -> 1 平滑上升 */电流上,把开环牵引电流和闭环调节电流做加权,同时整体做一个“凹槽”处理,也就是窗口中间的iq参考被压到iq_min:
/* q 轴电流:开环分量按权重退,闭环分量按权重进,中间压一个凹槽 */ float iq_if = (1.0f - w) * IQ_IF; /* 强拖牵引分量逐渐退出 */ float iq_cl = w * iq_pi_out; /* 闭环调节分量逐渐进入 */ float iq_ref = (iq_if + iq_cl) * (1.0f - DIP * sinf(w * PI)); g_iq_ref = iq_ref; /* DIP 控制凹槽深度 */DIP就是凹槽深度系数,控制窗口中间降到多低。这个系数我一般从 0.2 调到 0.5 之间找,调大压得更狠但掉速风险高,调小压不住冲击。
权重w的上升曲线也有讲究。线性上升实现简单,但切换瞬间的斜率不连续;用 S 形曲线(比如平滑阶跃)可以让交接两端的导数也连续,抖得更轻。B1.0 里用的是平滑阶跃,代价是多算几个乘法,收益是转速过渡更干净。
4.4 切换瞬间的抖动与失步怎么复现和解决
调试时你大概率会遇到两种现象。
第一种是切换一瞬的转速“顿一下”。表现是转速波形在切换点有个小凹坑,电机声音“咔”一下。这通常是Δθ偏大或者凹槽太浅,求解方向是提高观测器精度(第 5 节)、调大DIP、或者把交接窗口放慢一点。注意是放慢“角度对齐”这一段,不是放慢整个窗口。
第二种是切换后直接失步。表现是电流飙升、转速掉到零。这是典型的iq压得太低、窗口太长、负载又大,电机在窗口里丢了同步。解决办法是缩短窗口、减小DIP、或者提高切换点的转速阈值,让反电动势更充裕。
复现这两种问题的关键是做受控实验:把切换点的转速、负载、窗口长度、DIP做成几组对照,跑一遍记录转速和相电流波形,对照着看。别凭感觉调,凭感觉调参数就是碰运气。
5. 滑模观测器:把反电动势从噪声里抠出来
5.1 SMO 的数学形式和滑模面怎么构造
滑模观测器的思路是用一个“符号项”去逼着观测电流跟上实测电流,当两者相等到一定程度,那个符号项里就包含了反电动势的信息。以 αβ 坐标系、表贴式 PMSM 为例,电流状态方程是:
Ls · d(iα)/dt = uα - Rs·iα - eα Ls · d(iβ)/dt = uβ - Rs·iβ - eβ其中eα = -ωe·ψf·sin(θe),eβ = ωe·ψf·cos(θe)。观测器把实测电流和估计电流的差定义成滑模面s = î - i,然后:
Ls · d(î)/dt = u - Rs·î + z z = K · sign(î - i)K是滑模增益。只要K足够大,系统会被推到滑模面上并停在那儿,此时z的等效值就等于反电动势:z_eq ≈ e。这就是 SMO 的全部核心,说穿了就是用一个大增益的开关项把反电动势从方程里“顶”出来。
5.2 抖振抑制:sign、饱和函数与边界层
sign函数是理想开关,输出只有 ±1。实际离散系统里,这个开关会引起高频抖振,抖振会顺着低通滤波和角度计算一路传下去,表现为转速和角度的毛刺。
工程上一般三种处理方式,我按效果从轻到重排一下:
| 处理方式 | 做法 | 特点 |
|---|---|---|
| 饱和函数 | 用sat(s/φ)代替sign(s) | 边界层内线性,边界层外仍开关 |
| 双曲 / Sigmoid | 用连续函数逼近符号 | 抖振最小,但增益整定更敏感 |
| 自适应增益 | 增益随转速/误差变化 | 低速强、高速弱,鲁棒性好 |
我最常用的是饱和函数,边界层宽度φ是个关键参数:太窄压不住抖振,太宽等于降低了观测器带宽、角度响应变慢。我的经验是把它整定在电流采样噪声量级的几倍,台架上从观测器输出反推着调。
注意:滑模增益
K太小则“顶”不出反电动势,太大则抖得厉害。它不是越大越好,临界值是反电动势幅值的上限,实际取 1.2~2 倍即可。
5.3 相位补偿与用 PLL 提取转速
z_eq里有开关高频,得先低通滤波才能当反电动势用。但低通滤波会引入相位滞后Δθ = atan(ωe / ωc),ωc是滤波器截止角频率。低速时ωe小,滞后小;高速时ωe大,滞后就明显了。如果补偿不当,估出来的角度会系统性偏后,带宽一上来就失步。
我的做法是:滤波截止频率不固定,让它跟着电频率走,也就是用跨频率的锁相环来替代“固定低通 + 固定补偿”的组合。用 αβ 轴的反电动势估计直接喂 PLL:
/* 用反电动势估计值驱动 PLL 提取角度和转速 */ float eps = -e_alpha_hat * cosf(g_theta_pll) - e_beta_hat * sinf(g_theta_pll); /* 角度误差,正比于 sin(θ-θ̂) */ g_omega_pll += KP_PLL * eps + KI_PLL * eps * TS; /* 比例积分校正 */ g_theta_pll += g_omega_pll * TS; /* 积分得到角度 */ g_theta_pll = wrap_pi(g_theta_pll); /* 归一化 */这个eps的推导很关键:代入eα = -E·sinθ、eβ = E·cosθ,得到eps = E·sin(θ - θ̂),在误差小的时候约等于E·(θ - θ̂),正好是个标准锁相环的相位误差,把θ̂锁到θ上。PLL 带宽Kp/Ki决定角度跟随速度和抗噪能力,我一般把它整定得比电流环慢、比速度环快,中间那一档。
5.4 离散化实现与采样周期约束
SMO 最终得跑在 MCU 里,离散化细节决定能不能跑稳。我用前向欧拉:
/* αβ 轴电流观测器(前向欧拉离散) */ i_alpha_hat += (TS / LS) * (u_alpha - RS * i_alpha_hat + z_alpha); i_beta_hat += (TS / LS) * (u_beta - RS * i_beta_hat + z_beta); /* 滑模项:用饱和函数抑制抖振 */ z_alpha = K_SLIDE * sat((i_alpha_hat - i_alpha_meas) / PHI); z_beta = K_SLIDE * sat((i_beta_hat - i_beta_meas ) / PHI); /* 低通滤波得到反电动势估计 */ e_alpha_hat += WC * TS * (z_alpha - e_alpha_hat); e_beta_hat += WC * TS * (z_beta - e_beta_hat);这里有三个约束。第一,采样周期TS要足够小,LS/TS那个离散化项才稳定,SMO 我一般跟着电流环跑,也就是十几 kHz 到二十几 kHz,别硬塞进慢的调度里。第二,RS和LS用的是标称值,参数误差会直接映射成角度误差,第 6 节会讲怎么补。第三,滑模项和滤波器都在同一个中断里算,注意运算量,别为了塞 SMO 把电流环周期拖长了,得不偿失。
6. 全速域拼接:三段之间怎么接得上
6.1 交接条件与滞环设计
三段式最容易出的问题是“交界处来回跳”。比如观测器角度误差在切换阈值附近抖动,状态机就可能在闭环和开环之间反复横跳,表现是转速周期性波动、电流包络起伏。解决办法是给进入和退出用不同的阈值,也就是滞环。
具体地说,进入闭环的条件设得苛刻一点(电频率高一些、误差小一些、稳定时间长一些),退出的条件设得宽松一点,两个阈值之间留出带宽。这样一旦切进闭环,除非转速掉得很明显,否则不会轻易退回开环。滞环带宽我按额定转速的 5%~10% 设,太小压不住抖动,太大等于退不回去、低速重载时救不回来。
另外,切换只有一次机会,别设计成“可以随时切回预定位”。低速启动失败的正确处理是停机重来,而不是状态机自己绕回预定位,那样很容易卡在某个中间态。
6.2 中高速段的观测器保护与限幅
进了闭环不代表万事大吉。中高速段限制 SMO 精度的是参数敏感性和观测范围。定子电阻Rs随温度上升,磁链ψf随温度下降,这两个都会让反电动势估计产生幅值和相位误差,进而影响角度。工程上可以加在线参数辨识,也可以用一个经验温度系数去补偿,简单但有效。
限幅方面,我给几个常用的:PLL 输出的转速限幅,防止解码异常时速度环被带飞;反电动势估计的幅值限幅,防止电机场合突变时观测器输出离谱值;以及一个角度可信度检查,如果 PLL 的相位误差eps长时间偏大,就判断观测器失锁,触发降级或保护。
还有一点经常被忽略:高速时反电动势接近母线电压,电流环裕度变小,观测器的输入u里饱和成分变多,模型误差变大。所以高速段的电流环抗饱和和观测器输入的选择(用电压指令还是实际电压)要统一处理,别一个用指令一个用实测,那样在饱和区会不一致。
6.3 低速重载的补充手段
如果应用场景就是低速重载,IF 强拖撑到切换点太吃力,那 B1.0 的这套三段式可以再往上加一层高频信号注入,在低速段用凸极效应直接估算角度。不过这是另一条技术路线,代价是噪声大、对凸极率有要求,我一般先穷尽三段式的边界,能不加就不加。
退一步说,低速重载的常见救法还有两个:一是适当提高切换点转速,让 IF 段多撑一会儿,等反电动势更充裕再切;二是加大 IF 段的电流幅值余量,宁可牺牲一点效率,先把启动率做上去。这两个都是“笨办法”,但在调试期比加新算法更快见效果。
7. 台架调参实录:几个反复出现的坑
调试阶段的经验往往比原理更值钱,下面这几个是我反复踩过的。
| 现象 | 可能根因 | 处理方向 |
|---|---|---|
| 预定位后进场即失步 | 预定位电流小 / 保持时间短 | 加大电流、延长定位时间 |
| IF 段周期性“咯噔”声 | 负载角接近 90°,临近失步 | 加大 IF 电流或放缓升频斜率 |
| 切换瞬间转速凹坑 | q 轴电流没降够 / 角度偏差大 | 加大凹槽深度、提高观测器精度 |
| 切换后失步 | 窗口太长、iq 压太低 | 缩短窗口、减小凹槽、提高切换转速 |
| 中高速角度系统性偏后 | 滤波相位未补偿 | 换 PLL 方案或加跨频率补偿 |
| 冷热机表现不一致 | Rs、ψf 温度漂移 | 参数温度补偿或在线辨识 |
7.1 别把“调好”和“调稳”混为一谈
我见过的最大误区是:在空载台架上把切换参数调到波形完美,就认为成功了。空载时负载角小、转矩冲击小、观测器收敛快,几乎所有参数都“好调”。真正的考验是带额定负载甚至过载启动。我的习惯是整定参数时始终带上接近额定的负载,宁可空载时波形难看一点,也要保证带载启动率。
还有一个具体操作:记录每一次启动的相电流峰值和切换点转速,用统计的方式看启动成功率,而不是凭一次成功的波形下结论。同一个参数我至少跑五十次连续启停才敢定。
7.2 观测器的参数不要和电机的标称值“打架”
调试 SMO 时我常犯的一个错,是拿着数据手册的Rs、Ls、ψf直接填进去不管。实际上台架上的电机接上驱动器、走线、接触电阻后,等效Rs往往比手册值大;Ls也会因为电流饱和和手册值有出入。这些误差在低速段被放大得厉害。
我的处理办法是:先在堵转条件下测一条u-i曲线,把等效Rs拟合准;再用高频小信号测Ls。这两个定准之后,观测器的角度精度会明显好转,很多“切换抖动”的问题其实来自参数没对准,而不是算法本身。
最后再分享一个调试上的小心得:把 IF 矢量角、观测器估计角、PLL 相位误差eps这三个量同时打到 DAC 或上位机波形里,切换前后逐帧看。很多问题不需要猜,看一眼这三个量的相对关系,是角度没对齐、还是电流没跟上,一目了然。比对着现象反推原因快得多。