直接转矩控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NANCHANG UNIVERSITY
题目:直接转矩系统仿真
学院:信息工程学院系自动化
专业班级:控制科学与工程
学生姓名:刘涛学号:************ 任课教师:***
日期:2014年5月18日
直接转矩控制技术仿真分析
1直接转矩控制的基本原理及特点与规律
直接转矩控制系统简称DTC(Direct Torque Control)系统,是继矢量控制系统之后发展起来的另外一种高动态性能的交流电动机变压变频调速系统。
在它的转速环里面利用转矩反馈直接控制电机的电磁转矩,因此而得名为直接转矩控制。
1.1直接转矩控制系统原理与特点
如图1-1为直接转矩控制的原理框图,和VC系统一样,它也是分别控制异步电动机的转速和磁链,转速调节器ASR的输出作为电磁转矩的给定信号*
T,在*
T后面设置转矩控制内环,它可以抑制磁链变化对于转矩的影响,从而使得转速和磁链系统实现解耦。
因此,从整体控制结构上来看,直接转矩控制(DTC)系统和矢量控制系统(VC)系统是一致的都获得了较高质量的动态性能以及静态性能。
图1-1直接转矩控制系统图
的幅值从图中中可以看出,直接转矩控制系统,就是通过使定转子磁链
s
保持恒定,然后选择合理的零矢量的作用次序和作用时宽,以调节定子磁链矢量
的运动速度,从而改变磁通角的大小,以实现对电机转矩的控制。
在直接转矩控制技术中,其基本控制方法就是通过电压空间矢量来控制定子磁链的旋转速度,控制定子磁链走走停停,以改变定子磁链的平均旋转速度的大小,从而改变磁通角的大小,以达到控制电动机转矩的目的。
直接转矩控制作为一种交流调速的控制技术具有以下特点:
①直接转矩控制直接在定子坐标系下分析交流电动机的数学模型,直接控
制电机的磁链和转矩。
它不需要将交流电动机和直流电动机做比较等效简化,不
需要模仿直流电动机的控制,也不需要为解耦而简化交流电动机的数学模型,它
省掉了矢量旋转变换等复杂的变换与计算。
因此,它所需要的信号处理工作特别
简单,所用的信号使观察者对于交流电动机的物理过程能够做出直接和明确的判
断。
②直接转矩以定子磁场定向,只要知道定子参数就可以把它观测出来。
而
矢量控制磁场定向所用的是转子磁链,观测转子磁链需要知道电动机的转子电阻
和电感。
因此,直接转矩控制大大减少了矢量控制技术中控制性能易受参数变化
影响的问题。
③直接转矩控制采用空间电压矢量和六边形磁链轨迹,直接控制转矩。
④转矩和磁链都采用两点式调节,把误差限制在容许的范围内,控制直接
又简化。
⑤控制信号的物理概念明确,转矩响应快,具有较高的静、动态性能。
由于以上的优点所以直接转矩控制技术在现代控制理论中得到广泛的运用。
1.2直接转矩系统的控制规律和反馈系统
在DTC 系统中采用的是两相静止坐标(αβ坐标),为了简化数学模型,由三相坐标变换成两相是非常重要的,所以可以避开旋转变换。
由式(1-1)和式(1-2)可得
ααααααψs s s s m s s s s s p i R pi L pi L i R u +=++= (1-1) ββββββψs s s s m s s s s s p i R pi L pi L i R u +=++= (1-2)
移项并积分后得
(1-3)
(1-4)
式(1-3)和式(1-4)就是图1-1中所采用的定子磁链模型,其结构框图如图1-2所示。
它适合于中低速时切换到电流模型,这是上述能提高鲁棒性的优点就不得不丢弃。
图1-2 定子磁链模型结构框图 在两相静止坐标系上的电磁转矩表达式为
)(βααβs s r s m p e i i i i L n T -= (1-5) 整理可得
)(βααβs s r s p e i i i i n T -= (1-6)
⎰-=dt i R u s s s s )(α
α
α
ψ⎰
-=dt i R u s s s s )(αααψA
u B u C
u A
i B i C
i α
ψS β
ψS
2系统建模与仿真
2.1模块模型实现
建立如图2-1所示的直接转矩控制系统仿真模型,其中电动机采用基于αβ坐标系的数学模型,转速采用积分和输出限幅的PI 调节器,定子磁链和转矩调节器采用带有滞环的双位式控制器,电压矢量选择环节采用simulink 中的s 函数编写。
2-1直接转矩控制系统仿真模型
2.1.1电机模型
在进行异步电机的仿真时,没有必要对四种状态方程逐一进行,只要以一种为内核,在外围加上坐标变换和状态变换,就可得到在不同的坐标下、不同状态量的仿真结果。
因此在此处建立以定子磁链、转速和电流为状态变量的状态结构为核心,构建异步电机仿真模型,如图2-2.
其中
Rt=(Rs*Lr*Lr*Rr*Lm*Lm )/(Lr*Lr)。
(2-1)
1.定子磁链计算
定子磁链的模拟和离散计算式为
()s s s s u R i dt αβαβαβψ=-⎰ (2-2)
()
()()121s s s s s KT z u R i Z αβαβ
αβψ+=-- (2-3)
式中,
s u αβ
和
s i αβ
为αβ两相坐标系上的钉子电压和电流,K 为积分系数,
s
T 为采样时间。
磁链计算采用离散梯形积分,模块给出磁链,并由Complex to
Magnitude-Angle 计算磁链s ψ
的幅值和转角。
2.转矩计算
电动机转矩计算式为
()3
2
e s s s s T p i i βααβψψ=
- (2-4) 式中,p 为电动积极对数。
图2-2异步电机仿真模型
2.1.2磁通和转矩滞环控制器
电动机的转矩和磁链都采用滞环控制,其控制器结构如图2-3所示。
转矩控
制是三位滞环控制方式,在转矩滞环宽度设为e dT 时,当转矩偏差大于/2
e dT +和
小于/2e dT -时,滞环模块分别输出“1”和“3”,当滞环模块输出为“2”时,经或非门NOR 输出状态“2”。
磁链控制是二位滞环控制,分别输出“1”和“2”。
图2-3转矩滞环控制器模块
2.1.3电压矢量选择
电压矢量环节采用s_function 模块,如图2-6所示,s 函数见附录。
图2-4电压矢量选择环节
2.1.5其他模块
仿真模型其他模块结构如下图所示。
图2-5两相坐标变换
图2-6K/P变换
图2-7电流环
图2-8 3/2变换
附录
function
[sys,x0,str,ts,simStateCompliance]=caotian(t,x,u,flag,u1, u2,u3,u4,k)
switch flag
case 0
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(k); case 1
sys = mdlDerivatives(t,x,u,k);
case {2,9}
sys = [];
case 3
sys = mdlOutputs(t,x,u);
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag',
num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance] = mdlInitializeSizes(k)
sizes = simsizes;
sizes.NumContStates = 1;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
str = [];
x0 = [];
ts = [0 0];
simStateCompliance = 'DefaultSimState';
function sys = mdlDerivatives(t,x,u,k)
if(u(1)==1&u(2)==1&u(3)==1)
k=1;
elseif(u(1)==1&u(2)==1&u(3)==0) k=2;
elseif(u(1)==1&u(2)==0&u(3)==1) k=3;
elseif(u(1)==1&u(2)==0&u(3)==0) k=4;
elseif(u(1)==0&u(2)==1&u(3)==1) k=5;
elseif(u(1)==0&u(2)==1&u(3)==0) k=6;
elseif(u(1)==0&u(2)==0&u(3)==1) k=7;
elseif(u(1)==0&u(2)==0&u(3)==0) k=8;
end
switch u(4)
case 1
if(k==1)
SA=1;
SB=1;
SC=0;
else if(k==2)
SA=1;
SB=0;
SC=0;
else if(k==3)
SA=0;
SB=1;
SC=0;
else if(k==4)
SA=0;
SB=1;
SC=1;
else if(k==5)
SA=1;
SB=0;
SC=0;
else if(k==6)
SA=1;
SB=0;
SC=1;
else if(k==7)
SB=1;
SC=1;
else if(k==8) SA=0;
SB=0;
SC=1;
end
case 2
if(k==1)
SA=0;
SB=1;
SC=0;
else if(k==2)
SA=0;
SB=0;
SC=0;
else if(k==3)
SA=0;
SB=1;
SC=1;
else if(k==4) SA=1;
SB=1;
SC=1;
else if(k==5) SA=0;
SB=0;
SC=0;
else if(k==6) SA=1;
SB=0;
SC=1;
else if(k==7) SA=1;
SB=1;
SC=1;
else if(k==8) SA=1;
SB=0;
SC=1;
end
case 3
if(k==1)
SB=1;
SC=1;
else if(k==2)
SA=0;
SB=0;
SC=0;
else if(k==3)
SA=0;
SB=0;
SC=1;
else if(k==4)
SA=1;
SB=1;
SC=1;
else if(k==5)
SA=0;
SB=0;
SC=0;
else if(k==6) SA=1;
SB=1;
SC=0;
elseif(k==7)
SA=1;
SB=1;
SC=1;
else if(k==8)
SA=1;
SB=0;
SC=0;
end
case 4
if(k==1)
SA=0;
SB=0;
SC=1;
else if(k==2)
SA=0;
SB=0;
SC=0;
else if(k==3)
SA=1;
SB=0;
else if(k==4) SA=1;
SB=1;
SC=1;
elseif(k==5)
SA=0;
SB=0;
SC=0;
else if(k==6)
SA=0;
SB=1;
SC=0;
elseif(k==7)
SA=1;
SB=1;
SC=1;
else if(k==8)
SA=1;
SB=1;
SC=0;
end
case 5
if(k==1)
SA=0;
SB=1;
SC=0;
else if(k==2)
SA=0;
SB=0;
SC=0;
else if(k==3)
SA=0;
SB=1;
SC=1;
else if(k==4)
SA=1;
SB=1;
SC=1;
else if(k==5)
SA=0;
SB=0;
SC=0;
elseif(k==6)
SB=0;
SC=1;
else if(k==7)
SA=1;
SB=1;
SC=1;
else if(k==8)
SA=1;
SB=0;
SC=1;
end
case 6
if(k==1)
SA=0;
SB=1;
SC=0;
else if(k==2)
SA=0;
SB=0;
SC=0;
else if(k==3)
SA=0;
SB=1;
SC=1;
else if(k==4)
SA=1;
SB=1;
SC=1;
else if(k==5)
SA=0;
SB=0;
SC=0;
else if(k==6)
SA=1;
SB=0;
SC=1;
else if(k==7)
SA=1;
SB=1;
SC=1;
else if(k==8) SA=1;
SB=0;
end
end
end
function sys = mdlOutputs(t,x,u) sys = x;。