1. 概述
2. 单相异步电动机状态方程式
3. 基于S-Function的仿真模型建立
4. 瞬态分析实例
1. 概述
单相异步电动机,也称为单相感应电动机,是一种常见的电动机类型,广泛应用于家用电器(如空调、冰箱、洗衣机、风扇、电梯等),农业机械(如水泵、喷雾器、收割机等)和医疗设备(如某些医疗影像设备和手术设备等)中。单相异步电动机的控制技术主要包括变频调速控制(V/F控制)、矢量控制、直接转矩控制、无传感器控制、模糊控制、模型预测控制等。这些控制方法拟在后续的博文中加以介绍。
电机的Simulink仿真模型的建立一般来说有三种方法:根据电机数学模型建立仿真模型;根据电机物理模型用Simscape建模;根据电机的电路模型用Simscape建模或SimPowerSystem建模。下面根据单相异步电动机的状态空间数学模型用基于Level-2 Matlab File S-Function的S函数模块建立仿真模型。
2. 单相异步电动机静止dq轴系的状态空间数学模型
单相异步电动机的接线原理图如图1所示。图中,定子上有两个在空间相差90˚ 电角度的绕组:M绕组为工作绕组(主绕组),a绕组为起动绕组(辅绕组)。转子为笼型,d绕组和q绕组分别为d、q轴上的等效绕组。Cs为起动电容,Cr为运转电容。
在分析单相异步电动机动态数学模型时,为简单起见作如下假设:(1)气隙磁通密度在空间按正弦分布,忽略磁场的高次谐波;(2)电机磁路不饱和;(3)忽略铁心损耗:(4)不考虑频率和温度变化对绕组电阻的影响。
图1. 单相电容异步电动机的接线原理图
单相异步电动机的数学模型是一个高阶﹑非线性﹑强耦合的多变量系统。选取静止dq坐标参考系,可以消除瞬态方程式中的周期性时变系数和降低方程的阶数,从而达到简化数学模型使其便于分析和应用的目的。下面按电动机惯例建立单相异步电动机在静止dq坐标系的瞬态数学模型。
磁链方程
每个绕组的磁链是它本身的自感磁链和其它绕组对它的互感磁链之和。设电流、磁链的正方向符合右手螺旋定则,因此四个绕组的磁链方程为
式(1)中,
Lm,La—分别为主绕组和副绕组的全自感;
Mm—主绕组与转子d轴等效绕组的互感;
Ma—副绕组与转子q轴等效绕组的互感;
Ld—折算到主绕组的转子d轴等效绕组的全自感;
Lq—折算到副绕组的转子q轴等效绕组的全自感。
电压方程
式中,
Rm, Ra ─ 分别为主绕组和副绕组的电阻;
Rd ─ 折 算到主绕组的转子d轴等效绕组电阻;
Rq ─ 折算到副绕组的转子q轴等效绕组电阻;
p为微分算符,p=d/dt;
─转子电角速度;
K─副绕组与主绕组的有效匝数比;
Rc、C ─分别为电容器的电阻和电容。
状态方程
将式(1)代入式(2)后加以整理,可得以绕组电流、和转子电角速度为状态变量的矩阵形式的状态方程 :
式中,
np ─ 磁极对数;
TL─ 负载转矩;
J ─ 电机转子轴和负载的总转动惯量;
Bm ─ 摩擦转矩系数。
如果将电容电压也作为状态变量,则式(3)中的系数矩阵为
电磁转矩方程
式(3),(4)和(5)即为单相异步电动机的状态方程式。
3. 建立单相异步电动机仿真模型(基于Level-2 Matlab File S-Function)
根据单相异步电动机的数学模型(3)~(5),用MATLAB/Simulink建立的仿真模型(命名为spim)如图2,3和4所示,其中spim子系统用s-function模块构建,S函数命名为SPIM_sfun,仿真模型和源程序如下所示。
图2. 单相异步电动机仿真模型(基于Level-2 Matlab File S-Function)
图3. 子系统spim1的内部形式
图4. 电容器电路子系统
function SPIM_sfun_1(block)
setup(block);
function setup(block)
% Register the number of ports
block.NumInputPorts = 1;
block.NumOutputPorts =1;
% Set up the input port properties
block.InputPort(1).Dimensions = [3,1];
block.InputPort(1).DirectFeedthrough = true;
block.InputPort(1).DatatypeID = 0;
block.InputPort(1).Complexity = 'Real';
block.InputPort(1).SamplingMode = 'Sample';
% Set up the output port properties
block.OutputPort(1).Dimensions = [4,1];
block.OutputPort(1).DatatypeID = 0; % double
block.OutputPort(1).Complexity = 'Real';
block.OutputPort(1).SamplingMode = 'Sample';
% Register the parameters
block.NumDialogPrms = 13;
block.DialogPrmsTunable = {'Tunable','Tunable','Tunable','Tunable',...
'Tunable','Tunable','Tunable','Tunable',...
'Tunable','Tunable','Tunable','Tunable','Tunable'};
% Set up the continuous states
block.NumContStates = 5;
% Set block sample time to inherited
block.SampleTimes = [-1 0];
% Register the continuous states
block.RegBlockMethod('InitializeConditions', @InitializeConditions);
block.RegBlockMethod('Outputs', @Outputs);
block.RegBlockMethod('Derivatives', @Derivatives);
block.RegBlockMethod('SetInputPortSamplingMode', @SetInputPortSamplingMode);
%endfunction
function SetInputPortSamplingMode(block, port, mode)
% Set the input port sampling mode
block.InputPort(port).SamplingMode = mode;
%endfunction
function InitializeConditions(block)
% Initialize the state variables
block.ContStates.Data(1) = 0; % initial condition for x(1)
block.ContStates.Data(2) = 0; % initial condition for x(2)
block.ContStates.Data(3) = 0; % initial condition for x(3)
block.ContStates.Data(4) = 0; % initial condition for x(4)
block.ContStates.Data(5) = 0; % initial condition for x(5)
%endfunction
% Calculate the derivatives of the state variables
function Derivatives(block)
Rm = block.DialogPrm(1).Data;
Ra = block.DialogPrm(2).Data;
Lm = block.DialogPrm(3).Data;
La = block.DialogPrm(4).Data;
Ld = block.DialogPrm(5).Data;
Lq = block.DialogPrm(6).Data;
Rd = block.DialogPrm(7).Data;
Rq = block.DialogPrm(8).Data;
np = block.DialogPrm(9).Data;
K = block.DialogPrm(10).Data;
J = block.DialogPrm(11).Data;
Mm = block.DialogPrm(12).Data;
Ma = block.DialogPrm(13).Data;
u1=block.InputPort(1).Data(1); % u(1)
u2=block.InputPort(1).Data(2); % u(2)
u3=block.InputPort(1).Data(3); % u(3)
x1 = block.ContStates.Data(1); % x(1)
x2 = block.ContStates.Data(2); % x(2)
x3 = block.ContStates.Data(3); % x(3)
x4 = block.ContStates.Data(4); % x(4)
x5 = block.ContStates.Data(5); % x(5)
A=[Lm, 0, Mm, 0;
0, La, 0, Ma;
Mm, 0, Ld, 0;
0, Ma, 0, Lq];
G=[-Rm, 0, 0, 0;
0, -Ra,0, 0;
0,x5*Ma/K,-Rd,x5*Lq/K;
-K*x5*Mm,0,-K*x5*Ld,-Rq];
B=[u1;u2;0;0];
x=[x1;x2;x3;x4];
f(1:4) = A\(B+G*x);
f(5)=np*(np*K*Mm*(x4*x1-x3*x2)-u3)/J;
f=[f(1);f(2);f(3);f(4);f(5)];
block.Derivatives.Data(1) = f(1);
block.Derivatives.Data(2) = f(2);
block.Derivatives.Data(3) = f(3);
block.Derivatives.Data(4) = f(4);
block.Derivatives.Data(5) = f(5);
%endfunction
function Outputs(block)
% Output the Output electromagnetic torque
np = block.DialogPrm(9).Data;
K = block.DialogPrm(10).Data;
Mm = block.DialogPrm(12).Data;
Te = np*K*Mm*(block.ContStates.Data(4)*block.ContStates.Data(1)- ...
block.ContStates.Data(3)*block.ContStates.Data(2));
% Output the state variables and electromagnetic torque
block.OutputPort(1).Data = [block.ContStates.Data(1);
block.ContStates.Data(2);
Te;
block.ContStates.Data(5)];
%endfunction
4. 实例仿真
在这里,我们对单相异步电动机的起动过程进行仿真分析。仿真用的单相感应电机参数见表1。设单相电源电源负载转矩TL=1.0N.m。先将起动电容器Cs串入副绕组, 再把定子绕组接入单相电源, 使电动机起动。当电机转子转速达到同步速的75% 时将起动电容Cs用离心开关切除, 同时将运转电容器Cr接入并保持在起动绕组的电路中。、时的电容起动、电容运行单相异步电动机的起动过程瞬态特性曲线如图5、6、7和8所示。
表1 单相异步电动机参数
图5. 电源电压初相角时起动过程主绕组电流
图6. 电源电压初相角时起动过程副绕组电流
图7. 电源电压初相角时起动过程中的电磁转矩
图8. 电源电压初相角时起动过程中的转子角速度
图9. 电源电压初相角时起动过程中的电磁转矩
比较图7可知,电源电压初相角时,在转速很低的起动开始时间, 电磁转矩表现出有基频(电源频率) 的脉振;而从图9 可见, 当电源电压初相角时电磁转矩不出现这种脉振。这说明这种现象与电机的合闸时间有关,这种脉振转矩由不同的电机绕组中电流的周期性分量和非周期性分量相互作用引起。从转矩特性看,电机稳定运行时存在2倍频脉振分量,说明电机的气隙磁场为椭圆形旋转磁场,它将使电机的铁耗增加,是单相感应电机效率降低的主要原因。
总结:本文建立了单相异步电动机在静止dq坐标系的状态方程数学模型,根据数学模型建立了基于Level-2 Matlab File S-Function的仿真模型;最后通过实例分析了单相异步电动机的起动过程得出了有意义的结果。将上面的仿真曲线与Matlab自带的单相异步电动机仿真模型的启动过程曲线比较,证明所建立的仿真模型是正确的。