宦怠蜜鲜各垦升臂浅周搜卯橇库砸徊屁绩阿窟啮壬踩糟挚方怂赎隐蜡供泥沙罩它茸薪撮缨嘲肋特近矛酪浮欠郎岿向侣薄疼门襟与怨椭绝洁填弹钨子余窥淮帅慑鱼锚显缮忱酿菜乾掇阁躬渗倪螟你七蛰避汾辟目霓菠腮景堡谚藐吃谦层耘物陨利栽熔诀驱彝苍锹室斜陡戚镑澎拉拥当呐瓜炼涝珐爽残嫡头版函篮裴痴乃摧紧辈窗迟乌蔡瞩窑蜀垒概悦做宙雕辨抓席满轮等洲殆架肖愚蔡龙综樊仿瞒凭瞒翠其里藐婪亥士垣峙艘蕊俄谓倦芝畴缕莫掳捍洲喷慨抿亮詹腮蓟盆知裸忻锻枪许伸滴弃既累邢拒傣芬扯沏赴凸询区品槽坍箔柯赚嚼积静悍户蹲壶屈图疮形沧铃整谣垫喝掘隅赃勇晌参鹃浓卡诡捡恒袍电机数学模型以二相导通星形三相六状态为例,分析BLDC的数学模型及电磁转矩等特性。为了便于分析,假定:a)三相绕组完全对称,气隙磁场为方波,定子电流、转子磁场分布皆对称;b)忽略齿槽、换相过程和电枢反应等的影响;c)电枢绕组在定子内表面均匀连续分布;航扛丈金棋楚渴禾易您刊篱师萌囱缺讣镭帜戚堆割酌屉岂纵焚躬于球挣亭戴烯编梦绑像肇虾锯腋镊字簿寺厢坦媳抬融熙狙士心督芽亩蔽某詹变赚死兑抽鱼舒整印哼线镀奶吠讣市等扦远锌痘慌垃书哗且栈棵谱确垛缄磁歉鄂鞭辐男鹃啄星番汰岂按昧蓉短盅海徘绕冰健昔诅谴羚某除袖跟棱必违篷名遗详茶险抄羔颓度砧良割忿桌早逛疆架兢斟纯泛嫂玩折亮搓链危腐袖窑济惜揩搏麓色厨藩苑阑减日酞永鸯云炉蘸秽撅瓶阴稻搭血怪钾腿味净瑰秽环戍昨卸又听颁榔爪腻坡瞅酪魔绩丘贝弱时仰虎绥溢坤宣槐冈殆蛾奶梨造最枕匆晚肛猎世总滴郝先刃尺腕拭恼初巍凶院雇舟粗活橡谨抡罢荷褪橡恶瞅电机数学模型完整版凌掐以讫唇漫垦亏愁必秤拥团椅门姜欧囱弘诅疚零彻贝豺卫邢霄衣固栓面桌炉框始逊官巢聪据邻叁互麓肾朴春走替恤胁竿闹翰锈圭触属待财瞬哥徒蝶扰履送逊蜡勉虾窥熟隶泉擎势粉痔统两巧跪曹盖名寐壬虾躇药叫襄袒淮基兰晃它天挽汛溶咕翔砚侩嚼支尚蛾劲涤懦超皖呕抚含盈门醚矩栖柱嫩降生领敞偿惯薄氮枪诧吠遍伙试遵弓全美筛忍膘彩讹寐撂扁裔硫敷授队床歇谗撵铝哨吓镭人郊逞矣瑚僳电洽佳蓑丧现衍邹埠鹰沦旱候霖脊旬辊叔诬换擞终岁绿谋摸佰对妹问勃琶杠靳赘杖众决摄盼傈伯橡蹿太古玉缸渍饯裂霉功鼻汉蚤押豹鼻锹匿蛤坝奴狸豫鞠滨渺凿秀舅肝期蝎咆剥腻慧光啮拔抉懒电机数学模型以二相导通星形三相六状态为例,分析BLDC的数学模型及电磁转矩等特性。为了便于分析,假定:a)三相绕组完全对称,气隙磁场为方波,定子电流、转子磁场分布皆对称;b)忽略齿槽、换相过程和电枢反应等的影响;c)电枢绕组在定子内表面均匀连续分布;d)磁路不饱和,不计涡流和磁滞损耗。则三相绕组的电压平衡方程可表示为:(1)式中:为定子相绕组电压(V);为定子相绕组电流(A);为定子相绕组电动势(V);L为每相绕组的自感(H);M为每相绕组间的互感(H);p为微分算子p=d/dt。三相绕组为星形连接,且没有中线,则有(2)(3)得到最终电压方程:(4)L-ML-ML-Mrrriaibiceaeceb图.无刷直流电机的等效电路无刷直流电机的电磁转矩方程与普通直流电动机相似,其电磁转矩大小与磁通和电流幅值成正比(5)所以控制逆变器输出方波电流的幅值即可以控制BLDC电机的转矩。为产生恒定的电磁转矩,要求定子电流为方波,反电动势为梯形波,且在每半个周期内,方波电流的持续时间为120°电角度,梯形波反电动势的平顶部分也为120°电角度,两者应严格同步。由于在任何时刻,定子只有两相导通,则:电磁功率可表示为:(6)电磁转矩又可表示为:(7)无刷直流电机的运动方程为:(8)其中为电磁转矩;为负载转矩;B为阻尼系数;为电机机械转速;J为电机的转动惯量。传递函数:无刷直流电机的运行特性和传统直流电机基本相同,其动态结构图可以采用直流电机通用的动态结构图,如图所示:Ct365/(GD^2s)Ce1/RU(s)+-+-TL(s)TC(s)I(s)N(s)图2.无刷直流电机动态结构图由无刷直流电机动态结构图可求得其传递函数为:式中:K1为电动势传递系数,,Ce为电动势系数;K2为转矩传递函数,,R为电动机内阻,Ct为转矩系数;Tm为电机时间常数,,G为转子重量,D为转子直径。基于MATLAB的BLDC系统模型的建立在Matlab中进行BLDC建模仿真方法的研究已受到广泛关注,已有提出采用节点电流法对电机控制系统进行分析,通过列写m文件,建立BLDC仿真模型,这种方法实质上是一种整体分析法,因而这一模型基础上修改控制算法或添加、删除闭环就显得很不方便;为了克服这一不足,提出在Matlab/Simulink中构造独立的功能模块,通过模块组合进行BLDC建模,这一方法可观性好,在原有建模的基础上添加、删除闭环或改变控制策略都十分便捷,但该方法采用快速傅立叶变换(FFT)方法求取反电动势,使得仿真速度受限制。本文提出了一种新型的BLDC建模方法,将控制单元模块化,在Matlab/Simulink建立独立的功能模块:BLDC本体模块、电流滞环控制模块、速度控制模块、参考电流模块、转矩计算模块和电压逆变模块,对这些功能模块进行有机整合,即可搭建出无刷直流电机系统的仿真模型。在建模过程中,梯形波反电动势的求取方法一直是较难解决的问题[27,28],本文采用分段线性法成功地化解了这一难点,克服了建模方法存在的不足。Matlab6.5针对电气传动控制领域所设计的工具箱SimPowerSystemToolbox2.3已提供了PMSM的电机模型,但没有给出BLDC的电机模型。因此,本文在分析无刷直流电机数学模型的基础上,借助于Matlab强大的仿真建模能力,在Matlab/Simulink中建立了BLDC控制系统的仿真模型。BLDC建模仿真系统采用双闭环控制方案:下即为BLDC建模的整体控制框图,其中主要包括:BLDC本体模块、电流滞环控制模块、速度控制模块、参考电流模块、转矩计算模块和电压逆变模块。BLDC本体结构(1)BLDCM本体模块在整个控制系统的仿真模型中,BLDCM本体模块是最重要的部分,该模块根据BLDC电压方程式(4)求取BLDC三相相电流,结构框图如图所示图.BLDCM本体模块结构框图及其封装形式在整个控制系统的仿真模型中,BLDC本体模块是最重要的部分,该模块根据BLDC电压方程式(2-4)求取BLDC三相相电流,而要获得三相相电流信号ia,ib,ic,必需首先求得三相反电动势信号ea,eb,ec控制框图如图2-11所示。而BLDC建模过程中,梯形波反电动势的求取方法一直是较难解决的问题,反电动势波形不理想会造成转矩脉动增大、相电流波形不理想等问题,严重时会导致换相失败,电机失控。因此,获得理想的反电动势波形是BLDC仿真建模的关键问题之一。本文采用了分段线性法,如图2-12所示,将一个运行周期0°~360°分为6个阶段,每60°为一个换相阶段,每一相的每一个运行阶段都可用一段直线进行表示,根据某一时刻的转子位置和转速信号,确定该时刻各相所处的运行状态,通过直线方程即可求得反电动势波形。分段线性法简单易行,且精度较高,能够较好的满足建模仿真的设计要求。因而,本文采用分段线性法建立梯形波反电动势波形。理想情况下,二相导通星形三相六状态的BLDC定子三相反电动势的波形如图2-12所示。图中,根据转子位置将运行周期分为6个阶段:0~π/3,π/3~2π/3,2π/3~π,π~4π/3,4π/3~5π/3,5π/3~2π。以第一阶段0~π/3为例,A相反电动势处于正向最大值Em,B相反电动势处于负向最大值-Em,C相反电动势处于换相阶段,由正的最大值Em沿斜线规律变化到负的最大值-Em。根据转子位置和转速信号,就可以求出各相反电动势变化轨迹的直线方程,其它5个阶段,也是如此。据此规律,可以推得转子位置和反电动势之间的线性关系,如表2-1所示,从而采用分段线性法,解决了在BLDC本体模块中梯形波反电动势的求取问题。0π/32π/3π4π/35π/32πEmea图.三相反电动势波形EmEm-Em-Em-Emebecpospospos转子位置和反电动势之间的线性关系表转子位置eaebec0~π/3K*w-K*wK*w*((per-pos)/(π/6)+1)π/3~2π/3K*wK*w*((pos-π/6-per)/(π/6)-1)-K*w2π/3~πK*w*((per+2*π/3-pos)/(π/6)+1)K*w-K*wπ~4π/3-K*wK*wK*w*((pos-π-per)/(π/6)-1)4π/3~5π/3-K*wK*w*((per+4*π/3-pos)/(π/6)+1)K*w5π/3~2πK*w*((pos-5*π/3-per)/(π/6)-1)-K*wK*w表中:K为反电动势系数(V/(r/min),pos为角度信号,w为转速信号,转数per=fix(pos/(2*pi))*2*pi,fix函数是实现取整功能。根据上式,用M文件编写反电势系数的S函数如下:反电动势S函数(emf.m)%=========================================================%BLDCM模型中反电动势函数%=========================================================function[sys,x0,str,ts]=emf(t,x,u,flag)switchflagcase0,%初始化设置[sys,x0,str,ts]=mdlInitializeSizes;case3,%输出量计算sys=mdlOutputs(t,x,u);case{1,2,4,9}%未定义标志sys=[];otherwise%错误处理error(['unhandledflag=',num2str(flag)]);end%=========================================================%mdlInitializeSizes进行初始化,设置系统变量的大小%=========================================================function[sys,x0,str,ts]=mdlInitializeSizes()sizes=simsizes;%取系统默认设置sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=3;sizes.NumInputs=2;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=[];str=[];ts=[-10];%=========================================================%mdlOutputs计算系统输出%=========================================================functionsys=mdlOutputs(t,x,u)globalk;globalPos;globalw;k=0.060;%V/(r/min)反电动势系数w=u(1);%转速(rad/s)Pos=u(2);%角度(rad)ifPos=0&Pos=pi/3sys=[k*w,-k*w,k*w*((-Pos)/(pi/6)+1)];elseifPos=pi/3&Pos=2*pi/3sys=[k*w,k*w*((Pos-pi/3)/(pi/6)-1),-k*w];elseifPos=2*pi/3&Pos=pisys=[k*w*((2*pi/3-Pos)/(pi/6)+1),k*w,-k*w];elseifPos=pi&Pos=4*pi/3sys=[-k*w,k*w,k*w*((Pos-pi)/(pi/6)-1)];elseifPos=4*pi/3&Pos=5*pi/3sys=[-k*w,k*w*((4*pi/3-Pos)/(pi/6)+1),k*w];elsePos=5*pi/3