Odrive非线性磁链观测器
1 引言
Odrive无感磁链观测器出自Junggi Lee等人2010年发表论文《Sensorless Control of Surface-Mount Permanent-Magnet Synchronous Motors Based on a Nonlinear Observer》。
Sensorless Control of Surface-Mount Permanent-Magnet Synchronous Motors Based on a Nonlinear Observe
2 非线性观测器理论推导
2.1 SPMSM静止α-β坐标系基础电压模型
表贴式永磁同步电机定子电压方程在两相静止$\alpha-\beta$坐标系下表达式:
式中变量定义:
| 符号 | 物理含义 |
|---|---|
| $\boldsymbol{i}_{\alpha\beta} = \begin{bmatrix}i_\alpha & i_\beta\end{bmatrix}^T$ | $\alpha\beta$轴定子实测电流向量 |
| $\boldsymbol{v}_{\alpha\beta} = \begin{bmatrix}v_\alpha & v_\beta\end{bmatrix}^T$ | $\alpha\beta$轴PWM输出定子电压向量 |
| $\theta$ | 电机转子电角度 |
| $\omega$ | 电机电角速度 |
| $R_s$ | 定子相绕组电阻 |
| $L$ | SPMSM定子等效电感($L_d=L_q=L$) |
| $\psi_m$ | 永磁体励磁磁链 |
方程核心痛点:$\omega$(转速)与$\theta$(角度)强耦合且均为待观测量,直接构造Luenberger线性观测器会引入转速闭环,误差极易逐级放大,无法实现纯开环观测。
2.2 状态变量替换,解耦未知项
定义全新复合状态向量$\boldsymbol{x}$,将电感压降与永磁磁链项合并:
对等式两侧做一阶微分,代入式(1)电压方程化简:
将$L\dot{\boldsymbol{i}}_{\alpha\beta}$由式(1)替换:
耦合转速项完全抵消,最终得到最简无未知量动力学方程:
$\boldsymbol{y}$仅由采样电流与给定电压计算得到,全部为控制系统已知量,原电机动态被降阶为纯积分环节:
2.3 非线性投影观测器构造
构造辅助观测向量$\boldsymbol{\eta}(\hat{\boldsymbol{x}})$,分离电流项与转子磁链项:
结合式(3)理想状态下满足:
对其取二范数:
几何意义:$\boldsymbol{\eta}$向量端点严格落在半径为$\psi_m$的二维圆上,位置观测等价于约束$\hat{\boldsymbol{\eta}}$收敛至该圆形轨迹并提取相位角。
基于径向投影修正思想设计非线性观测器:
- $\gamma>0$:观测器收敛增益;
- 第二项为非线性径向校正项:
- 若$|\hat{\boldsymbol{\eta}}|_2^2 < \psi_m^2$,修正项向外拉伸向量,逼近标准磁链圆;
- 若$|\hat{\boldsymbol{\eta}}|_2^2 > \psi_m^2$,修正项向内收缩向量;
- 当$|\hat{\boldsymbol{\eta}}|_2^2=\psi_m^2$,修正项归零,观测器仅执行原生积分$\dot{\hat{\boldsymbol{x}}}=\boldsymbol{y}$。
转子电角度直接由反正切函数求解:
2.4 系统收敛性与可观测边界
依据原论文引用Ortega无源稳定性分析结论,分四种工况给出稳定性判定:
- 全局有界性:观测器所有状态轨迹最终收敛于半径$2\psi_m$圆盘内,不会无界发散;
- 持续激励条件(指数稳定):若转速满足长期激励约束观测误差原点局部指数收敛,抗扰动能力最强;
- 恒定转速全局渐近稳定:电机匀速运转时,只要电角速度满足观测误差仅有唯一零平衡点,全局渐近收敛;
- 零速不可观测特性:$\omega=0$时无旋转反电动势激励,系统失去可观测性,纯本观测器无法完成初始定位,必须搭配高频电压脉冲注入实现零速启动。
3 速度观测:PLL锁相环无微分转速提取
若直接对角度$\hat{\theta}$差分微分计算转速,会放大电流、电压采样高频噪声,极易造成转速环震荡。本文采用PI型锁相环PLL对角度相位闭环跟踪,直接输出平滑电角速度估计值,全程无差分运算。
3.1 PLL连续域状态方程
定义两个积分状态量$z_1、z_2$:
- $z_1$:PLL闭环跟踪观测角度$\hat{\theta}$;
- $z_2$:角度误差积分项,消除稳态相位静差;
- $\hat{\omega}$:PLL输出电角速度估计值。
3.2 临界阻尼参数整定
按照二阶系统临界阻尼最优整定规则:
$\omega_{\text{BW}}$为PLL闭环带宽,工程上建议取值为电流环带宽的1/5~1/10,避免转速环路干扰内环电流控制。
4 低速运行增强策略:d轴高频电流脉冲注入
电机转速低于100 r/min属于极低速区间,反电动势$\omega\psi_m$幅值极小,观测器存在两大缺陷:
- 定子电阻压降$ R_s \boldsymbol{i}_{\alpha\beta} $在电压方程中占主导,绕组温升带来$ R_s $漂移会严重污染$ \boldsymbol{y} $计算结果;
- 转子旋转激励不足,$ \hat{\boldsymbol{\eta}} $向量旋转速率过慢,观测器收敛周期拉长甚至失锁。
4.1 注入方案设计
- 切入阈值:机械转速<100 r/min时自动开启注入模块;转速>100 r/min直接关断注入;
- 激励信号:d轴直轴施加200Hz高频电压脉冲串,单脉冲幅值50V、导通时长0.2ms;
- 作用机理:高频脉振d轴电流引入周期性电压激励,弥补低速下反电动势缺失的持续激励条件,同时强化观测器对定子电阻参数的自适应鲁棒性。
4.2 实验指标
原论文实测结果:该注入方案可实现10 r/min、0.5倍额定负载工况下无传感器稳定矢量驱动,无明显转矩脉动与角度跳变。
5 工程实现:ODrive开源驱动源码逐模块解析
ODrive固件在sensorless_estimator.hpp与sensorless_estimator.cpp中完整实现该非线性观测器,下文做变量、公式、离散代码一一映射对照。
5.1 配置结构体与核心状态变量
1 | struct Config_t { |
内部运行状态:
| 变量名 | 对应理论变量 |
|---|---|
| flux_state_[2] | 观测状态向量 $\hat{\boldsymbol{x}}$ |
| V_alpha_beta_memory_[2] | 上一拍αβ轴电压,补偿数字控制一拍延迟 |
| pll_pos_ | PLL闭环跟踪输出电角度 |
| phase_ | 观测器直接atan2解算原始角度 |
| phase_vel_ | 估计电角速度 rad/s |
| vel_estimate_ | 折算后机械转速 r/s |
5.2 主更新函数update()分步拆解
(1)PLL参数计算与离散稳定性校验
1 | float pll_kp = 2.0f * config_.pll_bandwidth; |
(2)三相电流Clarke等幅值变换
1 | float I_alpha_beta[2] = { |
(3)基础积分预测 $\dot{\hat{\boldsymbol{x}}}=\boldsymbol{y}$
1 | float eta[2]; |
(4)非线性径向修正项迭代
源码对原始公式做增益归一化,将$\gamma$量纲统一为rad/s:
1 | float pm_flux_sqr = config_.pm_flux_linkage * config_.pm_flux_linkage; |
(5)缓存当前电压,用于下一周期延迟补偿
1 | V_alpha_beta_memory_[0] = current_control.final_v_alpha_; |
(6)PLL锁相环离散迭代转速提取
1 | // 用上一拍角速度前馈预测角度 |
(7)观测结果输出换算
1 | phase_ = phase; |
5.3 论文公式与ODrive代码精准对照表
| 论文理论公式 | ODrive工程代码实现逻辑 |
|---|---|
| $\dot{\hat{\boldsymbol{x}}} = \boldsymbol{y}$ | flux_state += y * Ts |
| $\hat{\boldsymbol{\eta}}=\hat{\boldsymbol{x}}-L\boldsymbol{i}_{\alpha\beta}$ | eta[i] = flux_state[i] - L * I_alpha_beta[i] |
| $ \dot{\hat{\boldsymbol{x}}} = \boldsymbol{y}+\frac{\gamma}{2}\hat{\boldsymbol{\eta}}(\psi_m^2-\|\hat{\boldsymbol{\eta}}\|^2) $ | 归一化增益后欧拉离散叠加修正项 |
| $ \hat{\theta}=\arctan2(\eta_\beta,\eta_\alpha) $ | fast_atan2(eta[1], eta[0]) |
| PI型PLL转速观测 | 前馈预测+比例积分闭环离散实现 |
5.4 嵌入式工程鲁棒性处理细节
- 一拍电压延迟补偿:存储上一控制周期PWM输出电压,匹配功率管实际施加电压,消除数字控制计算滞后带来的观测偏移;
- 积分饱和防护:电流采样失效、驱动器未使能时强制重置
flux_state_积分状态,防止积分漂移; - 角度环绕处理:
wrap()函数将角度强制约束在$[-\pi,\pi]$,避免角度跨2π跳变导致转速尖峰; - 离散稳定性前置检查:硬性判定$T_s \cdot K_p < 1$,杜绝欧拉法离散后PLL系统不稳定。
6 全套参数整定流程与约束条件
6.1 核心参数说明
observer_gain($\gamma$)观测器增益
整定基准:略大于电机额定工况电频率稳定硬性约束(原始未归一化公式):$|\omega| > \frac{1}{4}\gamma\psi_m^2$,转速越低允许的最大$\gamma$越小。
pll_bandwidth PLL带宽
推荐取值:电流环带宽 $\div 5 \sim$ 电流环带宽 $\div 10$;
带宽偏大:转速响应快、噪声敏感易抖动;带宽偏小:动态跟随差、加减速角度滞后。pm_flux_linkage 永磁磁链$\psi_m$
最优来源:电机厂家参数手册;无手册时可通过堵转低压实验离线辨识,该参数失配会直接导致$\hat{\boldsymbol{\eta}}$无法收敛至标准磁链圆,观测永久静差。
