• 第四周作业


    第四周作业

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

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

     

    仿真作业

    基本要求:

    结合本周学习的交流电机原理及启动、调速、制动特性,用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)

     

    结果图如下:

  • 相关阅读:
    python信息收集(二)
    python信息收集(一)
    'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte
    Loadruner 之 controller 负载生成器与场景运行——性能测试
    chromedriver 在pycharm 中的使用
    selenium 安装
    在Linux 中搭建 Mysql
    前端攻略
    2020-5-22 第二期——拖延症
    2020-5-15 第一期
  • 原文地址:https://www.cnblogs.com/christiana/p/5300426.html
Copyright © 2020-2023  润新知