• 第四周仿真及学习心得


    第四周作业

    机卓1301储景瑞

    一、设计任务:

    结合本周学习的交流电机原理及启动、调速、制动特性,用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)方案最佳同学获本周"控制之星"称号。

    二、理论推导

    三、仿真结果

    由仿真结果可以看出,该方案满足题目要求,时间也很短

    四、学习心得

    三相交流电机的计算还是比较麻烦的,不过套用书上的公式也不是很麻烦,但是要真正从其本质上理解它还是有点难度的,至少到现在我只有一个定性的理解,但是相信认真推导,与直流电机做类比,最后是可以理解的。同时还是很佩服特斯拉的,我想他也是掌握了最小作用原理的,我的理解是最小作用的都是对称的,还有很多极值点也都是在对称位置,但是一时也找不到具体的例子。

    五、源代码

     

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

    parameter Resistance Rs = 0.531"Stator Resistance";

    parameter Resistance Rr=8 "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/3;

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

     

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

     

     

    if time <= 10 then

    u_A = 0;

    u_B = 0;

    u_C = 0;

    f_s = 0;

    Tl = 0;

    else if time<=1050 then

    f_s = f_N;

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

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

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

    Tl =15;

    else if time <=1550 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;

    else if time <=1875 then

    f_s = f_N;

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

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

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

    Tl =15;

    else if time <=2375 then

    u_A = 0;

    u_B = 0;

    u_C = 0;

    f_s = 0;

    Tl = 0;

    else if time <=2825 then

    f_s = f_N;

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

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

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

    Tl =15;

    else if time <=3450 then

    f_s = f_N*6/11;

    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-4*Pi/3);

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

    Tl =15;

    else if time <=3700 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;

    else if time <=3895 then

    f_s = f_N;

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

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

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

    Tl =15;

    else

    u_A = 0;

    u_B = 0;

    u_C = 0;

    f_s = 0;

    Tl = 0;

    end if;

    end if ;

    end if;

    end if;

    end if;

    end if;

    end if;

    end if;

    end if;

    end SACIM;

     

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

     

    plot(n)

     

    plot(i_A)

     

    plot(i_a)

  • 相关阅读:
    PyQt作品 – PingTester – 多点Ping测试工具
    关于和技术人员交流的一二三
    Pyjamas Python Javascript Compiler, Desktop Widget Set and RIA Web Framework
    Hybrid Qt applications with PySide and Django
    pyjamas build AJAX apps in Python (like Google did for Java)
    PyQt 维基百科,自由的百科全书
    InfoQ:请问为什么仍要选择Java来处理后端的工作?
    Eric+PyQt打造完美的Python集成开发环境
    python select module select method introduce
    GUI Programming with Python: QT Edition
  • 原文地址:https://www.cnblogs.com/hkcjr/p/5297319.html
Copyright © 2020-2023  润新知