首页 > 其他分享 >【控制】高增益扩张状态观测器的设计(9.1)

【控制】高增益扩张状态观测器的设计(9.1)

时间:2023-03-21 21:32:08浏览次数:60  
标签:figureplot 高增益 观测器 z1 x2 x1 9.1 z2 z3

1 理论框架

【控制】高增益扩张状态观测器的设计(9.1)_二阶系统实例

【控制】高增益扩张状态观测器的设计(9.1)_LESO_02

【控制】高增益扩张状态观测器的设计(9.1)_二阶系统实例_03

2 一阶系统描述

【控制】高增益扩张状态观测器的设计(9.1)_二阶系统实例_04

【控制】高增益扩张状态观测器的设计(9.1)_NLESO_05

【控制】高增益扩张状态观测器的设计(9.1)_二阶系统实例_06

3 二阶系统描述

【控制】高增益扩张状态观测器的设计(9.1)_LESO_07

【控制】高增益扩张状态观测器的设计(9.1)_LESO_08

对于上述状态及扰动项的估计,参考​​状态观测器的设计​​内容。

4 仿真实例

【控制】高增益扩张状态观测器的设计(9.1)_二阶系统实例_09

5 仿真结果

相关参数matlab中均已给出。

仿真分别采用了线性扩张状态观测器(LESO)和非线性扩张状态观测器(NLESO)进行的。结果如下:

Ⅰ:NLESO仿真结果

【控制】高增益扩张状态观测器的设计(9.1)_二阶系统实例_10

【控制】高增益扩张状态观测器的设计(9.1)_NLESO_11

【控制】高增益扩张状态观测器的设计(9.1)_LESO_12

参数:【控制】高增益扩张状态观测器的设计(9.1)_NLESO_13

Ⅱ:LESO仿真结果

【控制】高增益扩张状态观测器的设计(9.1)_NLESO_14

【控制】高增益扩张状态观测器的设计(9.1)_LESO_15

【控制】高增益扩张状态观测器的设计(9.1)_LESO_16


参数:【控制】高增益扩张状态观测器的设计(9.1)_LESO_17

6 代码

LESO

%ESO观测器程序

clear all;

h=0.01; %采样时间
T=0.01;
time = 20;
N = time/T; %仿真步数
n=0:N-1;
% x = sin(n*T);

for k=1:1:N
% original state
x1(1) = 0.3;
x2(1) = 0.3;
x3(1) = 0.3;%新的扰动初始状态

x1(k+1) = x1(k) + h*x2(k);
x2(k+1) = x2(k) + h*(-(1+0.5*cos(k*T))*x1(k)-(1+sin(k*T/3))*x2(k)+sign(sin(1.5*k*T)));
x3(k+1) = -(1+0.5*cos(k*T))*x1(k)-(1+sin(k*T/3))*x2(k)+sign(sin(1.5*k*T));%新的扰动状态
y(k) = x1(k);

% state observer
z1(1) = 0.2;
z2(1) = 0.2;
z3(1) = 0.2;
e(k) = z1(k) - y(k);

%LESO
z1(k+1) = z1(k) + h*(z2(k)-100*e(k));
z2(k+1) = z2(k) + h*(z3(k)-2500*e(k));
z3(k+1) = - h*2500*e(k);

end

% 估计值与实际值对比
figure
plot(n*T,x1(1,1:N),'b+',n*T,z1(1,1:N),'r.');
legend('x1','z1');

figure
plot(n*T,x2(1,1:N),'b+',n*T,z2(1,1:N),'r.');
legend('x2','z2');

figure
plot(n*T,x2(1,1:N),'b+',n*T,z2(1,1:N),'r.');
legend('x3','z3');

% 估计值与实际值的误差分析
figure
plot(n*T,x1(1,1:N)-z1(1,1:N),'b--');
legend('error1=x1-z1');

figure
plot(n*T,x2(1,1:N)-z2(1,1:N),'b--');
legend('error2=x2-z2');

figure
plot(n*T,x3(1,1:N)-z3(1,1:N),'b--');
legend('error3=x3-z3');

NLESO

%ESO观测器程序

clear all;

h=0.01; %采样时间
T=0.01;
time = 20;
N = time/T; %仿真步数
n=0:N-1;
% x = sin(n*T);

for k=1:1:N
% original state
x1(1) = 0.3;
x2(1) = 0.3;
x3(1) = 0.3;%新的扰动初始状态

x1(k+1) = x1(k) + h*x2(k);
x2(k+1) = x2(k) + h*(-(1+0.5*cos(k*T))*x1(k)-(1+sin(k*T/3))*x2(k)+sign(sin(1.5*k*T)));
x3(k+1) = -(1+0.5*cos(k*T))*x1(k)-(1+sin(k*T/3))*x2(k)+sign(sin(1.5*k*T));%新的扰动状态
y(k) = x1(k);

% state observer
z1(1) = 0.2;
z2(1) = 0.2;
z3(1) = 0.2;
e(k) = z1(k) - y(k);

%NLESO
fe = fal(e(k), 0.5, 0.01);
z1(k+1) = z1(k) + h*(z2(k)-100*e(k));
z2(k+1) = z2(k) + h*(z3(k)-500*fe);
z3(k+1) = - h*1000*fe;

end

% 估计值与实际值对比
figure
plot(n*T,x1(1,1:N),'b+',n*T,z1(1,1:N),'r.');
legend('x1','z1');

figure
plot(n*T,x2(1,1:N),'b+',n*T,z2(1,1:N),'r.');
legend('x2','z2');

figure
plot(n*T,x2(1,1:N),'b+',n*T,z2(1,1:N),'r.');
legend('x3','z3');

% 估计值与实际值的误差分析
figure
plot(n*T,x1(1,1:N)-z1(1,1:N),'b--');
legend('error1=x1-z1');

figure
plot(n*T,x2(1,1:N)-z2(1,1:N),'b--');
legend('error2=x2-z2');

figure
plot(n*T,x3(1,1:N)-z3(1,1:N),'b--');
legend('error3=x3-z3');


标签:figureplot,高增益,观测器,z1,x2,x1,9.1,z2,z3
From: https://blog.51cto.com/u_15714963/6141109

相关文章

  • macOS 13.3 Beta 4 (22E5246b)With OpenCore 0.9.1开发版 and winPE双引导分区原版镜像
    镜像特点完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文......
  • 【控制】高增益扩张状态观测器的设计(9)
    1高增益扩张状态观测器状态观测器是根据系统的输入输出来确定系统内部状态变量的装置,它的示意图如下:1)在自抗扰控制器的设计过程中,我们通常把未知的干扰都用fff来表示。2)如......
  • Resize Operation Completed For File# 201; FILE# Does Not Exist (Doc ID 2246369.1
    OracleDatabase-EnterpriseEdition-Version12.1.0.2to12.2.0.1[Release12.1to12.2]OracleDatabaseCloudSchemaService-VersionN/AandlaterOracleDa......
  • 计算机系统方法:9.1传统应用
    我们开始讨论应用程序,重点是两个最流行的应用程序--万维网和电子邮件。广义上讲,这两种应用都使用了请求/回复范式--用户向服务器发送请求,然后服务器做出相应的回应。我们把......
  • oracle19c rac升级补丁至19.18
    更新opatch,根据README要求,opatch工具版本至少12.2.0.1.34或更高版本,两节点oracle用户和grid用户都需要更新opatch[oracle@test02:/home/oracle]$cd$ORACLE_HOME/OPa......
  • 9.1不同的目标与要求2
    在8.3节我们讲到“所有这些功能与应用是否能集成起来,支撑我们对书写符号的统一使用”讨论这种统一性时,我们是在讨论什么?让机器支撑我们对书写符号的统一使用,也就将机器引向......
  • Rocky Linux9.1 安装中文输入法
    sudodnfinstallibus-libpinyin.x86_64-y  (Root,桌面版)Win/Command   +空格               (默认,切换输入法) ......
  • noi1.9.1:查找特定的值
    戳我......
  • k8s版本1.18升级至1.19.16
    一、master节点升级#1.yum升级kubernetes插件yuminstallkubeadm-1.19.16-0kubelet-1.19.16-0kubectl-1.19.16-0--disableexcludes=kubernetes#2.升级版本到1.19.16......
  • 9.1 操作系统功能的历史
    操作系统的原型:仅具有加载和运行功能的监控程序。通过事先启动监控程序,程序员就可以根据需要的各种程序加载到内存中运行。如下图: 在利用监控程序编写程序的过程中,发......