李勇基于SIMULINK无刷直流电机控制系统的仿真.docx
- 文档编号:24969652
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:12
- 大小:175.29KB
李勇基于SIMULINK无刷直流电机控制系统的仿真.docx
《李勇基于SIMULINK无刷直流电机控制系统的仿真.docx》由会员分享,可在线阅读,更多相关《李勇基于SIMULINK无刷直流电机控制系统的仿真.docx(12页珍藏版)》请在冰豆网上搜索。
李勇基于SIMULINK无刷直流电机控制系统的仿真
鲁东大学信息与电气工程学院2014-2015学年第二学期
《微特电机与控制》课程论文
课程号:
220852119
任课教师赵玫成绩
论文题目:
(可指定题目,也可说明题目范围。
)
基于SIMULINK无刷直流电机控制系统的仿真建模
论文要求:
(对论文题目、内容、行文、字数等作出判分规定。
)
1.建立无刷直流电机控制系统的Simulink仿真模型,仿真采用位置和电流双闭环结构,系统模型主要包括无刷直流电机及其驱动主电路、无刷直流电机换相模块、电机转向判断、位置和电流调节器、PWM产生模块和相应的测量模块组成。
主电路采用三相桥式电路驱动的形式;电流和位置的调节均采用防积分饱和的PI调节器调节;PWM信号通过电流调节器的输出与20KHz三角波比较产生,从而实现无刷直流电机的PWM控制。
2.小组成员分工合作完成整个论文的内容,但是课程论文要每人一份,着重阐述自己的工作,不能前篇一律。
3.答辩环节以小组为单位进行,7月16日提交论文,并进行答辩。
4.需要列出主要参考文献,并进行对比分析。
教师评语:
教师签字:
年月日
基于SIMULINK无刷直流电机控制系统的仿真建模
李勇,韩业林,王孝磊,吴晓东,居礼,陶显明
摘要
从组成结构、工作原理以及数学模型等方面来介绍无刷直流电动机,并根据数学模型,建立无刷直流电机控制系统的Simulink仿真模型,仿真采用位置和电流双闭环结构,系统模型主要包括无刷直流电机及其驱动主电路、无刷直流电机换相模块、电机转向判断、位置和电流调节器、PWM产生模块和相应的测量模块组成。
通过试验验证方案的可行性,分析其存在的优缺点。
关键词:
无刷直流电动机;simulink;位置电流双闭环
Abstract
Fromthestructure,workingprincipleandcompositionofmathematicalmodelstointroduceabrushlessDCmotor,andthemathematicalmodel,theestablishmentofSimulinksimulationmodelofabrushlessDCmotorcontrolsystemsimulationusingthelocationandcurrentdoubleclosedloopconfiguration,thesystemmodelincludesabrushlessDCmotoranddrivesthemaincircuit,abrushlessDCmotorcommutationmodule,motorrotationjudgment,positionandcurrentregulators,PWMgenerationmoduleandcorrespondingmeasurementmodules.Feasibilitytestverificationprogram,analyzetheadvantagesanddisadvantagesofitsexistence.
Keywords:
brushlessDCmotor;simulink;positioncurrentdoubleclosedloop
引言
无刷直流电机(BrushlessDCMotor,以下简称BLDC)是随着电力电子技术及新型永磁材料的发展而迅速成熟起来的一种新型电机。
以其体积小、重量轻、效率高、惯量小和控制精度高等优点,同时还保留了普通直流电动机优良的机械特性,广泛应用于伺服控制、数控机床、机器人等领域Ill,随着无刷直流电机应用领域的不断扩大,要求控制系统设计简易、成本低廉、控制算法合理、开发周期短。
建立无刷直流电机控制系统的仿真模型,可以有效的节省控制系统设计时间,及时验证施加于系统的控制算法,观察系统的控制输出;同时可以充分利用计算机仿真的优越性,人为地改变系统的结构、加入不同的扰动和参数变化,以便考察系统在不同结构和不同工况下的动、静态特性[2J。
因此,如何建立有效的无刷直流电机控制系统的仿真模型成为电机控制算法设计人员迫切需要解决的关键问题。
本文在分析无刷直流电机数学模型的基础上,借助于Matlab强大的仿真建模能力,利用电气模块库中内含的功能元件,对通常的运动控制系统仿真模型进行了改进,提出了一种基于Matlab/Simulink建立无刷直流电机系统仿真模型的新方法。
1永磁无刷直流电机(BLDC)的数学模型
无刷直流电机由定子三相绕组、永磁转子、逆变器、转予磁极位置检测器等组成,其转子采用瓦形磁钢,进行特殊的磁路设计,可获得梯形波的气隙磁场,定子采用整距集中绕组,由逆变器供给方波电流。
以一台三相两极永磁电动机为例,并假设:
(1)定子绕组为60°相待整距集中绕组星形联结;
(2)忽略磁路饱和,不计涡流和磁滞损耗;
(3)不考虑电枢反应气隙磁场分布近似矩形波,其波形平顶宽度为120°点角度;
逆变器对BLDC来说,首先是功率变换装置,也就是电子换向器,每一个桥臂上的一个功率器件相当于直流电动机的一个机械换向器,还同时兼有PWM电流调节器功能。
对逆变器的建模,本文采用Simulink的SimPowerSystem工具箱提供的三相全桥IGB嗾块。
由于在Matlab新版本(如Matlab7.0)qbSimPowerSystem-V工具箱和SimulinkI具箱不是随便可以相连的,中间必须加上受控电压源(或者受控电压源、电压表、电流表)。
本文给IGBT的A、B、C三相加三个电压表,输出的Simulink信号可以与BLDC直接连接,如图所示。
逆变器根据电流控制模块所控制PWM信号,顺序导通和关断,产生方波电流输出。
2整体框架图:
3仿真模型整体框图
4反电动势的求取问题。
S函数(部分):
functionsys=mdlOutputs(t,x,u)
globalk;
globalPos;
globalw;
k=0.0024;
w=u
(1);
Pos=u
(2);
ifPos>=0&Pos<=pi/3
sys=[k*w,-k*w,k*w*((-Pos)/(pi/6)+1),1,1,0];
elseifPos>=pi/3&Pos<=2*pi/3sys=[k*w,k*w*((Pos-pi/3)/(pi/6)-1),-k*w,1,0,1];
elseifPos>=2*pi/3&Pos<=pi
sys=[k*w*((2*pi/3-Pos)/(pi/6)+1),k*w,-k*w,0,1,1];
elseifPos>=pi&Pos<=4*pi/3
sys=[-k*w,k*w,k*w*((Pos-pi)/(pi/6)-1),1,1,0];
elseifPos>=4*pi/3&Pos<=5*pi/3
sys=[-k*w,k*w*((4*pi/3-Pos)/(pi/6)+1),k*w,1,0,1];
elseifPos>=5*pi/3&Pos<=2*pi
sys=[k*w*((Pos-5*pi/3)/(pi/6)-1),-k*w,k*w,0,1,1];
end
电机单独仿真波形:
主要工作:
关于程序中给定电流参数S函数的编写:
考电流模块的作用是根据电流幅值信号Is和位置信号给出三相参考电流,输出的三相参考电流直接输入电流滞环控制模块,用于与实际电流比较进行电流滞环控制一转子位置和三相参考电流之间的对应关系如表2所示
在仿真图中所处位置:
function[sys,x0,str,ts]=cemf(t,x,u,flag)
clc;
switchflag
case0
[sys,x0,str,ts]=mdlInitializeSizes;%初始化
case1
sys=[];%连续状态的更新
case2
sys=[];%离散状态的更新
case3
sys=mdlOutputs(u);%求取系统的输出信号
case4
sys=[];%计算下一时刻的仿真时间
case9
sys=[];%终止仿真
otherwise
error(['Unhandledflag=',num2str(flag)]);
end
%%%%%在flag=0的时候进行整个系统的初始化
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;%atleastonesampletimeisneededWO一般来说为1个
sys=simsizes(sizes);
x0=[];%状态初始化
str=[];
ts=[-10];%采样周期若写成-1表示继承其输入信号
%%%%%%在flag=1的时候进行连续系统状态的更新
functionsys=mdlDerivatives(t,x,u)
sys=[];
%%%%%%在flag=2的时候进行离散系统状态的更新
functionsys=mdlUpdates
%sys(1,1)=x
(1)+T*x
(2);%为什么会写成这样呢
%sys(2,1)=x
(2)+T*fst2(x,u,r,h);
%%%%%%在flag=3的时候进行系统输出信号的求取
functionsys=mdlOutputs(u)
m=current_dq(u
(1),u
(2));
sys(1,1)=m
(1);
sys(2,1)=m
(2);
sys(3,1)=m(3);
%%%%%%在flag=4的时候进行下一时刻仿真时间的计算
functionsys=mdlGetTimeOfNextVarHit(t,x,u)
%sampleTime=1;%Example,setthenexthittobeonesecondlater.
%sys=t+sampleTime;
%%%%%%在flag=9的时候终止仿真过程
functionsys=mdlTerminate(t,x,u)
%sys=[];
%%%%%%自定义子程序
functionx=current_dq(angle,current)
pos=mod(angle,2*pi);
x
(1)=current;
x
(2)=-current;
x(3)=0;
if0<=pos&&pos x (1)=current; x (2)=-current; x(3)=0; end ifpi/3<=pos&&pos<2*pi/3 x (1)=current; x (2)=0; x(3)=-current; end if2*pi/3<=pos&&pos x (1)=0; x (2)=current; x(3)=-current; end ifpi<=pos&&pos<4*pi/3 x (1)=-current; x (2)=current; x(3)=0; end if4*pi/3<=pos&&pos<5*pi/3 x (1)=-current; x (2)=0; x(3)=current; end if5*pi/3<=pos&&pos<2*pi x (1)=0; x (2)=-current; x(3)=current; end 体会: 通过这次论文的制作,学到了很多东西,特别是对MATLAB的使用更加熟练,知道了在研究中,有时需要用到复杂的算法设计等,而这些算法因为其复杂性不适合用普通的Simulink模块来搭建,即matlab所提供的Simulink模块不能满足用户的需求,需要用编程的形式设计出S函数模块,将其嵌入到系统中。 如果恰当地使用S函数,基本上能对任何函数进行仿真。 参考文献 【1】姜学军,计算机控制技术(第2版).清华大学出版社 【2】微特电机与特种电机 感谢下载! 欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SIMULINK 直流电机 控制系统 仿真