以永磁直流电动机为例,介绍电机的Simulink建模的各种方法,首先,根据永磁直流电动机的物理模型建立数学模型,然后,根据数学模型及其各种变形,利用Simulink自带的功能模块建立起永磁直流电动机的多种仿真模型:(1)根据永磁直流电动机的状态方程以及Simulink模块库的Level-2 MATLAB S-Function模块建立仿真模型;(2)利用Simulink模块库中提供的嵌入式MATLAB函数模块建立仿真模型;(3)根据永磁直流电动机的状态方程直接用Simulink中的功能模块建立仿真模型;(4)根据传递函数形式的数学模型及Simulink中的Transfer fen模块个增益模块建立仿真模型;(5)利用Simulink模块库中提供的状态空间(State-Space)模块建立仿真模型;(6)根据永磁直流电动机的物理模型利用Power System 电路模块和Simulink功能模块相结合建立仿真模型;(7)利用基于物理建模原理工具箱的Simscape建立仿真模型。最后通过实例仿真验证了仿真模型的准确性,这些建模方法同样适合于其它型式电机的Simulink建模。
1. 永磁直流电动机的数学模型
永磁直流电机物理模型接线原理图及其等效电路如图1-1所示。永磁直流电机的定子磁极为永磁体,主磁场由永磁体产生,主磁极轴线与电励磁的直流电机主极轴线相同;电枢绕组在转子上。
为分析简单起见假定:电机磁路不饱和;不计电枢反应的影响;不计磁滞、涡流效应; 气隙磁场均匀分布,各绕组的自感系数均为常数。
图1 永磁直流电动机的物理模型
图1中按电动机惯例标明了各物理量正方向。根据基尔霍夫电压定律和牛顿运动第二定律可得如下微分方程:
(1)
将方程(1-1)写成标准的状态方程:
(2)
(3)
式(2)和式(3)中,
ia—电枢电流; wr—转子角速度;ua—电枢电压;
ra、La—分别为电枢绕组的等效电阻和等效电感;TL —负载转矩;
Bm—由永磁体磁通密度、电枢绕组匝数以及铁心的物理性质决定的速度常数或转矩常数(为简单起见,这里认为速度常数与转矩常数相等); J—电机转子和负载的总转动惯量;Bm-—机械旋转系统的摩擦阻力系数。
对方程式(2)进行Laplace 变换,并假设电机的初始条件为零,整理后得到电枢电流和转速的传递函数形式表达式为
(4)
式(4)中ia,ua、wr、TL、—分别为电枢电流、电枢电压、转子角速度、负载转矩的拉普拉斯函数;
s—拉普拉斯算子。
2. 电机的Simulink仿真模型
根据数学模型来建立仿真模型,是Simulink建立电机仿真模型的最一般的方法,这要求建模者既懂得物理模型又要懂得根据物理模型来建立数学模型 。反过来,由数学模型也可对应得到物理模型。电机的物理模型包含电路模型和机械运动动力学模型两个部分,所以电机的数学模型也对应有电路方程和机械运动方程。由此可知,用Matlab/simulink建立仿真模型有多种方法:(1)根据物理模型用Simscape工具箱,通过描述电机系统中不同组件之间的物理连接来建立仿真模型;(2)根据数学模型用simulink的功能模块,通过描述电机系统中不同模块的信号联系来建立仿真模型;(3)根据电机的等效电路和机械运动方程,用PowerSystem工具箱中的电气量元件或模块结合simulink中的功能模块来建立电机的仿真模型;(4)将物理模型中的机械动力学部分类比成电路模型,根据全电气等效电路模型,用SimPowerSystem工具箱建立仿真模型或者用Simscape工具箱建立电机的仿真模型。
(1)用Level-2 MATLAB S-Function模块建立仿真模型
根据永磁直流电动机的状态方程式(1)用Level-2 MATLAB S-Function模块建立仿真模型,如图2所示。下面给出了S函数程序,pmdc_sfun为S函数的文件名。
图2 基于Level-2 MATLAB S-Function模块的仿真模型
function pmdc_sfun(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 = 2;
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 = 2;
block.OutputPort(1).DatatypeID = 0; % double
block.OutputPort(1).Complexity = 'Real';
block.OutputPort(1).SamplingMode = 'Sample';
% Register the parameters
block.NumDialogPrms = 5;
block.DialogPrmsTunable = {'Tunable','Tunable','Tunable','Tunable','Tunable'};
% Set up the continuous states
block.NumContStates = 2;
% 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)
%endfunction
function Outputs(block)
% Output the state variables
block.OutputPort(1).Data = [block.ContStates.Data(1);
block.ContStates.Data(2)]; % y= [x(1);x(2)]
%endfunction
function Derivatives(block)
% Calculate the derivatives of the state variables
Ra = block.DialogPrm(1).Data;
La = block.DialogPrm(2).Data;
Ka = block.DialogPrm(3).Data;
J = block.DialogPrm(4).Data;
Bm = block.DialogPrm(5).Data;
u1=block.InputPort(1).Data(1); % u(1)
u2=block.InputPort(1).Data(2); % u(2)
x1 = block.ContStates.Data(1); % x(1)
x2 = block.ContStates.Data(2); % x(2)
f1 = (-Ra*x1 - Ka*x2 + u1)/La; % dx(1)/dt
f2 = (Ka*x1 - Bm*x2 - u2)/J; % dx(2)/dt
block.Derivatives.Data(1) = f1;
block.Derivatives.Data(2) = f2;
%endfunction
(2)基于嵌入式MATLAB函数模块的仿真模型
利用Simulink模块库中提供的嵌入式MATLAB函数模块建立的仿真模型如图3所示。
图3 嵌入式MATLAB函数模块的永磁直流电动机仿真模型
function y = pmdcm(u1,u2,u3,u4)
ra=1;
La=0.5;
ka=0.01;
Bm=0.1;
J=0.01;
A=[-ra/La -ka/La;ka/J -Bm/J];
B=[1/La 0;0 -1/J];
y = A*[u1;u2]+B*[u3;u4];
(3)基于状态方程式(1)的永磁直流电动机仿真模型
根据永磁直流电动机的状态方程式(1),直接用simulink的功能模块建立仿真模型如图4所示。这是用simulink建立电机仿真模型的最常用方法之一。
图4 基于状态方程(1)的永磁直流电动机的仿真模型
(4)基于状态空间形式的方程式(2)的永磁直流电动机仿真模型
根据状态空间形式的方程式(2),利用Simulink中的State-Space模块直接构造出永磁直流电动机的仿真模型如图5所示。
图5 基于State-Space模块永磁直流电动机的仿真模型
双击State-Space模块打开其参数对话框进行参数设置:
A:[-Ra/La -ka/La; ka/J -Bm/J];B:[1/La 0;0 -1/J];C: [1 0;0 1] ;D : [0 0;0 0];
(5)基于传递函数方程(4)建立永磁直流电动机仿真模型
根据传递函数形式方程式(4),用simulink功能模块 Transfer fcn 和Gain 模块等构造的仿真模型如图6所示。
图6 基于传递函数的永磁直流电动机仿真模型
(6)基于Power System Blockset电气模块和Simulink功能模块相结合的仿真模型
Power System Blockset (Simulink Library)中包含了变压器模型、电机模型、电源模型、功率器件模型和无源器件模型等典型的电力装置模型。Power System Blockset中的模型或模块可以与SIMULINK中的模块或建立的子系统混合使用,但要注意信号与电量及电量与信号之间的转换。根据Matlab/simulink中Power System工具箱中的 电路模块和Simulink功能模块相结合建立的永磁直流电动机仿真模型如图7所示。
图7 Power System和Simulink模块相结合的永磁直流电动机仿真模型
(7)利用基于物理建模原理工具箱的Simscape仿真模型
Simscape是在Simulink基础上扩展的工具模块,用来搭建不同领域物理系统的模型,并进行仿真,所以它通常与simulink的功能模块融合使用,就像Power System Blockset与simulink功能模块联合使用一样。使用时要注意物理量与信号量之间的转换。图8是用根据图1的物理模型用simscape搭建的仿真模型,并进行封装。
图8 基于Simscape的永磁直流电动机仿真模型
(7)利用全电气等效电路用Power System Blockset或Simscape建立仿真模型
永磁直流电动机的数学方程(1)或(2)是电枢等效电路的电路方程和机械运动方程两部分所组成,对其机械运动方程部分运用电气类比方法,得到对应的等效电路,两个等效电路合起来就是永磁直流电动机的全电气等效电路,如图9所示。其中,J相当于电感La,Bm相当于电阻Ra。或者,我们借助于图6的基于传递函数的永磁直流电动机的仿真模型,可以更为直观地进行类比,首先考虑第一个(左边的)传递函数,它的输入是电枢电压Ua与Ea(角速度Wr与电枢反电动势系数Ke的乘积)之差,输出是电枢电流ia,这是电压源和受控电压源作用于Ra*La串联电路的结果;我们再考虑第二个(右边的)传递函数(在形式上与第一个传递函数完全一样),它的输入是电磁转矩Te与负载转矩TL之差,输出是角速度Wr,运用机电类比原理,这相当于受控电压源Te(=Kt*ia,受电枢电流控制)和恒压源或受控电压源TL作用于Bm*J串联电路的结果。另外,根据电路的对耦原理电压源与电阻和电感的串联电路,可以变换成电流源与电容和电导组成的并联电路。
图9 永磁直流电动机全电路仿真模型
3. 仿真实例
永磁直流电动机的参数为:
仿真结果如图10所示。
图10 永磁直流电动机电枢电流和转速随时间变化曲线
对以上八种方法建立的永磁直流电动机的仿真模型在同一参数下进行了仿真,仿真曲线几乎一模一样,说明所建立的仿真模型是正确的。
总结:
根据永磁直流电动机的物理模型建立了数学模型,然后据此用Matlab/simulink建立了七种不同形式的连续时间状态的仿真模型,这些仿真模型的建模方法适合于任何电机,是学习电机建模的基础。这些仿真模型是在理想电机的假设条件下建立的。其中,(1)第4种建模方法是最简单的,它需要把数学模型整理成标准形式,只适合于线性情况;(2)同样,第5种方法,即基于传递函数的建模方法也是比较简单的,但对于比较复杂的电机系统,由于其传递函数难以求得,故不适合采取这种建模方法,否则,需要作较大的近似简化。这种方法也不适合于非线性情况;(3)第1和2两种方法是电机系统建模的比较有效的常用方法,它既适合于线性也适用于非线性情况,通常把这两种方法与其它方法相结合使用以应对更复杂的情况。单从编程建模来看,第2种方法比第1种方法简单很多,但第一种方法更适用于实际项目的开发(相比之下有很多优越性)。另外,Level-2 MATLAB S-Function比老版本的S-Function再开发实际项目是也具有更多的优点;(4)第3种方法,即直接根据数学模型用simulink的功能模块建立仿真模型的方法,是很常用的一种方法,它既适合于线性也适合于非线性的电机系统,它能够获取所有的内部状态信号,但建模过程比较繁琐,通常与第1种或第2种方法联合使用;(5)第6种方法是经常采用的方法之一,根据等效电路用Power System工具箱中的元件建模非常简单,不容易出错,机械运动方程通常用simulink的功能模块来实现。应用这种方法时应注意信号与电量及电量与信号之间的转换,这种方法也适合于线性也适合于非线性的电机系统。(6)第7中方法,即利用基于物理建模原理工具箱的Simscape建立仿真模型。Simscape建模,就是利用Simscape中的物理建模工具箱进行建模。该工具箱中有机械、液压、电子、电气等各种物理元器件模型,我们不需要知道模型内部的物理学含义,只需要根据元件的物理连接关系进行连接。(7)第8种方法,根据机电类比原理,得到全电气等效电路,建立永磁直流电动机的全电路仿真模型,增加了电机分析和建模的多样性。
参考文献:
1.电机瞬态过程分析的Matlab建模与仿真. 电子工业出版社,2013.8
2.机械系统的电气类比. Online Tutorials, Courses, and eBooks Library | Tutorialspoint