《机电传动控制》学习笔记04

《机电传动控制》学习笔记04

胡恒谦 机卓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)评价指标:快速启动、制动,冲击转矩和冲击电流小,能耗小,兼顾实施的经济性。

二、过程分析

  本例中采用了自耦变压器降压启动,变频调速,反接制动的方式对交流电机的上述过程进行分析和仿真。

三、参数计算

  本例中未给的数据都是通过一次次调试而得到的,没有进行理论计算和推倒,一步步调试的效率比较低,如果可以通过计算得到可以大大提高效率。

四、源代码

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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";
  Torque Tl"Load Torque";
 
  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";
 
  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";
  parameter Real K=0.8"starting rate";
  parameter Real a=0.544"frequency rate";
  parameter Real b=0.0683"stable frequency rate"
  parameter Real c=0.3893"another frequency rate";
  parameter Real P=0.7"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);
 
  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);
  Tl = 15;
   
  if time <= 10 then
    u_A = 0;
    u_B = 0;
    u_C = 0;
    f_s = 0;
    Rs = 0.531; 
 
  elseif time<=1580 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<=1630 then
    f_s = f_N*a;
    Rs = 5; 
    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<=2550 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<=3075 then
    f_s = f_N*b;
    Rs = 0.531;
    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;
  
  elseif time<=3120 then
    f_s = f_N*K*c;
    Rs = 0.531;
    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;
  
  elseif time<=4410 then
    f_s = f_N*c;
    Rs = 0.531;
    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;
  
  elseif time<=4430 then
    f_s = f_N*P*a;
    Rs = 4; 
    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<=5395 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
    f_s = f_N*b;
    Rs = 0.531; 
    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;
 
  end if;
 
end SACIM;

  

五、仿真结果

  在Modelica中,根据一步步调试得到的参数,编写程序,并绘制Tm、n、i_A、i_a随时间变化的曲线,分别如下图所示。

 

图1  Tm和n随时间变化的曲线

 

图2  i_A随时间变化的曲线

 

图2  i_a随时间变化的曲线

 

六、结果分析

  从曲线中可以看出,整个过程需要约5400ms,电机转矩最大值不超过190N.m。缺点是定子绕组和转子绕组的电流峰值比较大。

posted @   小白菜05  阅读(257)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示