1、滑膜观测器源原理
基于BLDC(无刷电机)/PMSM(永磁同步电机)在αβ坐标系下的电压方程:
di_alpha/dt = (-Rs/Ld)*i_alpha + (Ualpha - Ealpha)/Ld
di_beta/dt = (-Rs/Ld)*i_beta + (Ubeta - Ebeta)/Ld
其中Ealpha、Ebeta为αβ轴反电动势,包含转子速度和位置信息。通过构造电流观测器,利用滑模切换函数迫使观测电流跟踪实际电流,从而提取反电动势观测值。
2、滑膜观测器算法步骤
(1) 电流预测:基于上一时刻的观测电流和反电动势(滤波后),使用前向欧拉法计算当前观测电流IalphaFore、IbetaFore。
(2) 滑模面切换:计算电流误差 (IalphaFore - Ialpha),通过饱和函数得到估计反电动势EalphaFore、EbetaFore。饱和函数采用边界层(±1.0)设计,在边界层内线性输出,外部输出±Gain,有效抑制抖振。
(3) 低通滤波:对滑模输出的高频开关信号进行一阶低通滤波,得到平滑的反电动势基波分量EalphaForeLPF、EbetaForeLPF,用于下一周期的电流预测和位置/速度估算。
3、滑膜观测器源代码
typedef struct { float Ts; //调用周期 float Rs; //相电阻 float Ld; //相电感 float Gain; //滑膜观测器增益 float Ialpha; //α轴实际电流 float Ibeta; //β轴实际电流 float IalphaFore; //α轴预测电流 float IbetaFore; //β轴预测电流 float Ualpha; //α轴实际电压 float Ubeta; //β轴实际电压 float EalphaFore; //α轴预测反势 float EalphaForeLPF; //α轴预测反势滤波值 float EbetaFore; //β轴预测反势 float EbetaForeLPF; //β轴预测反势滤波值 float EabForeLPFFactor; //αβ轴预测反势滤波系数 float Etheta; //预测theta角 }SMO_STRUCT; //饱和函数 float sat(float err, float limits) { if (err > limits) return 1; else if (err < -limits) return -1; else return err / limits; } void SMO_Calculate(SMO_STRUCT *p) { // 1. 电流预测(基于电机模型的前向欧拉离散化) // 公式:I_fore(k+1) = I_fore(k) + Ts * [ -Rs/Ld * I_fore(k) + (U - E_foreLPF)/Ld ] p->IalphaFore += p->Ts * (-p->Rs / p->Ld * p->IalphaFore + (p->Ualpha - p->EalphaForeLPF) / p->Ld); p->IbetaFore += p->Ts * (-p->Rs / p->Ld * p->IbetaFore + (p->Ubeta - p->EbetaForeLPF) / p->Ld); // 2. 滑模切换函数(饱和函数,减小抖振) // 边界层设定为 ±1.0(可根据实际电流误差范围调整) p->EalphaFore = p->Gain * sat((p->IalphaFore - p->Ialpha),1.0f); p->EbetaFore = p->Gain * sat((p->IbetaFore - p->Ibeta), 1.0f); // 3. 反电动势低通滤波(滤除高频切换噪声) // 一阶低通滤波:E_filt(k) = α * E_raw(k) + (1-α) * E_filt(k-1) p->EalphaForeLPF = p->EalphaFore * p->EabForeLPFFactor + p->EalphaForeLPF * (1 - p->EabForeLPFFactor); p->EbetaForeLPF = p->EbetaFore * p->EabForeLPFFactor + p->EbetaForeLPF * (1 - p->EabForeLPFFactor); // 4. 通过反正切函数求出θ角 p->Etheta = -atan(p->EalphaForeLPF/p->EbetaForeLPF); }4、滑膜观测器的参数说明
第一部分:已知量(须在初始化时赋值)
- Rs:定子电阻,需通过辨识或参数表获得。
- Ld:直轴电感(对表贴式电机Ld=Lq)。
- Gain:滑模增益,须大于反电动势幅值,通常根据最大转速下的反电动势设定,固定增益时通常取母线电压/根号3。
- EabForeLPFFactor:低通滤波系数(0~1),取值小则滤波效果好但相位滞后大,需在噪声抑制和动态响应间权衡。
- 边界层阈值1.0f:即饱和函数系数,根据电流量程标幺化设定,实际使用时可能需要调整。
第二部分:实时更新量
Ialpha:α轴实时电流;
Ibeta:β轴实时电流;
Ualpha:α轴实时电压;
Ubeta:β轴实时电压;
Ts:两次进行滑膜计算之间的时间间隔(实践中这个一般作为固定值,因为滑膜观测器计算通常都是由定时器中断触发计算);
第三部分:函数内部使用的全局变量
IalphaFore:α轴预测电流;
IbetaFore:β轴预测电流;
EalphaFore:α轴预测反电动势(未滤波);
EbetaFore:β轴预测反电动势(未滤波);
EalphaForeLPF:α轴预测反电动势(滤波后);
EbetaForeLPF:β轴预测反电动势(滤波后);