@wuqi0616
2017-10-28T05:44:11.000000Z
字数 5274
阅读 991
自抗扰技术(ADRC)
标签(空格分隔): 未分类
数学模型:
同步误差:
耦合位置误差:
设计设定点位置同步控制器:
%% Set-Point Position Controlclear;clc;%% 参数配置H=diag([0.1 0.2 0.3 0.4]);C=diag([10 12 14 15]);%假设H,C阵I=eye(4);%单位矩阵T=[2,-1,0,-1;-1,2,-1,0;0,-1,2,-1;-1,0,-1,2];%同步转换矩阵a=0.5*eye(4);%k控制增益N=I+a*T;%耦合转换矩阵h=0.005;%反馈时间5msmaxit=20/h;%20s采样点个数h0=20*h;h1=20*h;h2=20*h;h3=20*h;h4=20*h;%各跟踪微分器滤波因子xd=zeros(1,maxit);%设定值,4轴相同x1=zeros(4,maxit+1);%状态变量x1x2=zeros(4,maxit+1);%状态变量x2e1=zeros(4,maxit+1);%位置误差ee2=zeros(4,maxit+1);%位置误差导数e’E1=zeros(4,maxit+1);%耦合位置误差EE2=zeros(4,maxit+1);%耦合位置误差导数E’vv=zeros(2,maxit+1);%xd的跟踪微分器1vv2=zeros(3,maxit+1);%xd的跟踪微分器2zz1=zeros(2,maxit+1);%1轴输出信号的跟踪微分器zz2=zeros(2,maxit+1);%2轴输出信号的跟踪微分器zz3=zeros(2,maxit+1);%3轴输出信号的跟踪微分器zz4=zeros(2,maxit+1);%4轴输出信号的跟踪微分器%% 设定点位置同步控制器参数KP=30*eye(4);%PKD=5*eye(4);%DKE=0*eye(4);for k=1:maxit%% 设定值xd=6xd(k)=6;%% xd的跟踪微分器1fh=fhan(vv(1,k)-xd(k),vv(2,k),r,h0);vv(1,k+1)=vv(1,k)+h*vv(2,k); % xvv(2,k+1)=vv(2,k)+h*fh; %v%% xd的跟踪微分器2fhh=fhan(vv2(1,k)-vv(2,k),vv2(2,k),r,h0);vv2(1,k+1)=vv2(1,k)+h*vv2(2,k); % vvv2(2,k+1)=vv2(2,k)+h*fhh; % a%% 输出yy=[x1(1,k),x1(2,k),x1(3,k),x1(4,k)]’;%1轴输出信号的跟踪微分器fh1=fhan(zz1(1,k)-y(1),zz1(2,k),r1,h1);zz1(1,k+1)=zz1(1,k)+h*zz1(2,k);zz1(2,k+1)=zz1(2,k)+h*fh1;%2轴输出信号的跟踪微分器fh2=fhan(zz2(1,k)-y(2),zz2(2,k),r2,h2);zz2(1,k+1)=zz2(1,k)+h*zz2(2,k);zz2(2,k+1)=zz2(2,k)+h*fh2;%3轴输出信号的跟踪微分器fh3=fhan(zz3(1,k)-y(3),zz3(2,k),r3,h3);zz3(1,k+1)=zz3(1,k)+h*zz3(2,k);zz3(2,k+1)=zz3(2,k)+h*fh3;%4轴输出信号的跟踪微分器fh4=fhan(zz4(1,k)-y(4),zz4(2,k),r4,h4);zz4(1,k+1)=zz4(1,k)+h*zz4(2,k);zz4(2,k+1)=zz4(2,k)+h*fh4;%位置误差e1(:,k)=[vv(1,k)-zz1(1,k),vv(1,k)-zz2(1,k),vv(1,k)-zz3(1,k),vv(1,k)-zz4(1,k)]’;%位置误差导数e2(:,k)=[vv(2,k)-zz1(2,k),vv(2,k)-zz2(2,k),vv(2,k)-zz3(2,k),vv(2,k)-zz4(2,k)]’;%耦合位置误差E1(:,k)=N*e1(:,k);%耦合位置误差导数E2(:,k)=N*e2(:,k);F=tanh(E2(:,k));%% 控制器U=KP*E1(:,k)+KD*E2(:,k)+(I/N)*KE*e2(:,k);Tempx2=[x2(1,k),x2(2,k),x2(3,k),x2(4,k)]’;%% 离散控制Tempx11=y+h*Tempx2;Tempx22=Tempx2+h*(I/H)*((-1)*C*Tempx2+U);%% 输出序列x1(1,k+1)=Tempx11(1);x2(1,k+1)=Tempx22(1);x1(2,k+1)=Tempx11(2);x2(2,k+1)=Tempx22(2);x1(3,k+1)=Tempx11(3);x2(3,k+1)=Tempx22(3);x1(4,k+1)=Tempx11(4);x2(4,k+1)=Tempx22(4);end
同理:
%% Set-Point Tracking Control设定点轨迹同步跟踪控制器参数KP=20*eye(4);KD=5*eye(4);KE=0*eye(4);KH=0.3*eye(4);KC=2*eye(4);KN=0;%% 控制器U=KH*(vv2(2,k)*[1,1,1,1]’)+KC*(vv2(1,k)*[1,1,1,1]’)+KP*E1(:,k)+KD*E2(:,k)+(I/N)*KE*e2(:,k)+F*KN;
2、考虑用不同误差组合方式实现“非线性PD”
%% Set-Point Position Control%% (1)u=\beta_1 fal(e_1,\alpha_1,delta)+\beta_2 fal(e_2,\alpha_2,delta)\\Beta1=30*eye(4);Beta2=2*eye(4);alpha1=0.75;alpha2=1.5;delta=20*h;%% (2)u=-fhan(e_1,e_2,r_n,h_n)\\rn=30;hn=30*h;%% (3)u=-fhan(e_1,ce_2,r_2,h_2)\\rn=30;hn=30*h;c=2;
同理:
%% Set-Point Tracking Control%% (1)u=\beta_1 fal(e_1,\alpha_1,delta)+\beta_2 fal(e_2,\alpha_2,delta)\\Beta1=20*eye(4);Beta2=20*eye(4);alpha1=0.6;alpha2=1.2;delta=h;%% (2)u=-fhan(e_1,e_2,r_n,h_n)\\rn=20;hn=30*h;%% (3)u=-fhan(e_1,ce_2,r_2,h_2)\\rn=20;hn=30*h;c=2;
1、考虑用两个跟踪微分器来实现“非线性PD”
设定点位置控制

放大(“Set-Point Position Control”)图:
可以看到4个轴在大致3秒的时候就达到目标位置了。而位置误差和位置同步误差也在大致3秒的时候就收敛到0了。
设定点轨迹跟踪控制
放大(“Set-Point Tracking Control”)图:
可以看到4个轴在大致4秒的时候就达到目标位置了。而位置误差和位置同步误差也在大致4秒的时候就收敛到0了。
2、考虑用不同误差组合方式实现“非线性PD”
设定点位置控制



从这里可以看出,在同样的增益下,三种不同误差组合方式中第一种效果最好(暂态特性最好)。但是第一种的效果仍然与线性PD组合效果相近。
设定点轨迹跟踪控制


Sun D, Shao X, Feng G. A Model-Free Cross-Coupled Control for Position Synchronization of Multi-Axis Motions: Theory and Experiments[J]. IFAC Proceedings Volumes, 2005, 38(1):1-6.