|
- clear
- load Injection_data.mat
- % avgi_j 表示第i个转速注入第j个误差
- % 位置误差+3,+2,+1,0,-1,-2,-3
- % 转速300,450,600,750,900,1050
- % avg(i,1):Id' avg(i,2):Iq' avg(i,3):w机械 avg(i,7):Vd avg(i,8):Vq avg(i,9):位置角
- % avg(i,10):1/3或者1/5*T(存疑) avg(i,13):Id avg(i,14):Iq avg(i,15):误差角
- % is为25,50,80,120
- % 电位角1:2:39
- format long
-
- ro=1/60*4*2*pi;
-
- % GMA=atan(abs(avg1(:,1))./avg1(:,2));
- % for ii=1:length(GMA)
- % gamma=GMA(ii);
- % theta=0:2*0.001:2*pi;
- % mode=fix(6*(theta+gamma+pi/6)/pi/2);
- % angle=theta-mode*pi/3;
- % Dd=(2*sin(angle));
- % Dq=(2*cos(angle));
- % Tmd(ii)=mean(Dd); % DD
- % Tmq(ii)=mean(Dq); % DQ
- % end
-
-
- low=cat(3,avg1_1,avg1_2,avg1_3,avg1_4,avg1_5,avg1_6,avg1_7,avg2_1,avg2_2,avg2_3,avg2_4,avg2_5,avg2_6,avg2_7);
- medium=cat(3,avg3_1,avg3_2,avg3_3,avg3_4,avg3_5,avg3_6,avg3_7,avg4_1,avg4_2,avg4_3,avg4_4,avg4_5,avg4_6,avg4_7);
- high=cat(3,avg5_1,avg5_2,avg5_3,avg5_4,avg5_5,avg5_6,avg5_7,avg6_1,avg6_2,avg6_3,avg6_4,avg6_5,avg6_6,avg6_7);
-
- low3=low(:,:,[1,7,8,14]);
- low2=low(:,:,[2,6,9,13]);
- low1=low(:,:,[3,5,10,12]);
- low0=low(:,:,[4,11]);
-
- medium3=medium(:,:,[1,7,8,14]);
- medium2=medium(:,:,[2,6,9,13]);
- medium1=medium(:,:,[3,5,10,12]);
- medium0=medium(:,:,[4,11]);
-
- high3=high(:,:,[1,7,8,14]);
- high2=high(:,:,[2,6,9,13]);
- high1=high(:,:,[3,5,10,12]);
- high0=high(:,:,[4,11]);
-
- is=[25;50;80;120];
- g=(1:2:39)'*pi/180;
-
- %% method1 先正负做差,再转速做差
-
- e=3*pi/180;
- T=[cos(e) sin(e);-sin(e) cos(e)];
-
- Ud_p=high3(:,7,1);
- Ud_n=high3(:,7,2);
- Uq_p=high3(:,8,1);
- Uq_n=high3(:,8,2);
- id_p=high3(:,13,1);
- id_n=high3(:,13,2);
- iq_p=high3(:,14,1);
- iq_n=high3(:,14,2);
- w_l=(high3(:,3,1)+high3(:,3,2))/2;
-
- A=(Uq_p-Uq_n).*(id_p+id_n)./(iq_p+iq_n);
- B=Ud_p-Ud_n+A;
-
- Ud_p1=high3(:,7,3);
- Ud_n1=high3(:,7,4);
- Uq_p1=high3(:,8,3);
- Uq_n1=high3(:,8,4);
- id_p1=high3(:,13,3);
- id_n1=high3(:,13,4);
- iq_p1=high3(:,14,3);
- iq_n1=high3(:,14,4);
- w_l1=(high3(:,3,3)+high3(:,3,4))/2;
-
- A1=(Uq_p1-Uq_n1).*(id_p1+id_n1)./(iq_p1+iq_n1);
- B1=Ud_p1-Ud_n1+A1;
-
- l=(B1-B)./(2*(w_l1-w_l)*ro*sin(e));
- L=mean(l);
- L1=mean(l(40:80));
-
- % phi=2*(w_l1-w_l)*ro*sin(e);
- % Y=B1-B;
- % l=(phi'*phi)^-1*phi'*Y;
-
- id=zeros(80,1);
- iq=zeros(80,1);
- for i=1:4
- id=id+high3(:,1,i);
- iq=iq+high3(:,2,i);
- end
- id=id/4;
- iq=iq/4;
- i=(iq_p+iq_n+iq_p1+iq_n1)/2;
-
- A=Uq_p-Uq_n;
- A1=Uq_p1-Uq_n1;
- Y=A1-A;
- phi=-(w_l1-w_l)*ro*sin(e).*i.*[ones(80,1) id iq id.*id id.*iq iq.*iq];
- deta_L=(phi'*phi)^-1*phi'*Y;
-
-
- Te1=[];
- Te0=[];
- lambda=L1;
- for i=1:14
- Id=low(:,13,i);
- Iq=low(:,14,i);
- Te0=[Te0;low(:,10,i)];
- delta_L=[ones(80,1) Id Iq Id.*Id Id.*Iq Iq.*Iq]*deta_L;
- Te1=[Te1;1.5*4*(lambda.*Iq+delta_L.*Id.*Iq)];
- end
- for i=1:14
- Id=medium(:,13,i);
- Iq=medium(:,14,i);
- Te0=[Te0;medium(:,10,i)];
- delta_L=[ones(80,1) Id Iq Id.*Id Id.*Iq Iq.*Iq]*deta_L;
- Te1=[Te1;1.5*4*(lambda.*Iq+delta_L.*Id.*Iq)];
- end
- for i=1:14
- Id=high(:,13,i);
- Iq=high(:,14,i);
- Te0=[Te0;high(:,10,i)];
- delta_L=[ones(80,1) Id Iq Id.*Id Id.*Iq Iq.*Iq]*deta_L;
- Te1=[Te1;1.5*4*(lambda.*Iq+delta_L.*Id.*Iq)];
- end
-
- x=[1:3360];
- plot(x',3*Te0);
- hold on
- plot(x',Te1,'black');
-
-
- % 角度越大,速度大的估计越准
-
- %% method2
-
- % e=2*pi/180;
- % T=[cos(e) sin(e);-sin(e) cos(e)];
- %
- % Ud_p=high2(:,7,1);
- % Ud_n=high2(:,7,2);
- % Uq_p=high2(:,8,1);
- % Uq_n=high2(:,8,2);
- % Ud_z=high(:,7,1);
- % Uq_z=high(:,8,1);
- % id_p=high2(:,13,1);
- % id_n=high2(:,13,2);
- % iq_p=high2(:,14,1);
- % iq_n=high2(:,14,2);
- % w_l=(high2(:,3,1)+high2(:,3,2))/2;
- %
- % A=(Uq_p-Uq_n).*(id_p+id_n)./(iq_p+iq_n);
- % B=Ud_p-Ud_n-A;
- %
- % Ud_p1=high2(:,7,3);
- % Ud_n1=high2(:,7,4);
- % Uq_p1=high2(:,8,3);
- % Uq_n1=high2(:,8,4);
- % id_p1=high2(:,13,3);
- % id_n1=high2(:,13,4);
- % iq_p1=high2(:,14,3);
- % iq_n1=high2(:,14,4);
- % w_l1=(high2(:,3,3)+high2(:,3,4))/2;
- %
- % A1=(Uq_p1-Uq_n1).*(id_p1+id_n1)./(iq_p1+iq_n1);
- % B1=Ud_p1-Ud_n1-A1;
- %
- % l=(B1-B)./(2*(w_l1-w_l)*ro*sin(e));
- % L=mean(l(40:80));
-
-
-
- %% 之前的方法
-
- % ro=1/60*4*2*pi;
- % avg=[avg1_4;avg2_4;avg3_4;avg4_4;avg5_4;avg6_4];
- %
- %
- % GMA=atan(abs(avg1_4(:,1))./avg1_4(:,2));
- % for ii=1:length(GMA)
- % gamma=GMA(ii);
- % theta=0:2*0.001:2*pi;
- % mode=fix(6*(theta+gamma+pi/6)/pi/2);
- % angle=theta-mode*pi/3;
- % Dd=(2*sin(angle));
- % Dq=(2*cos(angle));
- % Tmd(ii)=mean(Dd); % DD
- % Tmq(ii)=mean(Dq); % DQ
- % end
- %
- % X1=[];
- % for i=1:80
- % Phi1=[];Y1=[];
- % for j=1:6
- % k=(j-1)*80+i;
- % Phi1=[Phi1;1 0 -avg(k,3)*ro 0;0 1 0 avg(k,3)*ro];
- % Y1=[Y1;avg(k,7);avg(k,8)];
- % end
- % X1(:,i)=(Phi1'*Phi1)^-1*Phi1'*Y1;
- % end
- %
- % Phi2=[];Y2=[];
- % for i=1:80
- % Phi2=[Phi2;avg1_4(i,1) Tmd(1,i);avg(i,2) Tmq(1,i)];
- % Y2=[Y2;X1(1,i);X1(2,i)];
- % end
- % X2=(Phi2'*Phi2)^-1*Phi2'*Y2; % R0和Vdead
- %
- % Phi3=[];Y3=[];
- % for i=1:80
- % Phi3=[Phi3;avg1_4(i,2) avg1_4(i,2)*avg1_4(i,1) avg1_4(i,2)^2 avg1_4(i,1)^2*avg1_4(i,2) avg1_4(i,2)^3 avg1_4(i,2)^2*avg1_4(i,1)];
- % Y3=[Y3;X1(3,i)];
- % end
- % X3=(Phi3'*Phi3)^-1*Phi3'*Y3; % Lq的参数
- %
- % Phi4=[];Y4=[];
- % for i=1:80
- % Phi4=[Phi4;avg1_4(i,1) avg1_4(i,1)^2 avg1_4(i,1)*avg1_4(i,2) avg1_4(i,1)^3 avg1_4(i,2)^2*avg1_4(i,1) avg1_4(i,1)^2*avg1_4(i,2) 1];
- % Y4=[Y4;X1(4,i)];
- % end
- % X4=(Phi4'*Phi4)^-1*Phi4'*Y4; % Ld的参数和lambda0
- %
- % Te1=[];
- % for i=1:6
- % lambda=X4(7,1);
- % Iq=avg((i-1)*80+1:i*80,2);
- % Id=avg((i-1)*80+1:i*80,1);
- % Ld=[ones(80,1) Id Iq Id.*Id Iq.*Iq Id.*Iq]*X4(1:6,1);
- % Lq=[ones(80,1) Id Iq Id.*Id Iq.*Iq Id.*Iq]*X3(:,1);
- % Te1=[Te1;1.5*4*(lambda.*Iq+(Ld-Lq).*Id.*Iq)];
- % end
- %
- % x=[1:480];
- % plot(x',3*avg(:,10),'r');
- % hold on
- % plot(x',Te1,'black');
|