基于S函数的异步电机矢量控制仿真研究
2018-05-23余耀威周少武李苏城
余耀威 周少武 李苏城
【摘 要】根据异步电机在两相静止坐标系下的数学模型,利用MATLAB环境下的S函数建立了其仿真模型。通过在空间矢量脉宽调制(SVPWM)调速系统的仿真研究,验证了该模型的正确性,得到了比较理想的效果,该模型可作为研究异步电机交流调速系统的仿真平台。
【Abstract】Based on the mathematical model of the asynchronous motor in the two phase static coordinate system, the simulation model is established by using the S function under the MATLAB environment. Through the simulation research of the space vector pulse width modulation(SVPWM) speed regulation system, the correctness of the model is verified, and the ideal effect is achieved, so the model can be used as a simulation platform for asynchronous motor AC speed regulation system.
【关键词】异步电机;S函数;空间矢量脉宽调制;仿真平台
【Keywords】asynchronous motor;S function;space vector pulse width modulation;simulation platform
【中图分类号】TM343 【文献标志码】A 【文章编号】1673-1069(2018)04-0189-03
1 引言
三相异步电机是一个非线性、强耦合、高阶次的控制对象[1],针对异步电机的多变量数学模型人们已经进行过大量的研究,其建模方法也多种多样,各有优缺点。传统使用Simulink中的各个模块来搭建异步电机模型,它简单、直观。但这种利用静态建模的方法构建的模型,仿真过程中动态性能不佳,连线也比较复杂。因此,本文采取能良好适应动态仿真的S函数建立异步电机仿真模型,它与Simulink通用模块库的兼容性好,仿真精度也得到了提高,经过封装后便可用于异步电机交流调速平台中。
2 异步电机数学模型
在两相静止坐标系下,异步电机的状态空间方程可描述为:=a-RsLr ωrLm2 RrLm ωrLmLr-ωrLm2 -RsLr -ωrLmLr RrLm RsLm -ωrLmLs -RrLs -ωrLrLsωrLmLs RsLm ωrLrLs -RrLs IsαIsβIrαIrβ+
a Lr 0 0 0 0 Lr 0 0-Lm 0 0 0 0 -Lm 0 0UsαUsβ 0 0 (1)
式(1)中,Usα、Usβ、Isα、Isβ、Rs、Ls分别为αβ坐标系下定子电压、电流瞬时值及电阻、电感值;Irα、Irβ、Rr、Lr分别为αβ坐标系下转子电流瞬时值及折算后的电阻、电感值;Lm、ωr分别为互感、转子角速度;其中a=1/(LrLs-Lm2)
异步电机的运动方程为:=(Te-TL)(2)
式(2)中,np、J、Te、TL分别为电机极对数、转动惯量、电磁转矩、负载转矩
异步电机的电磁转矩方程为:Te=npLm(IsβIrα-IsαIsβ) (3)
式(1)、式(2)和式(3)构成异步电机在两相静止坐标系下数学模型,可以看出异步电机的数学模型是一个具有多参数、强耦合的复杂系统。若采用Simulink用各个模块搭建,必然复杂,因此有必要用S函数对其进行建模。
3 S函数的编写与建模
MATLAB是一种交互式仿真系统[3],其语言可按照所建立的数学模型方便表述。在Simulink工具中,利用S函数对其进行扩展,可大大减少多模块参与连线的复杂度,方便实现仿真实验。S函数模型用于仿真状态空间形式的连续或离散系统的模块,其基本格式为[4]:Function[sys,x0]=函数名(t,x,u,flag)
其中,t、x、u分别为时间、状态变量、输入参量;flag为返回变量标志。
针对前面异步电机数学模型的描述,可利用S函数对其进行封装,如图1所示。
由图1可见,该模型包括两个S函数模块motor1(式(1)和式(3))和(motor2式(2)),下面分别对其部分子函数进行描述。
①motor1中,根据式(1)和式(3),可确定
输入参量u(1)=Usα, u(2)=Usβ, u(3)=ωr
输出变量y(1)=Usα, u(2)=Usβ, y(3)=Isα, y(4)=Isβ, y(5)=Te
电机参数Rr,Lr,Rr,Lr,Lm,np
function[sys,x0]= motor1(t,x,u,Rs,Rr,Ls,Lr,Lm)
a=1/(Lm*Lm-Ls*Lr);
switch flag
case0
sys=[4;0;5;3;0;0];x0=[0;0;0;0];%4個状态变量,5个输入,1个输出
case1
sys(1)=(Rs*Lr*x(1)-Lm*u(3)*x(2)-Rr*Lm*x(3)-Lr*Lm*u(3)*x(4)-Lr*u(1))*a;
sys(2)=(Lm*Lm*u(3)*x(1)+Rs*Lr*x(2)+Lr*Lm*u(3)*x(3)-Rr*Lm*x(4)-Lr*u(2))*a;