电机系统建模与分析大作业.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科上机大作业报告
课程名称:电机系统建模与分析姓名:
学号:
学院:
专业:
指导教师:
提交日期:年月日
目录
一、作业目的 (2)
二、作业要求 (3)
三、解题思路 (3)
1.数学模型的建立 (3)
2.滞环PWM的产生 (4)
3.电枢电压的确定 (4)
4.电枢电流为负值时的处理方法 (4)
5.R UNGLE-K UTTA法的基本算式 (5)
四、仿真程序 (5)
1.主程序 (5)
2.调用程序 (8)
五、仿真结果及其分析 (9)
1.仿真结果 (9)
2.分析计算结果 (11)
3.计算结果影响因素 (11)
步长的影响 (11)
转动惯量的影响 (12)
电感的影响 (13)
4.改进控制策略以获得更好的转速控制性能(PID) (14)
1.主程序 (16)
2.调用程序 (18)
六、收获与体会 (18)
一、作业目的
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.数学模型的建立
按电动机原则取正方向
即:
整理得状态方程组:
000,0
q f q q q
q
f q q u R i pi L i B p J i ωψψωωω--⎧=⎪⎪⎪-⎪=
⎨⎪
⎪⎪==⎪⎩ 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.主程序
%% Square wave generator ----just for persipicuous visialization.
FS=10000; % sampling rate
t=0:1/FS:0.6;
p=20*(-square(t*5*pi,50))+100; % square wave controller
plot(t,p);
hold on
%% Main code ----only one period from 0~0.4s deserve improving!
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;
for t1=h:h:0.6
if t1<0.2
limit_flag =1;
elseif t1<0.4 && t1>0.2
limit_flag =2;
else
limit_flag=1;
end
%
if iq(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));hold on
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