基于simulink的svm-dtc-adrc控制建模与仿真

目录

一、理论基础

二、核心程序

三、仿真结论


一、理论基础

       永磁电机由于没有励磁绕组和励磁装置,不消耗励磁功率,对磁极设在转子的电机(如一般同步电机)还可省去滑环和电刷。随着永磁材料和控制技术的发展,永磁同步电机以其高转矩/惯量比、高功率密度、高效率、牢固性和维修性好等优点,在数控机床、工业机器人等场合都获得了广泛的应用。
        自从异步电机直接转矩控制问世以来,它一直以结构简单,动态响应快而著称,近年来得到了快速的发展,而直接转矩控制在同步电机方面的应用,已取得了一定成果,还有待更进一步的探索研究。同步电机中从宏观上来讲不存在异步电机拥有的转差角频率。因此,直接转矩控制技术应用于同步电机中首先需要解决其控制的理论问题。南京航空航天大学与澳大利亚新南威尔士大学合作提出了基于永磁同步电机的直接转矩控制理论,实现了永磁同步电机直接转矩控制方案[1][2],并且成功地拓展到了弱磁恒功率范围,取得了一系列成果,为同步电机直接转矩控制开创了新的一页。
        从控制角度来看,传统的dtc方案是一种“粗放”的控制方法:在一个控制周期内,传统的dtc只用一个空间电压矢量,在这个控制周期内,既不能调整定子磁链的变化方向,也不能控制变化的大小,它其实是一种bang-bang控制。而对于文章中所研究的svm-dtc方案,就是在前基础上的改进,能大幅降低直接转矩控制中电流、转矩脉动,从而适应在定子电感较低的电机上应用,而且本质上也能适用于其它种类的电机,可大大地拓展了这一控制策略的应用领域,具有重大的研究价值。

         由于在数字化控制的实现过程中,控制周期不可能无限地缩短,传统的dtc控制在一定时间内所发出的电压矢量个数是有限的,逆变器开关频率也较低,导致电流和转矩脉动而难以避免。尽管从理论上来说,缩短控制周期能有效的减少磁链和转矩的脉动,但这就要求更高性能的dsp和专用芯片,而且这种方法提高性能有限,以目前的硬件所能达到的水平,控制周期一般都在50-100us之间,进一步缩短周期颇有难度,成本也会随之大幅度提高。

          自抗扰控制是在PID控制算法基础上进行改进的新型控制方法,它具有不依赖于控制对象模型、不区分系统内外扰的结构特点。常用的自抗扰控制器主要由跟踪微分器(Tracking Differentiator,TD)、扩张状态观测器(Extended State Observer,ESO)和非线性状态误差反馈控制率(Nonlinear State Error Feedback,NLSEF)三部分组成。跟踪微分器的作用是针对被控对象的输入特点对其提取所需要的信号。

        扩张状态观测器作为自抗扰控制的核心组成部分,一方面可以对系统中重要的状态变量进行跟踪,便于实时了解系统状态;另一方面还能根据系统模型内外扰动的总体作用量,以反馈的形式对其加以及时补偿,有助于提高系统鲁棒性。非线性状态误差反馈控制率是一种非线性的组合方式,输入是TD输出的状态变量与ESO状态估计值之间的误差,输出结合ESO的总扰动补偿值得到控制器的控制量。
        然后将adrc模块加入svm-dtc系统。 同样要求,三个波形,转速,磁链,转矩。 当然,这次出来的波形要比原来的平滑,来说明系统的性能更加优越。

ARDC模块的主要功能如下所示:

        这里,我们分别对TD模块,NLSEF模块,ESO模块,进行m编程,然后加入到系统中进行仿真。

二、核心程序

function u=NLSEF(Uu);

e1  = Uu(1);
ce2 = Uu(2);
r   = Uu(3);
h1  = Uu(4);
%#eml
d=r*h1*h1;
a0=h1*ce2;
y=e1+a0;
a1=(d*(d+8*abs(y)))^0.5;
a2=a0+sign(y)*(a1-d)*0.5;
a=(a0+y)*(sign(y+d)-sign(y-d))*0.5+a2*(1-(sign(y+d)-sign(y-d))*0.5);
u=-r*(a/d)*(sign(a+d)-sign(a-d))*0.5-r*sign(a)*(1-(sign(a+d)-sign(a-d))*0.5);


function u=TD0(Uu);

x1 = Uu(1);
x2 = Uu(2);
r  = Uu(3);
h  = Uu(4);


%#eml
d=r*h*h;
a0=h*x2;
y=x1+a0;
a1=(d*(d+8*abs(y)))^0.5;
a2=a0+sign(y)*(a1-d)*0.5;
a=(a0+y)*(sign(y+d)-sign(y-d))*0.5+a2*(1-(sign(y+d)-sign(y-d))*0.5);
u=-r*(a/d)*(sign(a+d)-sign(a-d))*0.5-r*sign(a)*(1-(sign(a+d)-sign(a-d))*0.5);


function y = ESO1(u)
%#eml
if(abs(u)>0.1)
    y =sign(u)*(abs(u)^0.5);
else
    y =u*(0.1^(0.5));
end
a05-23

三、仿真结论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值