无刷直流电机仿真教程.docx
《无刷直流电机仿真教程.docx》由会员分享,可在线阅读,更多相关《无刷直流电机仿真教程.docx(11页珍藏版)》请在冰豆网上搜索。
无刷直流电机仿真教程
基于MATLAB/SIMULINK的无刷直流电动机系统仿真
1引言
无刷直流电机(BrushlessDCMotor,以下简称BLDCM),是随着电力电子技术和永磁材料的发展而逐渐成熟起来的一种新型电机。
为了有效的减少控制系统的设计时间,验算各种控制算法,优化整个控制系统,有必要建立BLDCM控制系统仿真模型。
本文在BLDCM数学模型的基础上,利用MATLAB的SIMULINK和S-FUNCTION建立BLDCM的仿真模型,并通过仿真结果验证其有效性。
2无刷直流电机仿真模型
本文在MATLAB的SIMULINK的环境下,利用其丰富的模块库,在分析BLDCM数学模型的基础上,建立BLDCM控制系统仿真模型,系统结构框图如图1所示。
图1无刷直流电机控制原理框图
以图1为基础,按照模块化建模的思想搭建的系统的仿真模型如图2所示。
整个控制系统主要包括电动机本体模块、逆变器模块、电流滞环控制模块、速度控制模块等。
图2无刷直流电机控制系统仿真模型框图
2.1电动机本体模块
在整个控制系统的仿真模型中,BLDCM本体模块是最重要的部分,该模块根据BLDCM电压方程求取BLDCM三相相电流,而要获得三相相电流信号ia,ib,ic必须首先求得三相反电动势信号ea,eb,ec,整个电动机本体模块的结果如下图3所示。
电机本体模块包括反动电势求取模块,中性点求取模块,转矩计算模块和位置检测模块。
图3电机本体模块
1.反电势求取模块
本文直接采用了SIMULINK中的LookupTable模块,运用分段线性化的思想,直观的实现了梯形波反电动势的模拟,具体实现如图4所示。
图4反电势求取模块
LookupTable模块的实质是通过查表构造反电动势波形,只要把360°的反电动势的单位波形预先输入至LookupTable模块中,就能得到其单位理想波形,由前面的数学模型知道,反电势梯形波的幅值为:
e=Ke*ω。
其中Ke为电机的反电动势系数。
具体的LookupTable参数设置参照下表1。
表1位置信号和单位反电动势的关系
位置
0
60
120
180
240
300
360
A
1
1
1
-1
-1
-1
1
B
-1
-1
1
1
1
-1
-1
C
1
-1
-1
-1
1
1
1
2.转矩计算模块
依据数学模型建立转矩计算模型如图5所示。
图5转矩计算模块
3.中性点求取模块
求出反电动势后根据电压平衡方程来求中性点电压,具体模块如图6所示。
图6中性点求取模块
4.转子位置检测模块
图7转子位置检测模块
2.2速度PID控制模块
速度控制模块采用PID调节。
图8PID控制模块
2.3参考电流模块
参考电流模块的作用是根据电流幅值信号Is和位置信号pos求出三相参考电
流。
参考电流模块的功能通过S函数实现。
图9参考电流模块
2.4电流滞环控制模块
电流滞环控制模块的作用是实现滞环电流控制,输入端l、2、3为三相实际电流,4、5、6为三相参考电流,输出为脉冲信号,滞环的环宽设为0-1之间。
模块结构框图如图10所示。
图10电流滞环控制模块
2.5电压逆变模块
电压逆变器模块实现的是逆变器功能,输入为位置信号和电流滞环控制模块信号与电压逆变控制信号,输出为三相端电压,其中,可以通过编写S函数实现从转子位置信号得到六个MOSFET导通开关信号。
如图11所示。
图11电压逆变模块
三相的上桥臂控制信号与电流滞环控制模块得到的信号进行逻辑与运算,即
可得到控制开关的逻辑信号,如图11所示。
由于6个MOSFET只可能同时有两个导通,且两个管不能为同相,所以可选用二选一开关来得到三相端电压,如图12所示。
在本文设计的模型中,额定电压设为72V,则端电压的一半为36V。
图12开关功率管模块
3仿真结果
仿真中,BLDCM参数设置为:
额定转速n=120rad/s,定子相绕组电阻R=1.25欧姆,定子相绕组自感L=0.055H,互感M=0.003H,转动惯量为0.006kg.m2,反电势系数为Ke=0.22V/rad/s。
极对数为np=1,72V直流电源供电。
在t=0.2s时,加负载2N.m。
可得到系统转速,转矩,相电流,相反电动势仿真曲线如图13-16所示。
图13转速响应曲线
图14转矩响应曲线
图15相电流波形
图16相反电动势波形
由仿真波形可以看出,在n=120rad/s参考转速下,系统响应快速且平稳相电流和反电动势波形较为理想,转矩脉动较大。
仿真结果证明了本文所提出的这种BLDCM仿真建模方法的有效性。
4总结
在Matlab/Simulink仿真环境下,可以方便地建立BLDCM的仿真模型。
对于个别新的Simulink模块,应用S函数来实现,可以充分发挥Matlab编程的灵活性与Simulink的简单直观性,加速无刷直流电动机调速系统的开发。
参考文献
[1]兰宝华.无刷直流电动机无位置传感器位置检测技术的研究,中南大学.
[2]叶长青,华杰,海波.无刷直流电动机驱动系统Matlab仿真建模与模型中S函数的实现[J].微电机.
附录
referenceCurrent.m参考电流模块S函数:
functionsys=mdlOutputs(t,x,u)
if(u>=0)&(usys=[1;-1;0];
elseif(u>=pi/3)&(u<2*pi/3)
sys=[1;0;-1];
elseif(u>=2*pi/3)&(usys=[0;1;-1];
elseif(u>=pi)&(u<4*pi/3)
sys=[-1;1;0];
elseif(u>=4*pi/3)&(u<5*pi/3)
sys=[-1;0;1];
else
sys=[0;-1;1];
end
inverter.m电压模块S函数:
functionsys=mdlOutputs(t,x,u)
ifu>=0&usys=[100100];
elseifu>=pi/3&u<2*pi/3
sys=[100001];
elseifu>=2*pi/3&usys=[001001];
elseifu>=pi&u<4*pi/3
sys=[011000];
elseifu>=4*pi/3&u<5*pi/3
sys=[010010];
else
sys=[000110];
end