天天看點

交流異步電機的Modelica模型

Modelica标準庫裡的異步電機模型過于複雜,為了便于學習,我用最基本的異步電機方程寫了一個Modelica模型,公式參照陳伯時的《電力拖動自動控制系統--運動控制系統》第3版的190頁到195頁的内容,實際的電機模型參數參照了Novotny和Lipo的《Vector Control and Dynamics of AC Drives》第78頁的一個例子參數并稍作修改。這個模型沒有使用dq坐标系。

本模型中使用的電機主要參數為:

  • 額定電壓(相電壓):220 V
  • 額定頻率:50 Hz
  • 極對數:2
  • 轉動慣量:0.1 kg.m^2
  • 定子電阻:0.531 Ohm
  • 轉子電阻:0.408 Ohm
  • 定子漏感:2.52 mH
  • 轉子漏感:2.52 mH
  • 互感:8.47 mH

上述參數可根據實際電機的參數進行修改,負載轉矩和負載慣量可根據實際仿真情況加以修改。

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";  
  
  parameter Resistance Rs = 0.531"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";

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;
  else
    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 = 10;
  end if;

end SACIM;
      
           

在模型中,我們定義了電機的定子電壓方程(由于仿真軟體的時間機關是毫秒,是以所有求導操作前都乘以1000,下同):

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;
  else
    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 = 10;
  end if;
           

運作如下指令可進行模型的仿真:

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