电机系统建模与分析大作业doc.docx

上传人:b****5 文档编号:4335009 上传时间:2022-11-29 格式:DOCX 页数:18 大小:314.42KB
下载 相关 举报
电机系统建模与分析大作业doc.docx_第1页
第1页 / 共18页
电机系统建模与分析大作业doc.docx_第2页
第2页 / 共18页
电机系统建模与分析大作业doc.docx_第3页
第3页 / 共18页
电机系统建模与分析大作业doc.docx_第4页
第4页 / 共18页
电机系统建模与分析大作业doc.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

电机系统建模与分析大作业doc.docx

《电机系统建模与分析大作业doc.docx》由会员分享,可在线阅读,更多相关《电机系统建模与分析大作业doc.docx(18页珍藏版)》请在冰豆网上搜索。

电机系统建模与分析大作业doc.docx

电机系统建模与分析大作业doc

 

本科上机大作业报告

 

课程名称:

电机系统建模与分析

姓名:

学号:

学院:

专业:

指导教师:

提交日期:

年月日

 

一、作业目的

1.熟悉永磁直流电动机及其调速系统的建模与仿真;

2.熟悉滞环控制的原理与实现方法;

3.熟悉Rungle-Kutta方法在仿真中的应用。

二、作业要求

一台永磁直流电动机及其控制系统如下图。

直流电源Udc=200V;电机永磁励磁ψf=1Wb,电枢绕组电阻Rq=0.5ohm、电感Lq=0.05H;转子转动惯量J=0.002kgm2;系统阻尼转矩系数B=0.1Nm/(rad/s),不带负载;用滞环控制的方法进行限流保护,电流上限Ih=15A、Il下限=14A;功率管均为理想开关器件;电机在t=0时刻开始运行,并给定阶跃(方波)转速命令,即,在0~0.2s是80rad/s,在0.2~0.4s是120rad/s,在0.4~0.6s是80rad/s如此反复,用滞环控制的方法进行转速调节(滞环宽度+/-2rad/s)。

用四阶龙格-库塔求解电机的电流与转速响应。

 

三、解题思路

1.数学模型的建立

按电动机原则取正方向

即:

整理得状态方程组:

2.滞环PWM的产生

写一个PWM波发生函数,使其具有以下功能:

1)周期T、占空比t可调

2)输入一个时刻值t,可输出对应时刻下输出电压值(高电平/低电平)

设置一个电流限制标识变量:

当电枢电流小于电流下限值时,该变量置1(开通);当电枢电流大于电流上限值时,该变量置0(关断);当电枢电流在上下限之间时,该变量保持原值不变。

3.电枢电压的确定

对上述电流限制标识变量和PWM波输出做“与”运算,通过判断对Uq赋值:

如果“与”结果为1,则Uq的值为Udc;如果“与”结果为0,则Uq的值为0。

4.电枢电流为负值时的处理方法

在滞环控制中,当转速从120r/min下降到80r/min时,由于电机自身转动惯量J的影响,即使uq为0,转速下降还是需要一段时间,而电枢电流就有可能在这段时间能掉到负值。

而通过实际电路分析可以发现,当电流反向时,并没有实际的通路,故电枢电流值不可能为负,在迭代求解时需要改变电机状态方程组,即电枢电流iq的值置为0,uq置为电机两端感应电势。

电枢电流出现了负数的情况,而根据理论分析,由于续流二极管的存在,电枢电流是不可能反向流动的,故现在的仿真程序是需要调整的。

当功率管断开时,通过电机的电流不断减小,当电流等于零时,此时可以看作电机两端断开,由于没有了电流,此时电机上的电压就是电机的旋转电势,故在仿真中,出现iq<=0时,就直接把iq赋零。

5.Rungle-Kutta法的基本算式

对于微分方程组

四、仿真程序

1.主程序

%%Squarewavegenerator----justforpersipicuousvisialization.

FS=10000;%samplingrate

t=0:

1/FS:

0.6;

p=20*(-square(t*5*pi,50))+100;%squarewavecontroller

plot(t,p);

holdon

%%Maincode----onlyoneperiodfrom0~0.4sdeserveimproving!

t1=0.2;t2=0.4;t3=0.6;h=0.0001;Udc=200;Ff=1;

fi=1;B=0.1;J=0.002;Rq=0.5;Lq=0.05;

vb

(1)=80;vb

(2)=120;

i=1;resid=0.00002;

pwm_i=1;pwm_w=1;Uq

(1)=Udc;

w

(1)=0;iq

(1)=0;pwm

(1)=1;

con_flag=0;

fort1=h:

h:

0.6

ift1<0.2

limit_flag=1;

elseift1<0.4&&t1>0.2

limit_flag=2;

else

limit_flag=1;

end

%

ifiq(i)>0.04

con_flag=1;

end

%

%if(iq<0.004&con_flag==1)

%Udc=w(i)*Ff;

%else

%Udc=200;

%end

%

%Udc=pwm(i)*200;

if(pwm(i)==1)

[iq(i+1),w(i+1)]=rungeon(iq(i),w(i),Lq,Udc);

plot(t1,iq(i+1),t1,w(i+1));holdon

i=i+1;

if(w(i)>vb(limit_flag)+resid)

pwm_w=0;

end

if(iq(i)>15)

pwm_i=0;

end

pwm(i)=pwm_i*pwm_w;

%if(iq(i)<14&&pwm_i==1&&pwm_w==0)

%pwm(i)=1;

%end

elseif(pwm(i)==0)

[iq(i+1),w(i+1)]=rungeoff(iq(i),w(i),Lq);

plot(t1,iq(i+1),t1,w(i+1));holdon

i=i+1;

if(w(i)

pwm_w=1;

end

if(iq(i)<14)

pwm_i=1;

end

pwm(i)=pwm_i*pwm_w;

%if(iq(i)<14&&pwm_i==1&&pwm_w==0)

%pwm(i)=1;

%end

%if(iq(i)<=0)

%iq(i)=0;

%Udc=w(i)*Ff;

%else

%Udc=pwm(i)*200;

%end

%

if(iq(i)<1&&con_flag==1)

pwm(i)=1;

Udc=w(i)*Ff;

else

Udc=200;

end

end

end

end

xlabel('T/s');ylabel('I/A(V/(red/s))');title('CHC¿ØÖƵĵç»úתËÙÓëµçÁ÷ÏìÓ¦(h=0.0001s)');

plot(t,iq,t,w);

2.调用程序

rungeoff

function[iq,w]=rungeoff(iq0,w0,Lq)

h=0.00005;

w

(1)=w0;iq

(1)=iq0;

k1=f11(w

(1),iq0,Lq);a1=iq

(1)+h*k1/2;

k2=f11(w

(1)+0.5*h,a1,Lq);a2=iq

(1)+h*k2/2;

k3=f11(w

(1)+0.5*h,a2,Lq);a3=iq

(1)+h*k3;

k4=f11(w

(1)+h,a3,Lq);

k=(k1+2*k2+2*k3+k4)/6;

iq=iq

(1)+h*k;

k11=pw(iq,w

(1));a11=w

(1)+h*k11/2;

k22=pw(iq+0.5*h,a11);a22=w

(1)+h*k22/2;

k33=pw(iq+0.5*h,a22);a33=w

(1)+h*k33;

k44=pw(iq+h,a33);

k=(k11+2*k22+2*k33+k44)/6;

w=w

(1)+h*k;

functiony=pw(a,c)

fi=1;B=0.1;J=0.002;

y=(fi*a-B*c)/J;

functiony=f11(w,iq,Lq)

fi=1;Rq=0.5;

y=(-w*fi-Rq*iq)/Lq;

rungeon

function[iq,w]=rungeon(iq0,w0,Lq,Udc)

h=0.00005;

w

(1)=w0;iq

(1)=iq0;

k1=f1(w

(1),iq0,Lq,Udc);a1=iq

(1)+h*k1/2;

k2=f1(w

(1)+0.5*h,a1,Lq,Udc);a2=iq

(1)+h*k2/2;

k3=f1(w

(1)+0.5*h,a2,Lq,Udc);a3=iq

(1)+h*k3;

k4=f1(w

(1)+h,a3,Lq,Udc);

k=(k1+2*k2+2*k3+k4)/6;

iq=iq

(1)+h*k;

k11=pw(iq,w

(1));a11=w

(1)+h*k11/2;

k22=pw(iq+0.5*h,a11);a22=w

(1)+h*k22/2;

k33=pw(iq+0.5*h,a22);a33=w

(1)+h*k33;

k44=pw(iq+h,a33);

k=(k11+2*k22+2*k33+k44)/6;

w=w

(1)+h*k;

functiony=pw(a,c)

fi=1;B=0.1;J=0.002;

y=(fi*a-B*c)/J;

functiony=f1(w,iq,Lq,Udc)

fi=1;Rq=0.5;Udc=200;

y=(Udc-w*fi-Rq*iq)/Lq;

五、仿真结果及其分析

1.仿真结果

图1plot(t,w,t,i,iq)

图2plot(t,pwm)

图3plot(t,w,t,iq,t,pwm*200)

2.分析计算结果

可见在当前的控制方案下,电枢电流被控制在了13.5~15.5A的范围内,而电机转速被控制在了75~85rad/s以及115~125rad/s的范围之下。

几个范围都和预期的范围存在一定的差距。

3.计算结果影响因素

步长的影响

当步长h增大时,电流的波动越来越剧烈,电机的转速波动也越来越大,在h=0.005的时候转速只具有基本的控制能力。

这是由于步长增大,相当于系统对电机状态的采样频率降低了,所有的控制都是基于系统对电机状态的采样再经过一定的算法实现的,而由于采样的频率过低,导致电机没有及时得到控制,所以电机的电流和转速都有非常大的波动,故在实际控制系统中,应该尽量减小步长,增大采样的频率。

图4步长增加一倍

图5步长缩小一半

转动惯量的影响

当转动惯量较大时,转速的变化比较缓慢,达到要求转速的时间比较长,但是转速稳定时跳动的差值较小。

当转动惯量较小时,转速的变化比较剧烈,达到要求转速的时间比较短,但是转速稳定过程中跳动的差值较大。

图610倍转动惯量

图71/10倍转动惯量

电感的影响

当电感较大时,电流的变化更加缓慢,使得转速的改变也比较缓慢,达到稳定的时间较长。

当电感较小时,电流的变化比较剧烈,使得转速的改变也比较快速,达到稳定的时间较短。

图85倍电感L=0.25

图91/5倍电感L=0.01

4.改进控制策略以获得更好的转速控制性能(PID)

图10PID控制

图11PID控制放大

在整定PID控制器参数时,可以根据控制器的参数与系统动态性能和稳态性能之间的定性关系,用实验的方法来调节控制器的参数。

为了减少需要整定的参数,首先可以采用PI控制器。

为了保证系统的安全,在调试开始时应设置比较保守的参数,例如比例系数不要太大,积分时间不要太小,以避免出现系统不稳定或超调量过大的异常情况。

给出一个阶跃给定信号,根据被控量的输出波形可以获得系统性能的信息,例如超调量和调节时间。

应根据PID参数与系统性能的关系,反复调节PID的参数。

  如果阶跃响应的超调量太大,经过多次振荡才能稳定或者根本不稳定,应减小比例系数、增大积分时间。

如果阶跃响应没有超调量,但是被控量上升过于缓慢,过渡过程时间太长,应按相反的方向调整参数。

  如果消除误差的速度较慢,可以适当减小积分时间,增强积分作用。

  反复调节比例系数和积分时间,如果超调量仍然较大,可以加入微分控制,微分时间从0逐渐增大,反复调节控制器的比例、积分和微分部分的参数。

1.主程序

%%%Squarewavegenerator----justforpersipicuousvisialization.

%FS=10000;%samplingrate

%t=0:

1/FS:

0.4;

%p=20*(-square(t*5*pi,50))+100;%squarewavecontroller

%

%plot(t,p);

%holdon

%%Maincode----onlyoneperiodfrom0~0.4sdeserveimproving!

t1=0.2;t2=0.4;t3=0.6;h=0.0001;tail=10000;Udc=200;Ff=1;

freq=1000;peri=1/freq;

pwm=0;

temp1=0;count1=0;

i=1;

Uq

(1)=Udc;

duty=1;

w

(1)=0;iq

(1)=0;

Tau=0;

e

(1)=0;e

(2)=0;e(3)=0;

Kp=80;

Kd=20;

Ki=1.2;

N=100;

temp=0;

m=1;

count=0;

velocity=80;

fori=1:

1:

tail

temp=temp+h;

temp1=temp1+h;

iftemp>0.2

count=count+1;

if(mod(count,2)==1)

velocity=120;

else

velocity=80;

end

temp=0;

end

%iftemp1>peri

%count1=count1+1;

%if(mod(count1,2)==1)

%pwm=1;

%else

%pwm=0;

%end

%temp1=0;

%end

%plot(i*h,velocity);holdon

Udc=Tau*200;

[iq(i+1),w(i+1)]=runge(iq(i),w(i),Udc,h);

%plot(i*h,iq(i+1),i*h,w(i+1));holdon

Tau=Tau+Kp*(e(3)-e

(2))+Ki*e(3)+Kd*(e(3)+e

(1)-2*e

(2));

ifTau>1

Tau=1;

elseifTau<0

Tau=0;

end

e

(1)=e

(2);

e

(2)=e(3);

e(3)=velocity-w(i+1);

%if(e(3)<2&&e(3)>-2)

%e(3)=0;

%end

%

if(iq(i+1)>15)

iq(i+1)=15;

elseif(iq(i+1)<0)

iq(i+1)=0;

end

ifi==tail-1

disp(sprintf('Thefinalsteadyerroris:

%2.1f.\n',e(3)));

end

end

num=1:

tail+1;

plot(h*num,w,'LineWidth',2);holdon

plot(h*num,iq,'r');

set(gca,'FontName','Helonia','FontSize',10,'FontWeight','bold');

xlim([0,h*tail]);

xlabel('T/s');ylabel('I/A(V/(red/s))');title('Õ¼¿Õ±ÈPID¿ØÖƵĵç»úתËÙÓëµçÁ÷ÏìÓ¦');

2.调用程序

function[iq,w]=runge(iq0,w0,Udc,h)

w

(1)=w0;iq

(1)=iq0;

k1=f1(w

(1),iq0,Udc);a1=iq

(1)+h*k1/2;

k2=f1(w

(1)+0.5*h,a1,Udc);a2=iq

(1)+h*k2/2;

k3=f1(w

(1)+0.5*h,a2,Udc);a3=iq

(1)+h*k3;

k4=f1(w

(1)+h,a3,Udc);

k=(k1+2*k2+2*k3+k4)/6;

iq=iq

(1)+h*k;

k11=pw(iq,w

(1));a11=w

(1)+h*k11/2;

k22=pw(iq+0.5*h,a11);a22=w

(1)+h*k22/2;

k33=pw(iq+0.5*h,a22);a33=w

(1)+h*k33;

k44=pw(iq+h,a33);

k=(k11+2*k22+2*k33+k44)/6;

w=w

(1)+h*k;

functiony=pw(a,c)

fi=1;B=0.1;J=0.002;

y=(fi*a-B*c)/J;

functiony=f1(w,iq,Udc)

fi=1;Rq=0.5;Lq=0.05;

y=(Udc-w*fi-Rq*iq)/Lq;

六、收获与体会

通过本次电机建模作业,熟悉永磁直流电动机及其调速系统的建模与仿真,同时也熟悉熟悉滞环控制的原理与实现方法和Rungle-Kutta方法在仿真中的应用。

这次实验过程中,对于matlab软件要求较高,对于很多matlab语言有更多的理解。

对于电机建模过程中的矩阵运算,微分方程组的求解都有很大的提高。

建模过程中,开始遇到最难的问题是将龙哥库塔法,准确的应用微分方程组中,其中矩阵方程的建立起到十分重要的作用。

通过这次实验,更多的熟悉了直流电动机的性能,对于电机调速,电枢电流大小的电机各方面性能有了更加清楚的了解。

这次实验虽然题目比较简单,但是涉及的知识面丰富,还需要在以后应用过程中慢慢体会。

由于初次接触到软件建模,所以建模过程中有很多细节都参加到同学讨论之中,对于电机方面,软件方面的理解都在沟通中提升,所以总的来说这次建模十分有意义。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1