maxwell_电机气隙磁密与用matlab进行fft谐波分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

maxwell 电机气隙磁密与用matlab进行fft谐波分析1.对电机进行静态场分析,分析完后,进入后处理

2.需要在气隙中间画一条圆弧线。点开deometry菜单,点creat再选Arc 如下图所示。

然后输入圆弧的中心(0,0)回车。在下一个界面输入起始点坐标。最后一个界面输入这条弧线上的采样点数(250),圆弧角90度,圆弧的分段数目(250),名字以及线的颜色,最后回车,就会得到下图的圆弧了。

3. 需要得到气隙磁密。打开后处理计算器,依次选择qty—B,即选择磁密矢量。选择geom—line—airgap_line, 即选中刚才画的那条弧线。选择unit vect—2d normal,求取圆弧线的径向分量。选择dot(点乘),求取圆弧线上的B 的径向分量。再选一遍那个圆弧线,然后点 2d plot,就会出现那个磁密分布图了。

4. 虽然maxwell本身也可以做fft分析,但小弟还是喜欢把数据导出来在matlab 中进行分析,这样更灵活一些。导出数据。点击plot菜单—save as—2d plot。在弹出的对话框中输入数据文件的名字。(小弟实在找不到更好的办法导出数据了,如有哪位达人有更好的方法,请赐教。小弟在此谢谢了。)

5. 对气隙磁密进行谐波分析。将第四步中生成的.dat文件拷出来放到一个文件夹中(保证matlab和数据文件的路径相同)。然后将matlab文件也拷贝到这个文件夹中。打开这个m文件,输入Ns=500(需要进行分析的采样点个数,由于我们在maxwell中只分析了一个磁极下的磁密,所以只有半个周期,我们需要通过镜像生成后半个周期,这样总采样点个数为250*2=500)。Order是需要分析的谐波次数,输入11就是分析到11次谐波。运行,就得到下面的两个图了,第一个是原始波形,基波分量以及各高次谐波;第二个是个谐波分量的幅值大小柱状图。

这样一个电机气隙磁密谐波分析就完成了。

clc

clear all;

format long;

Ns=500;

order=11;

%**********************read the position and flux density************************

fid=fopen('B.dat','r'); %open the original file fidnew = fopen('b1.dat','w'); %write the new file while feof(fid)==0

tline = fgetl(fid); %tline?

if ~ischar(tline), break, end

temp=abs(tline);

Nlength=length(tline);

isemptyline=0; %

if Nlength==0

isemptyline=1;

end

allspace=0; %

isspace=0;

for i=1:Nlength

T=temp(i);

if T==32

isspace=isspace+1;

end

if isspace==Nlength

allspace=1;

break

end

end

findalpha=0; %

for j=1:Nlength

T=temp(j);

if ((T>=65)&(T>=90))|((T>=97)&(T>=122))

findalpha=1;

break;

end

end

if

(~findalpha)&(~allspace)&(isemptyline==0) %

fprintf(fidnew,tline);

fprintf(fidnew,'\n');

end

end

fclose(fid);

fclose(fidnew);

fid1=fopen('b1.dat','r');

flux_position =fscanf(fid1,'%f',[2,Ns]);

fclose(fid1);

%********************************read file

finish*****************************************

flux_position=flux_position';

pos=flux_position(:,1);

flux=flux_position(:,2);

figure;

plot(pos,flux,'r');%plot origional waveform

hold on;

grid on;

fft1=fft(flux,Ns);

j=0;

amp_har=zeros(1,(order+1)/2);

for m=1:2:order

j=j+1;

fft1=fft(flux,Ns);

fund_ele_front=fft1(m+1);

fund_ele_back=fft1(Ns+1-m);

amp_har(j)=(abs(fund_ele_front))/Ns*2; fft1=0*fft1;

fft1(m+1)=fund_ele_front;

fft1(Ns+1-m)=fund_ele_back;

fft1=ifft(fft1,Ns);

fft1=real(fft1);

plot(pos,fft1);

hold on;

end

k=(1:2:order);

figure;

bar(k,amp_har);

grid on;

%peak_b=max(fft1)

%rms_b=0.707*peak_b

相关文档
最新文档