一、设计要求
结合本周学习的交流电机原理及启动、调速、制动特性,用Modelica设计和仿真一个用三相交流异步电机带动起重机起升机构运行。具体要求如下:
1)实现如下机械运动周期:
2) 升降机构和重物折算到到电机转子轴上的等效负载惯量为1Kg.m^2,折算到到电机转子轴上的等效负载转矩是15N.m。
3)使用统一的电机模型,如果控制策略中用到转子串电阻,允许将该电机的转子改为绕线式转子(参数不变)。
4)参照教材中给出的交流电机启动、调速和制动方法,设计控制策略,用Modelica实现控制策略并与电机模型实现联合仿真。
5)可以采用定子串电阻、转子串电阻、定子调压、定子调频等手段,但必须具备工程上的可实施性。
6)评价指标:快速启动、制动,冲击转矩和冲击电流小,能耗小,兼顾实施的经济性。
2、过程分析:
由于自耦变压器启动时的K是可以调节的因此启动转矩可调,而且可以得到较小的启动电流,故采用自耦变压器降压启动。由于变频调速具有调速范围广、平滑性好、能耗小无级调速,故采用变频调速。而制动则采用反接制动,因为反馈制动用于电机的运行速度高于其同步转速与此情景不符合,能耗制动在制动的后阶段,随着转速的降低,能耗制动转矩也很快减小,因此制动效果比反接制动差。
3、参数确定:
由于理论推导能力的不足,仿真过程中需要的时间以及K,a,b,c只能通过修改数据一步步通过图像调试出来的。而本人调试能力有限,因此只能给出代码的模板,而里面的参数还没有确定下来。
4、仿真代码(未确定参数):
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 K=0.8"starting rate";
  parameter Real a=0.54"frequency rate";
  parameter Real b=?"stable frequency rate";  
  parameter Real c=0.405"another frequency rate";
  parameter Real P=?"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);
= Rr * i_a + 1000 * der(Psi_a);
= Rr * i_b + 1000 * der(Psi_b);
= 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
    u_A = 0;
    u_B = 0;
    u_C = 0;
    f_s = 0;Rs = 0.531;
  elseif time<=t1 then
     f_s = f_N*a;
 Rs = 0.531;
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*K*a;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*K*a;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*K*a; 
  elseif time<=t2 then
     f_s = f_N*a;
Rs = 0.531;
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*a;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*a;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*a; 
  elseif time<=t3 then
     f_s = f_N*a;Rs = ?;
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*a;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*a;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*a;
  elseif time<=t4 then
     f_s = f_N*a;Rs = 0.531;
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*a;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*a;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*a;
  elseif time<=t5 then
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*b;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*b;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*b; 
    f_s = f_N*b;Rs = 0.531;
  elseif time<=t6 then
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*K*c;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*K*c;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*K*c; 
    f_s = f_N*K*c;Rs = 0.531;
  elseif time<=t7 then
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*c;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*c;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*c; 
    f_s = f_N*c;Rs = 0.531;
  elseif time<=t8 then
    f_s = f_N*P*a;Rs = ?;
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*a*P;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*a*P;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*a*P; 
  elseif time<=t9 then
    f_s = f_N*a;Rs = 0.531;
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*a;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*a;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*a;    
  else
    u_A = u_N * 1.414 * sin(2*Pi*f_s*time/1000)*b;  
    u_B = u_N * 1.414 * sin(2*Pi*f_s*time/1000-2*Pi/3)*b;
    u_C = u_N * 1.414 * sin(2*Pi*f_s*time/1000-4*Pi/3)*b; 
    f_s = f_N*b;Rs = 0.531;
  end if;
end SACIM;
原文:http://www.cnblogs.com/wuchuan/p/5300324.html