无刷直流电机仿真(共10页).doc
精选优质文档-倾情为你奉上基于MATLABSIMULINK的无刷直流电动机系统仿真0 引言无刷直流电机(Brushless DC Motor,以下简称BLDCM),是随着电力电子技术和永磁材料的发展而逐渐成熟起来的一种新型电机。为了有效的减少控制系统的设计时间,验算各种控制算法,优化整个控制系统,有必要建立BLDCM控制系统仿真模型。本文在BLDCM数学模型的基础上,利用MATLAB的SIMULINK和S-FUNCTION建立BLDCM的仿真模型,并通过仿真结果验证其有效性。1 无刷直流电机仿真模型本文在MATLAB的SIMULINK的环境下,利用其丰富的模块库,在分析BLDCM数学模型的基础上,建立BLDCM控制系统仿真模型,系统结构框图如图1所示。图1 无刷直流电机控制原理框图以图1为基础,按照模块化建模的思想搭建的系统的仿真模型如图2所示。整个控制系统主要包括电动机本体模块、逆变器模块、电流滞环控制模块、速度控制模块等。图2 无刷直流电机控制系统仿真模型框图1.1 电动机本体模块在整个控制系统的仿真模型中,BLDCM本体模块是最重要的部分,该模块根据BLDCM电压方程求取BLDCM三相相电流,而要获得三相相电流信号ia,ib,ic必须首先求得三相反电动势信号ea,eb,ec,整个电动机本体模块的结果如下图3所示。电机本体模块包括反动电势求取模块,中性点求取模块,转矩计算模块和位置检测模块。图3 电机本体模块1. 反电势求取模块本文直接采用了SIMULINK中的Lookup Table模块,运用分段线性化的思想,直观的实现了梯形波反电动势的模拟,具体实现如图4所示。图 4 反电势求取模块Lookup Table模块的实质是通过查表构造反电动势波形,只要把360°内的反电动势的单位波形预先输入至Lookup Table模块中,就能得到其单位理想波形,由前面的数学模型知道,反电势梯形波的幅值为:e=Ke*。其中Ke为电机的反电动势系数。具体的Lookup Table参数设置参照下表 1。表 1 位置信号和单位反电动势的关系位置060120180240300360A111-1-1-11B-1-1111-1-1C1-1-1-11112. 转矩计算模块依据数学模型建立转矩计算模型如图5所示。图5 转矩计算模块3. 中性点求取模块求出反电动势后根据电压平衡方程来求中性点电压,具体模块如图6所示。图6 中性点求取模块4 转子位置检测模块图7 转子位置检测模块1.2 速度PID控制模块速度控制模块采用PID调节。图 8 PID控制模块1.3 参考电流模块参考电流模块的作用是根据电流幅值信号Is和位置信号pos求出三相参考电流。参考电流模块的功能通过S函数实现。图9 参考电流模块1.4 电流滞环控制模块电流滞环控制模块的作用是实现滞环电流控制,输入端l、2、3为三相实际电流,4、5、6为三相参考电流,输出为脉冲信号,滞环的环宽设为0-1之间。模块结构框图如图10所示。图 10 电流滞环控制模块1.5 电压逆变模块电压逆变器模块实现的是逆变器功能,输入为位置信号和电流滞环控制模块信号及电压逆变控制信号,输出为三相端电压,其中,可以通过编写S函数实现从转子位置信号得到六个MOSFET导通开关信号。如图11所示。图 11 电压逆变模块三相的上桥臂控制信号与电流滞环控制模块得到的信号进行逻辑与运算,即可得到控制开关的逻辑信号,如图11所示。由于6个MOSFET只可能同时有两个导通,且两个管不能为同相,所以可选用二选一开关来得到三相端电压,如图12所示。在本文设计的模型中,额定电压设为72V,则端电压的一半为36V。图 12 开关功率管模块2 仿真结果仿真中,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仿真建模方法的有效性。3 总结在Matlab/Simulink仿真环境下,可以方便地建立BLDCM的仿真模型。对于个别新的Simulink模块,应用S函数来实现,可以充分发挥Matlab编程的灵活性与Simulink的简单直观性,加速无刷直流电动机调速系统的开发。参考文献1 兰宝华. 无刷直流电动机无位置传感器位置检测技术的研究,中南大学.2 叶长青,尹华杰,赵海波.无刷直流电动机驱动系统Matlab仿真建模及模型中S函数的实现J.微电机.附录referenceCurrent.m 参考电流模块S函数:function sys=mdlOutputs(t,x,u)if (u>=0)&(u<pi/3) sys=1;-1;0;elseif (u>=pi/3)&(u<2*pi/3) sys=1;0;-1;elseif (u>=2*pi/3)&(u<pi) sys=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;endinverter.m 电压模块S函数:function sys=mdlOutputs(t,x,u)if u>=0&u<pi/3 sys=1 0 0 1 0 0;elseif u>=pi/3&u<2*pi/3 sys=1 0 0 0 0 1;elseif u>=2*pi/3&u<pi sys=0 0 1 0 0 1;elseif u>=pi&u<4*pi/3 sys=0 1 1 0 0 0;elseif u>=4*pi/3&u<5*pi/3 sys=0 1 0 0 1 0;else sys=0 0 0 1 1 0;end专心-专注-专业