zoukankan      html  css  js  c++  java
  • 第四周作业

    第四周作业

    这周复习了第四章中三相异步电动机的工作原理及其机械特性,以此为依据巩固了三相异步电机的启动、调速及制动。

    这周课外比赛的琐事较多,没有额外增加阅读内容。

     

    仿真作业

    基本要求:

    结合本周学习的交流电机原理及启动、调速、制动特性,用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)评价指标:快速启动、制动,冲击转矩和冲击电流小,能耗小,兼顾实施的经济性。

    7)方案最佳同学获本周"控制之星"称号。

     

    仿真过程:

    首先调整了负载惯量值,同时,考虑到启动时转矩不能过大,根据书中所述异步电动机固有机械特性,当施加在定子每相绕组上的电压降低时,启动转矩会明显减小,当转子电阻适当增大时,启动转矩会增大,启动时采取降压启动。

    制动时,为追求效率,采用反接制动,由于反接制动时电流很大,所以酌情在定子电路中串接附加电阻。

    调整转速时,根据

    可知转速变化的比率与频率及电压的变化率相同,电机原模型转速1500 r/min,通过调整频率f及电压可以实现调速。

    设定速度为800 r/min 时,注意到直接乘系数 800/1500 不能得到最终稳定切合800 r/min 速度的曲线,由于额定转速 ,取系数 800/(1500*0.985),结果曲线良好。但对于反向600 r/min 的速度,调整效果劣于原数值,故直接取系数 600/1500 。

    停止部分,由于电机仍受15 N.m 转矩,因此仍需设定一不大的频率及电压值。

     

     

    代码如下:

    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";

    Resistance Rs"Stator Resistance";

     

    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";

     

    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 = 1"Load Inertia";

     

    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);

     

     

    if time <= 100 then

    u_A = 0;

    u_B = 0;

    u_C = 0;

    f_s = 0;

    Tl = 0;

    Rs = 0.531;

    else

    if time <= 200 then

    f_s = f_N * 800/(1500 * 0.985);

    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000) * 800/(1500 * 0.985) * 0.85;

    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3) * 800/(1500 * 0.985) * 0.85;

    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3) * 800/(1500 * 0.985) * 0.85;

    Tl = 15;

    Rs = 0.531;

    else

    if time <= 1850 then

    f_s = f_N * 800/(1500 * 0.985);

    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000) * 800/(1500 * 0.985);

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

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

    Tl = 15;

    Rs = 0.531;

    else

    if time <= 4300 then

    f_s = f_N;

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

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

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

    Tl = 15;

    Rs = 2.531;

    else

    if time <= 4800 then

    f_s = f_N * 0.0705;

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

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

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

    Tl = 15;

    Rs = 0.531;

    else

    if time <= 4900 then

    f_s = f_N * 600/1500;

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

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

    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000) * 600/1500 * 0.85;

    Tl = 15;

    Rs = 0.531;

    else

    if time <= 6450 then

    f_s = f_N * 600/1500;

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

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

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

    Tl = 15;

    Rs = 0.531;

    else

    if time <= 9150 then

    f_s = f_N;

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

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

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

    Tl = 15;

    Rs = 1.531;

    else

    f_s = f_N * 0.0705;

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

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

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

    Tl = 15;

    Rs = 0.531;

    end if;

    end if;

    end if;

    end if;

    end if;

    end if;

    end if;

    end if;

     

    end SACIM;

     

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

     

    plot(n)

     

    plot(Tm)

     

    结果图如下:

  • 相关阅读:
    December 23rd 2016 Week 52nd Friday
    December 22nd 2016 Week 52nd Thursday
    December 21st 2016 Week 52nd Wednesday
    December 20th 2016 Week 52nd Tuesday
    December 19th 2016 Week 52nd Sunday
    December 18th 2016 Week 52nd Sunday
    uva294(唯一分解定理)
    uva11624Fire!(bfs)
    fzu2150Fire Game(双起点bfs)
    poj3276Face The Right Way
  • 原文地址:https://www.cnblogs.com/christiana/p/5300426.html
Copyright © 2011-2022 走看看