永磁同步电机具有体积小、转动惯量低、结构简单等优点,被广泛应用于控制系统中。然而在实际应用过程中,控制系统会受到高温、负载等外界因素的影响,永磁同步电机的电感、转子磁链等参数会发生变化,导致系统振荡,影响实际控制效果。
因此精确的参数辨识是为了达到更好地控制效果的必要条件。目前常用的电机参数辨识方法有:卡尔曼滤波算法、最小二乘法、遗传算法、粒子群算法等。考虑到最小二乘法结构简单、易于实现的优点,本期采用基于最小二乘法的永磁同步电机参数辨识方法。基于对永磁同步电机的推导,采用定子电压等可测变量作为输入输出,辨识出电机的定子电阻及d、q轴电枢电感。
1、最小二乘法
最小二乘参数辨识方法可以解决线性时变系统、线性定常系统、含有噪声的线性系统等问题。常见的最小二乘法有:递推最小二乘法、遗忘因子递推最小二乘法、修正补偿最小二乘法等,这些方法均可以用于系统参数辨识中。
2、辨识模型的建立
永磁同步电机是一个非线性的多变量系统。在d、q旋转坐标下的电压方程为:
式中,iq和id分别为q、d的电流;uq和ud分别为q、d的电压;rs、lq、ld分别为定子绕组的电阻和q、d轴的电感;ψq、ψd分别为q、d磁链的分量;ω为转子的电角速度。
将上述公式修改为最小二乘法的表达形式:
3、仿真实验
将s函数编写的参数辨识模块加入到永磁同步电动机控制系统模型中进行仿真实验。
function [sys,x0,str,ts] = synchronous_demarcate2(t,x,u,flag)%此程序为辨识电机参数的转动惯量switch flag case 0 %初始化 [sys,x0,str,ts]=mdlinitializesizes; case 2 %离散状态计算,下一步仿真时刻,终止仿真设定 sys=[];%mdlupdates(t,x,u); case 3 %输出信号计算 sys=mdloutputs(t,x,u); case {1,4,9} %输出信号计算 sys=[]; otherwise dastudio.error('simulink:blocks:unhandledflag', num2str(flag));endfunction [sys,x0,str,ts]=mdlinitializesizes %系统的初始化sizes = simsizes;sizes.numcontstates = 0; %设置系统连续状态的变量sizes.numdiscstates = 0; %设置系统离散状态的变量sizes.numoutputs = 1; %设置系统输出的变量sizes.numinputs = 3; %设置系统输入的变量sizes.dirfeedthrough = 1; %如果在输出方程中显含输入变量u,则应该将本参数设置为1,输入不直接传到输出口sizes.numsampletimes = 1; % 模块采样周期的个数 % 需要的样本时间,一般为1. % 猜测为如果为n,则下一时刻的状态需要知道前n个状态的系统状态sys = simsizes(sizes);x0 = []; % 系统初始状态变量str = []; % 保留变量,保持为空ts = [-1 0]; % 采样时间[t1 t2] t1为采样周期,如果取t1=-1则将继承输入信号的采样周期;参数t2为偏移量,一般取为0global p_past2 theta_past2 p_past2 = 1e4 * eye(2,2); %一般取1e4 - 1e10theta_past2 = [0.0001; 0.0001]; %一般取一个极小的正实向量function sys=mdloutputs(t,x,u) %产生(传递)系统输出%初值的确定lambda = 0.99; %遗忘因子0-1global p_past2 theta_past2xt = [u(1) u(2)]; %1*2 faity = u(3);i = [1 0;0 1];k = p_past2*xt'/(lambda + xt * p_past2*xt'); %2*1p_new = 1/lambda*(i - k*xt) * p_past2; %2*2theta_new = theta_past2 + k*(y-xt*theta_past2); %2*1p_past2 = p_new ;theta_past2 = theta_new;sys(1) = theta_new(1);function [sys,x0,str,ts] = synchronous_demarcate(t,x,u,flag)%此程序为辨识电机参数的定子电阻rs, 永磁体磁通faif, dq轴电感lswitch flag case 0 %初始化 [sys,x0,str,ts]=mdlinitializesizes; case 2 %离散状态计算,下一步仿真时刻,终止仿真设定 sys=[];%mdlupdates(t,x,u); case 3 %输出信号计算 sys=mdloutputs(t,x,u); case {1,4,9} %输出信号计算 sys=[]; otherwise dastudio.error('simulink:blocks:unhandledflag', num2str(flag));endfunction [sys,x0,str,ts]=mdlinitializesizes %系统的初始化sizes = simsizes;sizes.numcontstates = 0; %设置系统连续状态的变量sizes.numdiscstates = 0; %设置系统离散状态的变量sizes.numoutputs = 3; %设置系统输出的变量sizes.numinputs = 5; %设置系统输入的变量sizes.dirfeedthrough = 1; %如果在输出方程中显含输入变量u,则应该将本参数设置为1,输入不直接传到输出口sizes.numsampletimes = 1; % 模块采样周期的个数 % 需要的样本时间,一般为1. % 猜测为如果为n,则下一时刻的状态需要知道前n个状态的系统状态sys = simsizes(sizes);x0 = []; % 系统初始状态变量str = []; % 保留变量,保持为空ts = [0 0]; % 采样时间[t1 t2] t1为采样周期,如果取t1=-1则将继承输入信号的采样周期;参数t2为偏移量,一般取为0global p_past theta_pastp_past = 1e4 * eye(3,3);theta_past = [0;0;10000];function sys=mdloutputs(t,x,u) %产生(传递)系统输出%初值的确定lambda = 1; %遗忘因子, 选择不遗忘 0.8~1global p_past theta_pastid = u(1);iq = u(2);w = u(3); %电角速度 = 转子速度 * 极对数diq = u(4);uq = u(5);xt = [-iq -w uq];y = diq+w*id;p_new = 1/lambda*(p_past-(p_past*(xt'*xt)*p_past)/(lambda+xt*p_past*xt'));l = p_past*xt'/(lambda+xt*p_past*xt');theta_new = theta_past + l*(y-xt*theta_past);a = theta_new(1);b = theta_new(2);c = theta_new(3);r = a/c;ke = b/c;ld = 1/c;p_past = p_new ;theta_past = theta_new;sys(1) = r;sys(2) = ke;sys(3) = ld;转动惯量参数辨识结果:
电磁电感参数辨识结果:
电角速度观测值:
负载观测结果:
三相电流观测结果:
仿真结果表明,采用递推最小二乘法的参数辨识算法能够准确辨识出电机的电磁参数,能够很好地跟随电机参数的变化,具有快速的收敛性和良好的辨识结果。
中国10月半导体器件专用设备制造业增加值同比增长33.9%
程序员有哪些出路
美国国际贸易委员会驳回了高通对苹果的第二起专利侵权诉讼
A型应急照明集中电源的实际操作与维护保养的介绍
复合材料有哪些种类
介绍一种基于最小二乘法的永磁同步电机参数辨识方法
三星显示器最新的AMOLED柔性触控集成技术曝光
7大新品同天发布!小米5款,苹果2款
华为云OBS对象存储服务介绍
VW大众标准中BAS()程序的使用浅谈
中兴将继续加大对5G技术的研发投入,同时更加关注聚焦和创新
大数据在智慧城市建设中有什么样的作用
氯气在芯片制造中有哪些应用?
AI在网络安全中的应用所带来的好处和风险
中国电信炫铃增值业务
3D打印技术带来文创新体验
走近用户,拥抱需求 | VX9000光学扫描成像测量机立足“降本增效”纪实
金立退出印度市场,断更的金立合适才能重组归来?
周立功电子从业经历回顾一:初生牛犊不怕虎
高性能PCB的设计要求