基于ADRC自抗扰控制器的simulink仿真,ESO和TD等模块使用S函数开发

简介: 基于ADRC自抗扰控制器的simulink仿真,ESO和TD等模块使用S函数开发

1.算法仿真效果
matlab2022a仿真结果如下:

babbd16454e657e6c9f557201dedee54_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

   自抗扰控制器主要由三部分组成:跟踪微分器(tracking differentiator),扩展状态观测器 (extended state observer) 和非线性状态误差反馈控制律(nonlinear state error feedback law)。

自抗扰控制器自PID控制器演变过来,采取了PID误差反馈控制的核心理念。传统PID控制直接取参考给定与输出反馈之差作为控制信号,导致出现响应快速性与超调性的矛盾。

   跟踪微分器的作用是安排过渡过程,给出合理的控制信号,解决了响应速度与超调性之间的矛盾。扩展状态观测器用来解决模型未知部分和外部未知扰动综合对控制对象的影响。虽然叫做扩展状态观测器,但与普通的状态观测器不同。扩展状态观测器设计了一个扩展的状态量来跟踪模型未知部分和外部未知扰动的影响。然后给出控制量补偿这些扰动。将控制对象变为普通的积分串联型控制对象。设计扩展状态观测器的目的就是观测扩展出来的状态变量,用来估计未知扰动和控制对象未建模部分,实现动态系统的反馈线性化,将控制对象变为积分串联型。非线性误差反馈控制律给出被控对象的控制策略。

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

    跟踪微分器的作用是针对被控对象的输入特点对其提取所需要的信号。

   扩张状态观测器作为自抗扰控制的核心组成部分,一方面可以对系统中重要的状态变量进行跟踪,便于实时了解系统状态;另一方面还能根据系统模型内外扰动的总体作用量,以反馈的形式对其加以及时补偿,有助于提高系统鲁棒性。

   非线性状态误差反馈控制率是一种非线性的组合方式,输入是TD输出的状态变量与ESO状态估计值之间的误差,输出结合ESO的总扰动补偿值得到控制器的控制量。

跟踪微分器(TD)

ea78f400d95dcebddf4f0ea72ea51dd4_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

扩张状态观测器(ESO)
ea0ccd31a88c25bebaf345cdae72ad10_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   ADRC控制器结构如图所示。自抗扰的根本在于使用补偿项将系统“不确定模型”和“未知外扰”的总和作用共同作为总扰动进行观测和补偿。

027ee178fb13dc437dbaa7656c66fc01_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   其中,为目标速度,为实际速度,为跟踪速度,为跟踪加速度,为观测速度,为观测加速度,为观测扰动。

c9a571f9c8f0780a88e4f273c4fe08ef_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

5e50a5ea4f31387134fbaeb3f7594d19_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0  = [0;0]; 
str = [];
ts  = [-1 0];
 
function sys = mdlDerivatives(x,u,r,d)
sys(1,1) = x(2);
sys(2,1) = -r*fst2(x,u,r,d);
 
function sys = mdlOutputs(x)
sys = x;
 
function f = fst2(x,u,r,d)
v=x(1)-u+abs(x(2))*x(2)/(2*r);
if v>=d
    f=sign(v);
else f=v/d;
end
相关文章
|
Web App开发 小程序 Android开发
Uniapp 底部导航栏 自定义 tabBar 全端 全页面引用跳转 组件
Uniapp 底部导航栏 自定义 tabBar 全端 全页面引用跳转 组件
945 0
|
10月前
|
机器学习/深度学习 算法
基于自抗扰控制ADRC的永磁同步电机仿真模型(Simulink仿真实现)
基于自抗扰控制ADRC的永磁同步电机仿真模型(Simulink仿真实现)
1340 1
|
存储 运维 关系型数据库
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
一、前言 二、Cloudreve 介绍 🔉 功能 ✨ 特性 📌 资料 三、环境准备 四、宝塔配置 1. 获取用户名和密码 2. 8888 端口授权 3. 登录宝塔后台 五、服务安装 1. 在宝塔终端查看服务内核 2. 下载和安装 3. 开放端口 5212 4. 登录服务 六、进程守护 1. Supervisor 配置 2. Supervisor 启动 七、配置域名 1. 解析域名 2. 反向代理 八、数据库切换 九、总结 十、系列推荐
3455 0
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
|
12月前
|
编解码 Linux 内存技术
LosslessCut倍速 LosslessCut github免费中文版,免费视频剪辑有哪些
LosslessCut 是一款免费开源的无损音视频剪切工具,支持 Win、Mac 和 Linux 平台。它无需重新编码即可快速裁剪音视频并保持高质量。软件支持多种格式,包括 MP4、MOV、FLAC 等,具备无损剪切、轨道编辑、元数据修改等功能,还提供中文界面切换及丰富快捷键操作,适合高效处理多媒体文件。
3424 0
|
人工智能 自然语言处理 测试技术
指令跟随大比拼!Meta发布多轮多语言基准Multi-IF:覆盖8种语言,超4500种任务
Meta发布的Multi-IF新基准旨在评估大型语言模型(LLMs)在多轮和多语言指令跟随方面的能力。该基准扩展了IFEval,包含4501个多语言对话,每个对话有三个回合,涵盖8种语言。评估结果显示,现有模型在多轮和非拉丁字母语言中的表现较差,揭示了LLMs在这些方面的潜在限制。尽管存在局限性,Multi-IF为更全面、真实的模型评估提供了重要参考,推动LLMs的发展与改进。论文链接:https://arxiv.org/abs/2410.15553
621 29
|
算法 计算机视觉 Python
转:Python的分水岭算法如何分割图像?
分水岭算法是一种图像分割算法。它将图像分割为两个或多个连通区域。算法使用图像的梯度信息来确定图像中的“分水岭”。分水岭是指图像中的边界或轮廓。算法通过找到图像中的分水岭来将图像分割成不同的区域。
494 0
|
机器学习/深度学习 人工智能 自然语言处理
多模态大模型技术原理与实战学习笔记(1)
多模态大模型技术原理与实战学习笔记
603 5
|
编解码 机器人 C++
ROS2教程07 ROS2自定义消息接口
这篇文章是关于如何在ROS2(Robot Operating System 2)中创建和使用自定义消息类型的教程,包括消息类型的定义、特点、命令行工具的使用,以及如何编写和测试自定义消息类型接口的步骤。
1319 0
ROS2教程07 ROS2自定义消息接口
|
缓存 UED 网络架构
网站404该怎么解决
网站404错误通常表示用户尝试访问的网页不存在或无法找到
2591 0