文章目录
写在前面:本人能力、时间、技术有限,没有对一些细节进行深入研究和分析,也难免有不足和错误之处,欢迎交流和指正。本人写博客主要是学习过程的记录。
1、引言
最小二乘法(Least Square, LS)大约是1795年高斯在其著名的星体运动轨道预报研究工作中提出的。后来,最小二乘法成为了估计理论的基石。最小二乘法由于原理简明、收敛较快、易于编程实现等特点,在系统参数估计中应用相当广泛。
在自适应控制系统中,被控对象通常都可以不断提供新的输入输出数据,而且还希望利用这些新的信息来改善估计精度,因此常常要求对象参数能够在线实时估计。解决这个问题的方法就是采用最小二乘算法的递推算法,其基本思想可以概括为:
2、最小二乘法原理
下面考虑线性参数的最小二乘法处理:
3、最小二乘法估计与参数辨识
3.1 常规最小二乘法
3.2 递推最小二乘法
3.3 递推最小二乘法RLS结合遗忘因子
3.4 总结
4、电阻和磁链参数辨识方程详细推导
4.1 表贴式电机
注:我的原文做了很多公式推导,这里只给精炼部分的公式,所以公式序号有点乱,之间从式(21)开始。
4.2 内嵌式电机
5、电感参数辨识方程详细推导
6、转动惯量、阻尼系数及负载转矩辨识
7、参数辨识仿真
7.1 模型总览
模型下载地址:永磁同步电机递推最小二乘法电机参数辨识Simulink仿真模型
7.2 电机及系统参数
Rs=0.6;
Ld=1.4e-3;
Lq=1.4e-3;
flux=0.034182;
J=1.1e-5;
B=1e-3;
pole=1;
fx=0.02;
speed_kp=0.028885;
speed_ki=3.8891;
speed_Ba=0.00093819;
7.3 参数辨识模块
这里有一点需要说明的是,按照原理没有得到很准备的转动惯量,将理论值输入和负载值加入是可以得出理论值的,这里没想通什么原因,后面解决了在更新。
- 电阻和磁链辨识
function [F,R] = RLS_R_Phi(uq,we,iq)
%定义永久变量
persistent P_K_1 X_K_1
%判断永久变量是否已访问过,第一次进行参数初始化
if isempty(P_K_1), P_K_1=1e4*eye(2); end
if isempty(X_K_1), X_K_1=[0 0]'; end
%遗忘因子lambda 0.9-1
%lambda小,说明求解时会很快先前的数据,更注重当前的数据,但求解的值波动会更大
%lambda大,说明求解时会依然会考虑一部分先前的数据,求解的波动更小,更平滑
lambda=1;
%定义输入矩阵
phi=[we iq]';
%定义观测矩阵
y=uq;
%计算增益
K=P_K_1*phi/(lambda*eye(1)+phi'*P_K_1*phi);
%计算协方差
P_K=(eye(2)-K*phi')*P_K_1/lambda;
%更新数据
X_K=X_K_1+K*(y-phi'*X_K_1);
%保存当前时刻数据,下次备用
P_K_1=P_K;
X_K_1=X_K;
%提取结果
F=X_K(1);
R=X_K(2);
end
- 电感辨识
function L = RLS_L(ud,we,iq)
%定义永久变量
persistent P_K_1 X_K_1 P_K X_K
%判断永久变量是否已访问过,第一次进行参数初始化
if isempty(P_K_1), P_K_1=1e6*eye(1); end
if isempty(X_K_1), X_K_1=[0]'; end
%遗忘因子lambda 0.9-1
%lambda小,说明求解时会很快先前的数据,更注重当前的数据,但求解的值波动会更大
%lambda大,说明求解时会依然会考虑一部分先前的数据,求解的波动更小,更平滑
lambda=1;
%定义输入矩阵
phi=[-we*iq]';
%定义观测矩阵
y=ud;
%计算增益
K=P_K_1*phi/(lambda*eye(1)+phi'*P_K_1*phi);
%计算协方差
P_K=(eye(1)-K*phi')*P_K_1/lambda;
%更新数据
X_K=X_K_1+K*(y-phi'*X_K_1);
%保存当前时刻数据,下次备用
P_K_1=P_K;
X_K_1=X_K;
%提取结果
L=X_K(1);
end
- 转动惯量及阻尼系数辨识
function [J,B] = RLS_J_B(delta_wm,wm,Tm)
%定义永久变量
persistent P_K_1 X_K_1 P_K X_K
%判断永久变量是否已访问过,第一次进行参数初始化
if isempty(P_K_1), P_K_1=1e4*eye(2); end
if isempty(X_K_1), X_K_1=[0.0001 0]'; end
%遗忘因子lambda 0.9-1
%lambda小,说明求解时会很快先前的数据,更注重当前的数据,但求解的值波动会更大
%lambda大,说明求解时会依然会考虑一部分先前的数据,求解的波动更小,更平滑
lambda=0.9;
%定义输入矩阵
phi=[delta_wm wm]';
%定义观测矩阵
y=[Tm]';
%计算增益
K=P_K_1*phi/(lambda*eye(1)+phi'*P_K_1*phi);
%计算协方差
P_K=(eye(2)-K*phi')*P_K_1/lambda;
%更新数据
X_K=X_K_1+K*(y-phi'*X_K_1);
%保存当前时刻数据,下次备用
P_K_1=P_K;
X_K_1=X_K;
%提取结果
J=X_K(1);
B=X_K(2);
end
这里将负载转矩作为已知输入,另外为了验证脚本正确性,使用真实值磁链计算了输出转矩Te,从而得到相对稳定的转动惯量和阻尼系数,若使用观测的磁链误差相对很大,因此对系统的稳定性要求较高,在实际情况下还需要考虑死区补充的问题。
7.4 仿真结果
辨识结果:
磁链辨识波形(空载)
磁链辨识波形(加载)
电阻辨识波形(空载)
电阻辨识波形(加载)
仿真结果显示在加载的情况,参数辨识基本正确,从而一定程度上验证了算法的正确性。
参考
【1】电机仿真系列-基于最小二乘法的永磁同步电机参数辨识:
https://blog.csdn.net/c85759351/article/details/120966164?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170964619216800213054610%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=170964619216800213054610&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-120966164-null-null.142v99pc_search_result_base5&utm_term=%E6%B0%B8%E7%A3%81%E5%90%8C%E6%AD%A5%E7%94%B5%E6%9C%BA%E5%8F%82%E6%95%B0%E8%BE%A8%E8%AF%86&spm=1018.2226.3001.4187
【2】带你深入掌握最经典的最小二乘法:https://www.bilibili.com/video/BV1cv411M7wd/?spm_id_from=333.999.0.0&vd_source=8af6a0e6ffe9eaf216d5b3c382a1ee56
【3】线性回归之最小二乘法公式推导和原理介绍:https://blog.csdn.net/weixin_42364196/article/details/102964407
【4】卡尔曼滤波(1)–递归最小二乘(RLS)推导过程:
https://zhuanlan.zhihu.com/p/59532437
【5】递推最小二乘法推导(RLS)——全网最简单易懂的推导过程:
https://zhuanlan.zhihu.com/p/111758532
【6】递推最小二乘法(Recursive least square, RLS)详细推导:https://blog.csdn.net/qq_39645262/article/details/125691638
【7】递归最小二乘法与参数辨识:
https://www.bilibili.com/video/BV1Xs4y1Q74U/?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click&vd_source=5f570a9f261c43941608688d2d31a4c5
【8】参数辨识最小二乘法——永磁同步电机矢量控制课题拓展:
https://blog.csdn.net/sy243772901/article/details/109342696
【9】基于递推遗忘最小二乘的永磁同步电机参数辨识:
https://blog.csdn.net/haloudama/article/details/133259025
【10】带遗忘因子的递推最小二乘法推导(C++实现)
https://blog.csdn.net/qq_34288751/article/details/130276796
【11】交流永磁同步电机的惯量辨识:
https://blog.csdn.net/jiushigedidi/article/details/127840992
【12】李文涛. 基于高频方波注入永磁同步电机无位置传感器控制技术研究[D].中国矿业大学,2021.DOI:10.27623/d.cnki.gzkyu.2020.000444.