当前位置: 首页 > news >正文

【ADRC控制】使用自抗扰控制器调节起动机入口压力值

  以前只知道工业控制中用的是PID控制,然而最近了解到实际生产中还在使用ADRC控制,而且使用效果还优于PID控制,遂找了几篇文献学习学习。

0 引言

  自抗扰控制(Active Disturbances Rejection Controller,ADRC)技术,是发扬PID控制技术的精髓并且吸取了现代控制理论,不依赖于被控对象精确模型,能够替代PID控制技术,是一种新型的实用数字控制技术。
PID控制的缺点
  ①直接以 e=v−ye=v-ye=vy 的方式产生原始误差不太合理,因为控制目标 vvv 是可以跳变的,而对象输出 yyy 是存在惯性的,不可能跳变,所以让缓变的 yyy 来跟踪能跳变的 vvv 是不合理的。
  ② 由于微分器物理不可实现,只能近似实现,所以产生误差的微分信号 de/dt\mathrm{d}e/\mathrm{d}tde/dt 是不合适的,并且微分信号容易被噪声干扰。
  ③线性组合不一定是最好的组合办法。
  ④误差信号 eee 的积分∫0∝e(t)dt\int\limits_0^{\propto}{e\left( t \right) \mathrm{d}t}0e(t)dt 的引入有很多负作用,其能使闭环变得迟钝,容易产生振荡。
  因此,基于PID控制的思想,并且利用现代数字信号处理技术,开发出新型实用数字控制技术——ADRC自抗扰控制

1 空气起动系统模型

  空气起动系统模型见:【空气起动系统控制】使用神经网络PID调节起动机入口压力值

2 ADRC控制器设计

  自抗扰控制器(ADRC)主要包括由安排过度过程减少输入对系统的冲击以及提取微分信号的跟踪微分器TD;对系统状态观测和扰动估计的扩张状态观测器ESO;实时动态反馈的状态误差反馈控制NLSEF三个部分,结构图如下图所示。

2.1 跟踪微分器TD

  跟踪微分器(Tracking Differentiator)可以对输入信号进行预处理,其能够快速的跟踪给定的输入信号,并且能够通过非线性最速函数迭代的方式得到输入的微分,而不是直接应用微分器的方式得到输入的微分,减少了噪声信号的干扰。一般二阶形式如下:
{v˙1=v2v˙2=fhfh=fhan(v1−v0,v2,r,h0)\begin{cases} \dot{v}_1=v_2\\ \dot{v}_2=fh\\ fh=fhan\left( v_1-v_0, v_2, r, h_0 \right)\\ \end{cases} v˙1=v2v˙2=fhfh=fhan(v1v0,v2,r,h0)   v0v_0v0 输入信号,v1v_1v1 输入信号的跟踪信号,v2v_2v2 输入信号的微分信号,rrr 速度因子,h0h_0h0 滤波因子,fhanfhanfhan 为非线性的最速控制综合函数,能够实现对期望输入的平稳快速跟踪,且对输入信号的噪声具有一定的抑制效果。
fhan(v1−v0,v2,r,h0)={fsg(x,d)=(sign(x+d)−sign(x−d))/2d=rh2a0=h0x2y=x1+a0a1=d(d+8∣y∣)a2=a0+sign(y)(a1−d)/2a=(a0+y)fsg(y,d)+a2(1−fsg(y,d))fhan=−r(ad)fsg(a,d)−rsign(a)(1−fsg(a,d))fhan\left( v_1-v_0, v_2, r, h_0 \right) =\left\{ \begin{array}{c} \begin{array}{c} \begin{array}{c} \begin{array}{c} fsg\left( x,d \right) =\left( \mathrm{sign}\left( x+d \right) -\mathrm{sign}\left( x-d \right) \right) /2\\ d=rh^2\\ \end{array}\\ a_0=h_0x^2\\ \end{array}\\ y=x_1+a_0\\ \end{array}\\ \begin{array}{c} \begin{array}{c} a_1=\sqrt{d\left( d+8\left| y \right| \right)}\\ a_2=a_0+\mathrm{sign}\left( y \right) \left( a_1-d \right) /2\\ \end{array}\\ a=\left( a_0+y \right) fsg\left( y,d \right) +a_2\left( 1-fsg\left( y,d \right) \right)\\ fhan=-r\left( \frac{a}{d} \right) fsg\left( a,d \right) -r\mathrm{sign}\left( a \right) \left( 1-fsg\left( a,d \right) \right)\\ \end{array}\\ \end{array} \right. fhan(v1v0,v2,r,h0)=fsg(x,d)=(sign(x+d)sign(xd))/2d=rh2a0=h0x2y=x1+a0a1=d(d+8y)a2=a0+sign(y)(a1d)/2a=(a0+y)fsg(y,d)+a2(1fsg(y,d))fhan=r(da)fsg(a,d)rsign(a)(1fsg(a,d))

2.2 扩张状态观测器ESO

  扩张状态观测器(Extended State Observer)是将除了串联积分标准型以外的模型部分和外界扰动当作一个新的状态,进行观测。对于二阶系统,ESO 的标准形式为
{e=z1−yz˙1=z2−β01ez˙2=z3−β02fal(e,α01,δ01)+b0uz˙3=−β03faln(e,α02,δ02)\begin{cases} \begin{array}{l} \begin{array}{l} e=z_1-y\\ \dot{z}_1=z_2-\beta _{01}e\\ \end{array}\\ \dot{z}_2=z_3-\beta _{02}fal\left( e,\alpha _{01},\delta _{01} \right) +b_0u\\ \end{array}\\ \dot{z}_3=-\beta _{03}fal_n\left( e,\alpha _{02},\delta _{02} \right)\\ \end{cases} e=z1yz˙1=z2β01ez˙2=z3β02fal(e,α01,δ01)+b0uz˙3=β03faln(e,α02,δ02)  其中非线性函数 falfalfal
fal(x,α,δ)={∣x∣αsign(x),∣x∣⩾δx/δ1−α,∣x∣<δfal\left( x,\alpha ,\delta \right) =\begin{cases} \left| x \right|^{\alpha}\mathrm{sign}\left( x \right) , \left| x \right|\geqslant \delta\\ x/\delta ^{1-\alpha}, \left| x \right|<\delta\\ \end{cases} fal(x,α,δ)={xαsign(x),xδx/δ1α,x<δ  β01\beta _{01}β01, β02\beta _{02}β02, …, β0n\beta _{0n}β0n 为ESO的增益,其值对ESO的观测能力和估计扰动的能力起决定性作用。eee 为观测误差,δ0i\delta _{0i}δ0i 为观测误差的线性变化区域的大小,α0i\alpha _{0i}α0i 代表误差指数变化的参数,b0b _{0}b0 为控制增益的估计值。ESO不仅能够观测出状态变量 x(n)x^{\left( n \right)}x(n)znz_nzn 还能估计出系统总扰动 zn+1z_{n+1}zn+1,其中总扰动包括已建动力学模型、模型不确定性和外部干扰等因素。

2.3 非线性反馈

  非线性反馈(Nonlinear State Error Feedback)是保留了PID基于误差消除误差的部分,与 PD 控制不同的是加入了非线性函数,不再是原来线性组合的方式,利用非线性函数的性质实现更高精度的控制,常用的控制器主要为:
{e1=v1−z1e2=v2−z2u0=β1fal(e1,α1,δ1)+β2fal(e2,α2,δ1)\begin{cases} e_1=v_1-z_1\\ e_2=v_2-z_2\\ u_0=\beta _1fal\left( e_1,\alpha _1,\delta _1 \right) +\beta _2fal\left( e_2,\alpha _2,\delta _1 \right)\\ \end{cases} e1=v1z1e2=v2z2u0=β1fal(e1,α1,δ1)+β2fal(e2,α2,δ1)  其中,viv_ivi 为TD输出信号,ziz_izi 为ESO的输出,βi\beta_iβi 为非线性反馈的增益,falfalfal 函数见上。

2.4 扰动补偿

  扰动补偿部分是 ADRC 控制器最为核心思想。通过 ESO 实时观测扰动并在控制输入端实时补偿,在扰动对系统产生影响前补偿到控制输入端。针对二阶系统z3z_3z3 是对总扰动的估计,所以控制量为
u=u0−z3/b0u=u_0-z_3/b_0 u=u0z3/b0  其中,b0b_0b0 为补偿因子,与ESO中的参数 b0b_0b0 一致,适当调节可得到最终的控制效果。

另外,TD、ESO、NLSEF的参数整定方法见空气起动系统仿真下面的 NLSEF.m 脚本说明。

3 仿真结果

  将本文的控制方法与之前使用的PID控制器、RBF-PID控制器进行对比,在相同的参数下,仿真结果如下

  结论:由图可得,ADRC控制器相比于另外两种控制器,其超调量更小,稳态误差也更小,调节时间也更短,有明显的性能改善,初步验证了ADRC控制在理论上的可行性。

4 未来工作

  由于ADRC控制相比PID控制在基础理论层面和仿真层面上有明显的改善,所以下一步工作准备将ADRC控制应用于实际工程上,使用PLC程序编写ADRC控制代码以替换掉原来的PID控制程序,看看ADRC的实际控制结果究竟如何。

相关文章:

【ADRC控制】使用自抗扰控制器调节起动机入口压力值

以前只知道工业控制中用的是PID控制&#xff0c;然而最近了解到实际生产中还在使用ADRC控制&#xff0c;而且使用效果还优于PID控制&#xff0c;遂找了几篇文献学习学习。 0 引言 自抗扰控制&#xff08;Active Disturbances Rejection Controller&#xff0c;ADRC&#xff09;…...

剑指 Offer Day2——链表(简单)

目录剑指 Offer 06. 从尾到头打印链表剑指 Offer 24. 反转链表剑指 Offer 35. 复杂链表的复制剑指 Offer 06. 从尾到头打印链表 原题链接&#xff1a;06. 从尾到头打印链表 最容易想到的思路就是先从头到尾打印下来&#xff0c;然后 reverse 一下&#xff0c;但这里我们使用递归…...

Final Cut Pro 10.6.5

软件介绍Final Cut Pro 10.6.5 已通过小编安装运行测试 100%可以使用。Final Cut Pro 10.6.5 破解版启用了全新的矩形图标&#xff0c;与最新的macOS Ventura设计风格统一&#xff0c;支持最新的macOS 13 文图拉系统&#xff0c;支持Apple M1/M2芯片。经过完整而彻底的重新设计…...

Modelsim仿真操作指导

目录 一、前言 二、仿真分类 三、RTL级仿真 3.1创建库 3.2 仿真配置设置 3.3 运行仿真 四、常见问题 4.1 运行仿真时报错“cant read "Startup(-L)": no such element in array” 4.2 运行仿真时无任何报错&#xff0c;但object窗口为空&#xff0c;可正常运…...

你知道这20个数组方法是怎么实现的吗?

前言你们一定对JavaScript中的数组很熟悉&#xff0c;我们每天都会用到它的各种方法&#xff0c;比如push、pop、forEach、map……等等。但是仅仅使用它就足够了吗&#xff1f;如此出色&#xff0c;您一定不想停在这里。我想和你一起挑战实现20数组方法的功能。1、forEachforEa…...

《系统架构设计》-01-架构和架构师概述

文章目录1. 架构的基本定义1.1 架构组成理论1.1.1 系统元素1&#xff09;概念2&#xff09;静态结构和动态结构1.1.2 基本系统属性1.1.3 设计和发展原则1.2 架构的决策理论1.2.1 统一软件过程&#xff08;Rational Unified Process&#xff0c;统一软件过程&#xff09;1.2.2 决…...

第七届蓝桥杯省赛——5分小组

题目&#xff1a;9名运动员参加比赛&#xff0c;需要分3组进行预赛。有哪些分组的方案呢&#xff1f;我们标记运动员为 A,B,C,... I下面的程序列出了所有的分组方法。该程序的正常输出为&#xff1a;ABC DEF GHIABC DEG FHIABC DEH FGIABC DEI FGHABC DFG EHIABC DFH EGIABC DF…...

中国专科医院行业市场规模及未来发展趋势

中国专科医院行业市场规模及未来发展趋势中国专科医院行业在过去几年中取得了跨越式发展&#xff0c;市场规模不断扩大&#xff0c;未来的发展前景也远比过去更加乐观。根据市场调研在线网发布的2023-2029年中国专科医院行业运营现状及发展前景预测报告分析,截至2018年&#xf…...

【刷题笔记】--两数之和Ⅳ,从二叉树中找出两数之和

法一&#xff1a;深度搜索中序遍历双指针 思路&#xff1a;通过中序遍历二叉树得到一个递增的数列&#xff0c;再在这个递增的二叉树中找到这两数。 主要学到双指针这个方法。 对于一般数列&#xff0c;我们要找到两数满足其之和等于目标数&#xff0c;我们一般会进行暴力&a…...

浏览器渲染原理JavaScript V8引擎

浏览器渲染原理 前言 在我们面试过程中&#xff0c;面试官经常会问到这么一个问题&#xff0c;那就是从在浏览器地址栏中输入URL到页面显示&#xff0c;浏览器到底发生了什么&#xff1f; 浏览器内有哪些进程&#xff0c;这些进程都有些什么作用&#xff1b;浏览器地址输入U…...

在TheSandbox 的「BOYS PLANET」元宇宙中与你的男孩们见面吧!

世界各的男孩们成为 K-Pop 男团的旅程。 Mnet 的全球项目 BOYS PLANET 终于在 2 月 2 日首次亮相&#xff01; The Sandbox 与 CJ ENM 合作&#xff0c;于 2 月 6 日晚上 10 点开始举办两个基于 BOYS PLANET 生存节目的虚拟体验&#xff1a;BOYS PLANET&#xff1a;BOYS LAND 和…...

数据结构与算法:java对象的比较

1.基本类型的比较 在Java中&#xff0c;基本类型的对象可以直接比较大小。 public class TestCompare {public static void main(String[] args) {int a 10;int b 20;System.out.println(a > b);System.out.println(a < b);System.out.println(a b);char c1 A;char…...

python(16)--类

一、类的基本操作1.定义一个类格式&#xff1a;class Classname( )&#xff1a;内容&#x1f48e;鄙人目前还是一名学生&#xff0c;最熟悉的也就是学校了&#xff0c;所以就以学校为例子来建立一个类吧class School():headline"帝国理工大学"def schoolmotto(self):…...

CNI 网络流量分析(七)Calico 介绍与原理(二)

文章目录CNI 网络流量分析&#xff08;七&#xff09;Calico 介绍与原理&#xff08;二&#xff09;CNIIPAM指定 IP指定非 IPAM IPCNI 网络流量分析&#xff08;七&#xff09;Calico 介绍与原理&#xff08;二&#xff09; CNI 支持多种 datapath&#xff0c;默认是 linuxDa…...

API安全的最大威胁:三体攻击

最近《三体》火的一塌糊涂,动画片、电视剧和书都受到了大家的喜爱。在API安全上,最近也发现了三体攻击。 当然了,肯定是不来自于三体人的攻击,这里的三体攻击指的是(trinity,也称三位一体攻击),是一个新的攻击手法。具体的情况老李也找到了相关的介绍,下面就分享给大…...

分布式事务解决方案——TCC

TCC是Try、Confirm、Cancel三个词语的缩写&#xff0c;TCC要求每个分支事务实现三个操作&#xff1a;预处理Try、确认Confirm、撤销Cancel。1、Try 阶段是做业务检查(一致性)及资源预留(隔离)&#xff0c;此阶段仅是一个初步操作&#xff0c;它和后续的Confirm一起才能真正构成…...

ITSS认证分为几个级别,哪个级别最高

​一、什么是ITSS ITSS( 信息技术服务标准&#xff0c;简称ITSS)是国内第一套成体系和综合配套的信息技术服务标准库&#xff0c;全面规范了IT服务产品及其组成要素&#xff0c;用于指导实施标准化和可信赖的IT服务。 ITSS是在工业和信息化部、国家标准化管理委员会的联合指导下…...

ZigBee案例笔记 - USART

文章目录1.串行通信接口简述2.串行通信接口寄存器U0CSR (0x86) -USART 0 控制和状态U0UCR (0xC4)–USART 0 UART 控制U0GCR (0xC5)–USART 0 通用控制U0BUF (0xC1) – USART 0 接收/传送数据缓存U0BAUD (0xC2) – USART 0 波特率控制3.设置串行通信接口比特率控制寄存器4.外设I…...

java | 基于Redis的分布式锁实现①

前言 首先&#xff0c;为了确保分布式锁可用&#xff0c;我们至少要确保锁的实现同时满足以下四个条件&#xff1a; 互斥性。在任意时刻&#xff0c;只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁&#xff0c;也能保证后续其他客户…...

十六、基于FPGA的CRC校验设计实现

1&#xff0c;CRC校验循环冗余校验&#xff08;Cyclic Redundancy Check&#xff0c; CRC&#xff09;是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术&#xff0c;主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的…...

终极指南:如何在Windows上轻松模拟游戏控制器 - ViGEmBus驱动完整教程

终极指南&#xff1a;如何在Windows上轻松模拟游戏控制器 - ViGEmBus驱动完整教程 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过这样的困…...

见素抱朴的 SAP UI5 开发之道, 从「绝圣弃智」到少代码、少炫技、少内耗的前端工程

《道德经》第十九章说, 「绝圣弃智,民利百倍;绝仁弃义,民复孝慈;绝巧弃利,盗贼无有。此三者以为文不足。故令有所属,见素抱朴,少私寡欲。」通行本的这段文字,最容易被误读成反知识、反技术、反规范。放到 SAP UI5 开发里,这种误读尤其危险。SAP UI5 本来就是一个工程…...

Pikachu 靶场 XSS 通关笔记:从反射型到盲打与过滤绕过

目录 一、基础 XSS 类型 1. 反射型 XSS (GET)2. 反射型 XSS (POST)3. 存储型 XSS4. DOM 型 XSS5. DOM 型 XSS-x 二、进阶 XSS 场景 6. XSS 之盲打 (Blind XSS)7. XSS 之过滤8. XSS 之 htmlspecialchars9. XSS 之 href 输出10. XSS 之 JS 输出 三、XSS 绕过速查表 四、Pikach…...

从专利数量到创新质量:解读中国专利申请背后的产业逻辑与价值评估

1. 从“专利数量”到“创新质量”&#xff1a;一个从业者的深度观察最近和几位在半导体和物联网领域做研发的朋友聊天&#xff0c;话题不约而同地转到了知识产权上。大家普遍的感觉是&#xff0c;现在无论是产品立项、技术合作还是出海竞争&#xff0c;专利已经从一个“锦上添花…...

OpenClaw AI代理成本监控:离线日志解析与Token用量分析实战

1. 项目概述与核心价值如果你和我一样&#xff0c;在日常工作中重度依赖像 OpenClaw 这样的 AI 代理框架来处理各种自动化任务&#xff0c;那么一个绕不开的“甜蜜的烦恼”就是成本监控。我们享受着 AI 带来的效率提升&#xff0c;但每次看到账单时&#xff0c;心里总会咯噔一下…...

OpenClaw工作空间管理工具:自动化文件治理与优化实践

1. 项目概述&#xff1a;一个专为OpenClaw设计的本地化工作空间管理工具如果你和我一样&#xff0c;深度使用过OpenClaw这套开源AI智能体框架&#xff0c;那你一定对那几个核心的Markdown配置文件又爱又恨。AGENTS.md里定义着你的数字员工&#xff0c;SOUL.md是它们的“灵魂”与…...

AI新闻链接汇总(2026-05-10)

AI新闻链接汇总&#xff08;2026-05-10&#xff09; 一、斯坦福大学发布《2026年人工智能指数报告》&#xff1a;美国领跑模型开发&#xff0c;中国主导机器人部署 斯坦福大学以人为本人工智能研究院于2026年4月13日正式发布《2026年人工智能指数报告》&#xff0c;这份长达4…...

基于Vite+React的企业级前端界面复刻实战:从QClaw模仿到项目模板

1. 项目概述与核心价值最近在做一个和微信生态相关的项目&#xff0c;需要快速搭建一个与腾讯官方“QClaw”界面高度一致的前端应用。QClaw是腾讯官方的一个在线工具平台&#xff0c;其界面设计简洁、交互流畅&#xff0c;非常适合作为企业级后台或工具类应用的参考。但直接使用…...

别再复制粘贴了!手把手教你用Simulink封装打造自己的‘傻瓜式’模块库

别再复制粘贴了&#xff01;手把手教你用Simulink封装打造自己的‘傻瓜式’模块库 每次打开Simulink建模时&#xff0c;你是否总在重复搭建那些相似的PID控制器、滤波器或信号处理单元&#xff1f;当团队协作时&#xff0c;是否经常需要向同事解释某个复杂子系统的参数含义&…...

通过 Python 快速将你的应用接入 Taotoken 支持的多种大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过 Python 快速将你的应用接入 Taotoken 支持的多种大模型 如果你正在使用 Python 开发基于大语言模型的应用&#xff0c;并且希…...