|
- clear
- load Injection_data.mat
- format long
-
- % 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为5,7,9,11
- % 电位角1:2:39
-
- 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);
- avg=cat(3,low,medium,high);
-
-
- %% method1
-
- offset=2;
- speed=[5,6];
-
- ro=1/60*4*2*pi;
- e=offset*pi/180;
- T=[cos(e) sin(e);-sin(e) cos(e)];
-
- index=[];
- for i=speed
- index=[index,(i-1)*7+(1:7)];
- end
- data=avg(:,:,index);
-
- Y=[];
- phi=[];
- Y1=[];
- phi1=[];
- for i=1:length(speed)
- ud_p=data(:,7,(i-1)*7-offset+4);
- ud_n=data(:,7,(i-1)*7+offset+4);
- uq_p=data(:,8,(i-1)*7-offset+4);
- uq_n=data(:,8,(i-1)*7+offset+4);
- id_p=data(:,13,(i-1)*7-offset+4);
- id_n=data(:,13,(i-1)*7+offset+4);
- iq_p=data(:,14,(i-1)*7-offset+4);
- iq_n=data(:,14,(i-1)*7+offset+4);
- id=(data(:,1,(i-1)*7-offset+4)+data(:,1,(i-1)*7+offset+4))/2;
- iq=(data(:,2,(i-1)*7-offset+4)+data(:,2,(i-1)*7+offset+4))/2;
- w=(data(:,3,(i-1)*7-offset+4)+data(:,3,(i-1)*7+offset+4))/2;
- Y=[Y;ud_p-ud_n+(uq_p-uq_n)./(iq_p+iq_n).*(id_p+id_n)];
- phi=[phi;2*w*ro*sin(e)];
- Y1=[Y1;uq_p-uq_n];
- phi1=[phi1;-w*ro*sin(e).*(iq_p+iq_n).*[ones(80,1) id iq id.*id id.*iq iq.*iq]];
- end
- l=(phi'*phi)^-1*phi'*Y;
- delta_l=(phi1'*phi1)^-1*phi1'*Y1;
-
- Te1=[];
- Te0=[];
- lambda=l;
- for i=1:42
- Id=avg(:,13,i);
- Iq=avg(:,14,i);
- Te0=[Te0;avg(:,10,i)];
- delta_L=[ones(80,1) Id Iq Id.*Id Id.*Iq Iq.*Iq]*delta_l;
- Te1=[Te1;1.5*4*(lambda.*Iq+delta_L.*Id.*Iq)];
- end
-
- figure(1)
- x=1:3360;
- plot(x',3*Te0);
- hold on
- plot(x',Te1,'black');
-
-
- is=5:2:11;
- angle=0:1e-4:pi/2;
- for i=1:length(is)
- for j=1:length(angle)
- Id=-is(i)*sin(angle(j));
- Iq=is(i)*cos(angle(j));
- delta_L=[1 Id Iq Id.*Id Id.*Iq Iq.*Iq]*delta_l;
- Te_all(j)=1.5*4*(lambda.*Iq+delta_L.*Id.*Iq);
- end
- [a,b]=max(Te_all);
- MTPA(i)=angle(b)*180/pi;
- end
-
- for i=4:7:42
- for j=1:4
- [a,b]=max(avg((j-1)*20+1:j*20,10,i));
- MTPA0(fix(i/7)+1,j)=2*b-1;
- end
- end
- MTPA1=mean(MTPA0);
-
- % figure
- % plot(is,MTPA1)
- % hold on
- % plot(is,MTPA0)
- relative_error_1 = mean(abs(Te1./(3*Te0)-1));
-
- %% method2 使用正负零三组数据
- offset=2;
- speed=[5,6];
-
- ro=1/60*4*2*pi;
- e=offset*pi/180;
- T=[cos(e) sin(e);-sin(e) cos(e)];
-
- index=[];
- for i=speed
- index=[index,(i-1)*7+(1:7)];
- end
- data=avg(:,:,index);
-
- Y=[];
- phi=[];
- Y1=[];
- phi1=[];
- for i=1:length(speed)
- ud_p=data(:,7,(i-1)*7-offset+4);
- ud_0=data(:,7,(i-1)*7+4);
- ud_n=data(:,7,(i-1)*7+offset+4);
- uq_p=data(:,8,(i-1)*7-offset+4);
- uq_0=data(:,8,(i-1)*7+4);
- uq_n=data(:,8,(i-1)*7+offset+4);
- id_p=data(:,13,(i-1)*7-offset+4);
- id_0=data(:,13,(i-1)*7+4);
- id_n=data(:,13,(i-1)*7+offset+4);
- iq_p=data(:,14,(i-1)*7-offset+4);
- iq_0=data(:,14,(i-1)*7+4);
- iq_n=data(:,14,(i-1)*7+offset+4);
- id=(data(:,1,(i-1)*7-offset+4)+data(:,1,(i-1)*7+4)+data(:,1,(i-1)*7+offset+4))/3;
- iq=(data(:,2,(i-1)*7-offset+4)+data(:,2,(i-1)*7+4)+data(:,2,(i-1)*7+offset+4))/3;
- w=(data(:,3,(i-1)*7-offset+4)+data(:,3,(i-1)*7+4)+data(:,3,(i-1)*7+offset+4))/3;
- Y=[Y;ud_p-ud_0;uq_p-uq_0;ud_n-ud_0;uq_n-uq_0];
- phi=[phi;w*ro*sin(e).*id_p.*[ones(80,1) id iq id.*id id.*iq iq.*iq] w*ro*sin(e);
- -w*ro*sin(e).*iq_p.*[ones(80,1) id iq id.*id id.*iq iq.*iq] w*ro*(cos(e)-1);
- -w*ro*sin(e).*id_n.*[ones(80,1) id iq id.*id id.*iq iq.*iq] -w*ro*sin(e);
- w*ro*sin(e).*iq_n.*[ones(80,1) id iq id.*id id.*iq iq.*iq] w*ro*(cos(e)-1)];
- end
- delta_l=(phi'*phi)^-1*phi'*Y;
- l=delta_l(7);
- delta_l=delta_l(1:6);
-
- Te2=[];
- Te0=[];
- lambda=l;
- for i=1:42
- Id=avg(:,13,i);
- Iq=avg(:,14,i);
- Te0=[Te0;avg(:,10,i)];
- delta_L=[ones(80,1) Id Iq Id.*Id Id.*Iq Iq.*Iq]*delta_l;
- Te2=[Te2;1.5*4*(lambda.*Iq+delta_L.*Id.*Iq)];
- end
-
- figure(2)
- x=1:3360;
- plot(x',3*Te0);
- hold on
- plot(x',Te2,'black');
- hold on
- plot(x',Te1,'b');
-
- is=5:2:11;
- angle=0:1e-4:pi/2;
- for i=1:length(is)
- for j=1:length(angle)
- Id=-is(i)*sin(angle(j));
- Iq=is(i)*cos(angle(j));
- delta_L=[1 Id Iq Id.*Id Id.*Iq Iq.*Iq]*delta_l;
- Te_all(j)=1.5*4*(lambda.*Iq+delta_L.*Id.*Iq);
- end
- [a,b]=max(Te_all);
- MTPA(i)=angle(b)*180/pi;
- end
-
- for i=4:7:42
- for j=1:4
- [a,b]=max(avg((j-1)*20+1:j*20,10,i));
- MTPA0(fix(i/7)+1,j)=2*b-1;
- end
- end
- MTPA2=mean(MTPA0);
-
- % figure
- % plot(is,MTPA1)
- % hold on
- % plot(is,MTPA0)
- relative_error_2 = mean(abs(Te2./(3*Te0)-1));
-
-
- %% 之前的方法
-
- % 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');
- %
- % is=5:2:11;
- % angle=0:1e-4:pi/2;
- % for i=1:length(is)
- % for j=1:length(angle)
- % Id=-is(i)*sin(angle(j));
- % Iq=is(i)*cos(angle(j));
- % Ld=[1 Id Iq Id.*Id Iq.*Iq Id.*Iq]*X4(1:6,1);
- % Lq=[1 Id Iq Id.*Id Iq.*Iq Id.*Iq]*X3(:,1);
- % Te_all(j)=1.5*4*(lambda.*Iq+(Ld-Lq).*Id.*Iq);
- % end
- % [a,b]=max(Te_all);
- % MTPA2(i)=angle(b)*180/pi;
- % end
- %
- % figure
- % plot(is,MTPA1,'b')
- % hold on
- % plot(is,MTPA0,'r')
- % hold on
- % plot(is,MTPA2,'y');
|