微分-跟踪器(tracking

来源:互联网 发布:南京装饰公司排名知乎 编辑:程序博客网 时间:2024/05/22 12:14

在控制系统设计或者是工程应用中,我们往往需要用到某个信号的导数量(微分信息),微分-跟踪器的应用可以很好地解决这个问题。

  1. 经典TD, 参考文献[1]
    这里写图片描述
    matlab 代码实现:
clearclose allr=1000;h=0.0001;x1(1)=0;x2(1)=0;ts=0.0001;for k=1:100000    time(k)=ts*k;    u(k)=sin(time(k));    x1(k+1)=x1(k)+ts*x2(k);    x2(k+1)=x2(k)+ts*fst(x1(k),x2(k),u(k),r,h);   endx1(end)=[];x2(end)=[];figure();plot(time,x1,'b--',time,sin(time),'k-.','linewidth',2);grid on% ylim([-10 4])xlabel('Time(sec)','FontName','Times New Roman','FontSize',12,'FontWeight','bold')% ylabel('Tracking performance','FontName','Times New Roman','FontSize',12,'FontWeight','bold')h = legend('$x_1$','$sin$');set(h,'Interpreter','latex','fontsize',14,'FontName','Times New Roman','fontweight','bold')set(gca,'FontWeight','bold','fontsize',14,'FontName','Times New Roman')figure();plot(time,x2,'b--',time,cos(time),'k-.','linewidth',2);grid on% ylim([-10 4])xlabel('Time(sec)','FontName','Times New Roman','FontSize',12,'FontWeight','bold')% ylabel('Tracking performance','FontName','Times New Roman','FontSize',12,'FontWeight','bold')h = legend('$x_2$','$cos$');set(h,'Interpreter','latex','fontsize',14,'FontName','Times New Roman','fontweight','bold')set(gca,'FontWeight','bold','fontsize',14,'FontName','Times New Roman')
function y=fst(x1,x2,u,r,h)deta=r*h;deta0=deta*h;y=x1-u+h*x2;a0=sqrt(deta^2+8*r*abs(y));if abs(y)<=deta0    a=x2+y/h;else    a=x2+0.5*(a0-deta)*sign(y);endif abs(a)<=deta    y=-r*a/deta;else    y=-r*sign(a);end

跟踪效果展示:

这里写图片描述

这里写图片描述

  1. 快速高阶滑膜TD,参考文献[2]

这里写图片描述

两者对比:

  • 高级滑模TD可以实现快速跟踪,收敛速度比经典TD法快。
  • 经典TD法对所选取的采样时间“h”很敏感。如果采样时间大或者小都会影响最后的仿真效果,主要表现在是否有很大的超调、是否能够较快的跟踪。

[1]. 张海丽, 张宏立. 微分跟踪器的研究与应用[J]. 化工自动化及仪表, 2013, 40(4):474-477.
[2]. Arie Levant. Higher-order sliding modes, differentiation and output-feedback control[J]. International Journal of Control, 2003, 76(9-10):924-941.

原创粉丝点击