控制类论文复现(1)

编程入门 行业动态 更新时间:2024-10-27 23:25:43

控制类<a href=https://www.elefans.com/category/jswz/34/1770125.html style=论文复现(1)"/>

控制类论文复现(1)

目录

前言

一、论文理论知识

1、系统描述

2、输出反馈控制器

二、MATLAB仿真

1.船系统描述

2.MATLAB代码

3.仿真结果

总结

前言

本文复现论文"Global Output-Feedback Prescribed Performance Control of Nonlinear Systems With Unknown Virtual Control Coefficients"中设计的控制算法,使用MATLAB验证论文中控制算法的有效性。

一、论文理论知识

1、系统描述

        考虑下述的非线性系统:

其中  和   表示系统的状态,和 分别表示系统的输入和输出,表示有界扰动,并且是时变的和关于时间分段连续的。表示非线性函数。

        由于系统中存在不可测的状态变量,故使用输入驱动滤波器来补偿系统中存在不可测的状态变量,其形式为:

其中为待设计的参数,但是必须满足

是赫尔维茨矩阵,是单位矩阵,此外,满足

2、输出反馈控制器

选择一个调节函数:

其中是一个正常数。

定义barrier function 为

其中, 表示参考轨迹,表示跟踪误差。

虚拟控制器被设计为:

其中 。实际控制率被设计为

本节为论文理论部分,主要涉及的是论文中控制器的设计过程,文章中的引理,定理和系统稳定性分析没有涉及,读者可以自行拜读论文,这样可以加深对文章算法的设计过程的理解,为后续自己的论文重新提供更多的想法。

二、MATLAB仿真

1.船系统描述

考虑船的系统

其中表示船的航向角速度,表示舵角,和表示船舶的质量和动力系数。船的动力学参数被设定义为。初始值被设计为和。控制目标使输出信息跟踪上参考轨迹满足

令 和,可以将船的运动学方程转换为

初始值被设计为和,考虑扰动和零动力学,船的动力学系统被重新定义为

其中,输入驱动滤波器被设计为:

调节函数被定义为:

控制器被设计为:

2.MATLAB代码

function dx =lifei3(t,x,num,C,K,a,b,c_2,k_2,c_1,k_1,tao,l_1,l_2)
z1=x(1:num);
x1=x(num+1:2*num);
x2=x(2*num+1:3*num);
s_hat1=x(3*num+1:4*num);
s_hat2=x(4*num+1:5*num);for i=1:num    if t<taophi(i,1)=sin((pi*t)/(2*tao));elsephi(i,1)=1;endr=sin(0.5*t);e_1(i,1)=phi(i)*(x1(i)-r);eta_1(i,1)=tan((pi*e_1(i))/(2*k_1));g(i,1)=cos((eta_1(i))^2);alpha_1(i,1)=c_1*eta_1(i)*g(i);e_2(i,1)=x(4*num+i)-alpha_1(i);eta_2(i,1)=tan((pi*e_2(i))/(2*k_2));alpha_2(i,1)=-c_2*eta_2(i);u(i,1)=alpha_2(i);    dx(3*num+i,1)=-l_1*s_hat1(i)+s_hat2(i);dx(4*num+i,1)=-l_2*s_hat1(i)+u(i); 
end%% 状态方程
for i=1:num   dx(i)=-2*z1(i)+x1(i);dx(num+i)=-C*x1(i)+x2(i);dx(2*num+i)=-K*(a*(x1(i)^3)+b*x1(i)+(z1(i))^3-0.2*cos(2*t))+K*u(i);  
end
clc;
clear ;
close all;
num = 2 ;C=3.5;
K=0.05;
a=5.5;
b=4;
c_2=10;
k_2=1;
c_1=4;
k_1=0.05;
tao=5;
l_1=2;
l_2=10;z_1=[0;0];
x_bar=[1;-0.5];
x_under=[1;0.2];
s_hat1=[0;0];
s_hat2=[0;0];
ini=[z_1;x_bar;x_under;s_hat1;s_hat2];
tspan = [0 10];options = odeset('RelTol',1e-8,'AbsTol',1e-8);    %改代码精度
[t,x] = ode15s(@(t,x)lifei3(t,x,num,C,K,a,b,c_2,k_2,c_1,k_1,tao,l_1,l_2),tspan,ini,options);   %改代码精度之后需要在ode后面加上optionshhh=length(x(:,end));
%% 重构控制器
for j=1:hhhfor i=1:numif t(j)<taophi(j,i)=sin((pi*t(j))/(2*tao));elsephi(j,i)=1;endendr(j,1)=sin(0.5*t(j));for i=1:num   k_1(j,1)=0.05;k_2(j,1)=1; e_1(j,i)=phi(j,i)*(x(j,num+i)-r(j,1));eta_1(j,i)=tan((pi*e_1(j,i))/(2*k_1(j,1)));g(j,i)=cos((eta_1(j,i))^2);alpha_1(j,i)=c_1*eta_1(j,i)*g(j,i);e_2(j,i)=x(j,4*num+i)-alpha_1(j,i);eta_2(j,i)=tan((pi*e_2(j,i))/(2*k_2(j,1)));alpha_2(j,i)=-c_2*eta_2(j,i);u(j,i)=alpha_2(j,i);m(j,i)=x(j,num+i)-r(j,1);       endendfigure(1) ;
plot(t,x(:,3),'color',[1 0.27 0],'LineWidth',2); 
hold on ;
grid on ;
plot(t,x(:,4),'color',[0.25 0.41 0.88],'LineWidth',2);
hold on ;
grid on ;
plot(t,sin(0.5*t));figure(2) ;
plot(t,m(:,1),'color',[1 0.27 0],'LineWidth',2);  
hold on ;
grid on ;
plot(t,m(:,2),'color',[0.25 0.41 0.88],'LineWidth',2);
hold on ;
grid on ;
plot(t,k_1(:,1));
hold on ;
grid on ;
plot(t,-k_1(:,1));
hold on ;
grid on ;
% % 画局部图
h1=axes('position',[0.55 0.55 0.31 0.3]);    %此处的h1可以变换,但是不可以为h3
set(h1,'FontName','Times New Roman','FontSize',16);
axis(h1);	 %设置轴范围和纵横比
plot(t,m(:,1),'color',[1 0.27 0],'LineWidth',1.4);  
hold on ;
grid on;
plot(t,m(:,2),'color',[0.25 0.41 0.88],'LineWidth',1.4);
hold on ;
grid on;
plot(t,k_1(:,1),'color',[1 0.84 0.25],'LineWidth',1.4);
hold on ;
grid on;
plot(t,-k_1(:,1),'color',[0.63 0.13 0.94],'LineWidth',1.4);
hold on ;
grid on;
xlim([8 10]);
ylim([-0.06 0.06]);figure(3) ;
plot(t,e_2(:,1),'color',[1 0.27 0],'LineWidth',2);  
hold on ;
grid on ;
plot(t,e_2(:,2),'color',[0.25 0.41 0.88],'LineWidth',2);
hold on ;
grid on ;
plot(t,k_2(:,1));
hold on ;
grid on ;
plot(t,-k_2(:,1));
hold on ;
grid on ;
ylim([-1.5 1.5]);figure(4) ;
plot(t,x(:,5),'color',[1 0.27 0],'LineWidth',2);  
hold on ;
grid on ;
plot(t,x(:,6),'color',[0.25 0.41 0.88],'LineWidth',2);
hold on ;
grid on ;figure(5) ;
plot(t,u(:,1),'color',[1 0.27 0],'LineWidth',2);  
hold on ;
grid on ;
plot(t,u(:,2),'color',[0.25 0.41 0.88],'LineWidth',2);
hold on ;
grid on ;

3.仿真结果


总结

本文通过使用MATLAB验证了论文"Global Output-Feedback Prescribed Performance Control of Nonlinear Systems With Unknown Virtual Control Coefficients"中提出的算法。文章中通过利用输入驱动滤波器设计了一种分布式输出反馈控制器。此外,本文控制器的设计过程中考虑了控制方向未知的情况,并且没有使用努斯鲍姆函数,保证了文章中设计的控制器更可靠。

更多推荐

控制类论文复现(1)

本文发布于:2024-03-10 01:34:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726676.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:论文

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!