《机电传动控制》学习笔记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。缺点是定子绕组和转子绕组的电流峰值比较大。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥