机电传动控制第四周仿真作业

一.仿真要求:

结合本周学习的交流电机原理及启动、调速、制动特性,用Modelica设计和仿真一个用三相交流异步电机带动起重机起升机构运行。具体要求如下:

1)实现如下机械运动周期:

  • 控制电机带重物上升,从静止加速到800r/min
  • 保持800r/min匀速运动0.5s,
  • 减速到静止,保持静止状态0.5s,
  • 带重物下降,从静止达到600r/min
  • 保持600r/min匀速运动0.6s,
  • 减速到静止。

2) 升降机构和重物折算到到电机转子轴上的等效负载惯量为1Kg.m^2,折算到到电机转子轴上的等效负载转矩是15N.m。

3)使用统一的电机模型,如果控制策略中用到转子串电阻,允许将该电机的转子改为绕线式转子(参数不变)。

4)参照教材中给出的交流电机启动、调速和制动方法,设计控制策略,用Modelica实现控制策略并与电机模型实现联合仿真。

5)可以采用定子串电阻、转子串电阻、定子调压、定子调频等手段,但必须具备工程上的可实施性。

6)评价指标:快速启动、制动,冲击转矩和冲击电流小,能耗小,兼顾实施的经济性。

二.设计思路

根据要求可知,这一运动周期包括三次变速,两次静止。可以利用变频的方法来改电机转速,并且可以通过讲三相电压降为0从而使其保持静止,中间带中午下降的拖动运动应该通过反接电压来完成。后面代码中具体的参数并不是由精确的计算得出,而是反复的改变时间和电阻得来的。本次仿真参考了上次控制之星熊同学的思路http://www.cnblogs.com/quartet/p/5298091.html并加以改进。

三.Modelica代码

model SACIM "A Simple AC Induction Motor Model"

 

type Voltage=Real(unit="V");

 

type Current=Real(unit="A");

 

type Resistance=Real(unit="Ohm");

 

type Inductance=Real(unit="H");

 

type Speed=Real(unit="r/min");

 

type Torque=Real(unit="N.m");

 

type Inertia=Real(unit="kg.m^2");

 

type Frequency=Real(unit="Hz");

 

type Flux=Real(unit="Wb");

 

type Angle=Real(unit="rad");

 

type AngularVelocity=Real(unit="rad/s");

 

 

 

constant Real Pi = 3.1415926;

 

 

 

Current i_A"A Phase Current of Stator";

 

Current i_B"B Phase Current of Stator";

 

Current i_C"C Phase Current of Stator";

 

Voltage u_A"A Phase Voltage of Stator";

 

Voltage u_B"B Phase Voltage of Stator";

 

Voltage u_C"C Phase Voltage of Stator";

 

Current i_a"A Phase Current of Rotor";

 

Current i_b"B Phase Current of Rotor";

 

Current i_c"C Phase Current of Rotor";

 

Frequency f_s"Frequency of Stator";

 

Torque Tm"Torque of the Motor";

 

Speed n"Speed of the Motor";

 

 

 

Flux Psi_A"A Phase Flux-Linkage of Stator";

 

Flux Psi_B"B Phase Flux-Linkage of Stator";

 

Flux Psi_C"C Phase Flux-Linkage of Stator";

 

Flux Psi_a"a Phase Flux-Linkage of Rotor";

 

Flux Psi_b"b Phase Flux-Linkage of Rotor";

 

Flux Psi_c"c Phase Flux-Linkage of Rotor";

 

 

 

Angle phi"Electrical Angle of Rotor";

 

Angle phi_m"Mechnical Angle of Rotor";

 

AngularVelocity w"Angular Velocity of Rotor";

 

 

 

Torque Tl"Load Torque";

 

 

 

Resistance Rs"Stator Resistance";

 

parameter Resistance Rr=0.408"Rotor Resistance";

 

parameter Inductance Ls = 0.00252"Stator Leakage Inductance";

 

parameter Inductance Lr = 0.00252"Rotor Leakage Inductance";

 

parameter Inductance Lm = 0.00847"Mutual Inductance";

 

parameter Frequency f_N = 50"Rated Frequency of Stator";

 

parameter Voltage u_N = 220"Rated Phase Voltage of Stator";

 

parameter Real p =2"number of pole pairs";

 

parameter Inertia Jm = 0.1"Motor Inertia";

 

parameter Inertia Jl = 0.1"Load Inertia";

 

parameter Real s1=0.5369"frequency rate";

 

parameter Real s2=0.056"stable frequency rate";

 

parameter Real s3=0.4026"another frequency rate";

 

parameter Real k=0.7"stoping rate";

 

 

 

initial equation

 

 

 

Psi_A = 0;

 

Psi_B = 0;

 

Psi_C = 0;

 

Psi_a = 0;

 

Psi_b = 0;

 

Psi_c = 0;

 

phi = 0;

 

w = 0;

 

 

 

equation

 

 

 

u_A = Rs * i_A + 1000 * der(Psi_A);

 

u_B = Rs * i_B + 1000 * der(Psi_B);

 

u_C = Rs * i_C + 1000 * der(Psi_C);

 

 

 

0 = Rr * i_a + 1000 * der(Psi_a);

 

0 = Rr * i_b + 1000 * der(Psi_b);

 

0 = Rr * i_c + 1000 * der(Psi_c);

 

 

 

Psi_A = (Lm+Ls)*i_A + (-0.5*Lm)*i_B + (-0.5*Lm)*i_C + (Lm*cos(phi))*i_a + (Lm*cos(phi+2*Pi/3))*i_b + (Lm*cos(phi-2*Pi/3))*i_c;

 

Psi_B = (-0.5*Lm)*i_A + (Lm+Ls)*i_B + (-0.5*Lm)*i_C + (Lm*cos(phi-2*Pi/3))*i_a + (Lm*cos(phi))*i_b + (Lm*cos(phi+2*Pi/3))*i_c;

 

Psi_C = (-0.5*Lm)*i_A + (-0.5*Lm)*i_B + (Lm+Ls)*i_C + (Lm*cos(phi+2*Pi/3))*i_a + (Lm*cos(phi-2*Pi/3))*i_b + (Lm*cos(phi))*i_c;

 

 

 

Psi_a = (Lm*cos(phi))*i_A + (Lm*cos(phi-2*Pi/3))*i_B + (Lm*cos(phi+2*Pi/3))*i_C + (Lm+Lr)*i_a + (-0.5*Lm)*i_b + (-0.5*Lm)*i_c;

 

Psi_b = (Lm*cos(phi+2*Pi/3))*i_A + (Lm*cos(phi))*i_B + (Lm*cos(phi-2*Pi/3))*i_C + (-0.5*Lm)*i_a + (Lm+Lr)*i_b + (-0.5*Lm)*i_c;

 

Psi_c = (Lm*cos(phi-2*Pi/3))*i_A + (Lm*cos(phi+2*Pi/3))*i_B + (Lm*cos(phi))*i_C + (-0.5*Lm)*i_a + (-0.5*Lm)*i_b + (Lm+Lr)*i_c;

 

 

 

Tm =-p*Lm*((i_A*i_a+i_B*i_b+i_C*i_c)*sin(phi)+(i_A*i_b+i_B*i_c+i_C*i_a)*sin(phi+2*Pi/3)+(i_A*i_c+i_B*i_a+i_C*i_b)*sin(phi-2*Pi/3));

 

 

 

w = 1000 * der(phi_m);

 

 

 

phi_m = phi/p;

 

n= w*60/(2*Pi);

 

 

 

Tm-Tl = (Jm+Jl) * 1000 * der(w);

 

Tl = 10;

 

 

 

if time <= 100 then

 

f_s = 0;

 

Rs = 0.531;

 

u_A = 0;

 

u_B = 0;

 

u_C = 0;

 

 

 

elseif time<=810 then

 

f_s = f_N*s1;

 

Rs = 0.531;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s1;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s1;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s1;

 

elseif time<=812 then

 

f_s = f_N*s1;

 

Rs = 8.5;

     

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s1;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s1;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s1;

 

 

elseif time<=945 then

 

f_s = f_N*s1;

 

Rs = 0.710;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s1;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s1;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s1;

 

 

elseif time<=1000 then

 

f_s = f_N*s1;

 

Rs = 0.531;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s1;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s1;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s1;

 

elseif time<=1500 then

f_s = f_N*s2;

 

Rs = 0.531;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s2;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s2;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s2;

 

 

 

elseif time<=1515 then

f_s = f_N*s3;

 

Rs = 5.101;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s3;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s3;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s3;

 

 

 

elseif time<=2220 then

f_s = f_N*s3;

 

Rs = 0.531;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s3;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s3;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s3;

 

elseif time<=2250 then

 

f_s = f_N*k*s1;

 

Rs = 3.5;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s1*k;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s1*k;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s1*k;

 

elseif time<=2410 then

 

f_s = f_N*s1;

 

Rs = 0.531;

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s1;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s1;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s1;

 

 

 

else

 

u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*s2;

 

u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*s2;

 

u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*s2;

 

f_s = f_N*s2;

 

Rs = 0.531;

 

end if;

 

 

 

end SACIM;

 

simulate(SACIM,startTime=0,stopTime=3000)

plot({Tm,n})

 

四.仿真结果

机电传动控制第四周仿真作业_第1张图片

 

你可能感兴趣的:(机电传动控制第四周仿真作业)