- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
无刷直流电机仿真.doc
基于MATLAB/SIMULINK的无刷直流电动机系统仿真
引言
无刷直流电机(Brushless DC Motor,以下简称BLDCM),是随着电力电子技术和永磁材料的发展而逐渐成熟起来的一种新型电机。为了有效的减少控制系统的设计时间,验算各种控制算法,优化整个控制系统,有必要建立BLDCM控制系统仿真模型。本文在BLDCM数学模型的基础上,利用MATLAB的SIMULINK和S-FUNCTION建立BLDCM的仿真模型,并通过仿真结果验证其有效性。
在整个控制系统的仿真模型中,BLDCM本体模块是最重要的部分,该模块根据BLDCM电压方程求取BLDCM三相相电流,而要获得三相相电流信号ia,ib,ic必须首先求得三相反电动势信号ea,eb,ec,整个电动机本体模块的结果如下图3所示。电机本体模包括反动电势求取模块,中性点求取模块,转矩计算模块和位置检测模块。
本文直接采用了SIMULINK中的Lookup Table模块,运用分段线性化的思想,直观的实现了梯形波反电动势的模拟,具体实现如图4所示。
Lookup Table模块的实质是通过查表构造反电动势波形,只要把360°内的反电动势的单位波形预先输入至Lookup Table模块中,就能得到其单位理想波形,由前面的数学模型知道,反电势梯形波的幅值为:e=Ke*ω。其中Ke为电机的反电动势系数。具体的Lookup Table参数设置参照下表 1。
速度控制模块采用PID调节。
参考电流模块的作用是根据电流幅值信号Is和位置信号pos求出三相参考电
流。参考电流模块的功能通过S函数实现。
l、2、3为三相实际电流,4、5、6为三相参考电流,输出为脉冲信号,滞环的环宽设为0-1之间。模块结构框图如图10所示。
图 10 电流滞环控制模块
电压逆变模块
电压逆变器模块实现的是逆变器功能,输入为位置信号和电流滞环控制模块信号及电压逆变控制信号,输出为三相端电压,其中,可以通过编写S函数实现从转子位置信号得到六个MOSFET导通开关信号。如图11所示。
可得到控制开关的逻辑信号,如图11所示。由于6个MOSFET只可能同时有两个导通,且两个管不能为同相,所以可选用二选一开关来得到三相端电压,如图12所示。在本文设计的模型中,额定电压设为72V,则端电压的一半为36V。
图 12 开关功率管模块
仿真结果
仿真中,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所示。
图14 转矩响应曲线
图15 相电流波形
图16相反电动势波形
由仿真波形可以看出在参考转速系统响应快速且平稳相电流和反电动势波形较为理想仿真结果证明了本文所提出的这种BLDC仿真建模方法的有效在MatlabSimulink仿真环境下,可以方便地建立BLDCM的仿真模型。对于个别新的Sim模块,应用函数来实现,可以充分发挥Matlab编程的灵活性与Simu的简单直观性,加速无刷直流电动机调速系统的开发。Matlab仿真建模及模型中S函数的实现[J].微电机.
附录
referenceCurrent.m 参考电流模块S函数:
function sys=mdlOutputs(t,x,u)
if (u=0)(upi/3)
sys=[1;-1;0];
elseif (u=pi/3)(u2*pi/3)
sys=[1;0;-1];
elseif (u=2*pi/3)(upi)
sys=[0;1;-1];
elseif (u=pi)(u4*pi/3)
sys=[-1;1;0];
elseif (u=4*pi/3)(u5*pi/3)
sys=[-1;0;1];
else
sys=[0;-1;1];
end
inverter.m 电压模块S函数:
function sys=mdlOutputs(t,x,u)
if u=0upi/3
sys=[1 0 0 1 0 0];
elseif u=pi/3u2*pi/3
sys=[1 0 0 0 0 1];
elseif u=2*pi/3upi
sys=[0 0 1 0 0 1];
elseif u=piu4*pi/3
sys=[0 1 1 0 0 0];
elseif u=4*pi/3u5*pi/3
sys=[0 1 0 0 1 0];
else
sys=[0 0 0 1 1 0];
end
原创力文档


文档评论(0)