【ADRC控制】使用自抗扰控制器调节起动机入口压力值
以前只知道工业控制中用的是PID控制,然而最近了解到实际生产中还在使用ADRC控制,而且使用效果还优于PID控制,遂找了几篇文献学习学习。
0 引言
自抗扰控制(Active Disturbances Rejection Controller,ADRC)技术,是发扬PID控制技术的精髓并且吸取了现代控制理论,不依赖于被控对象精确模型,能够替代PID控制技术,是一种新型的实用数字控制技术。
PID控制的缺点:
①直接以 e=v−ye=v-ye=v−y 的方式产生原始误差不太合理,因为控制目标 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}0∫∝e(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(v1−v0,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(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(da)fsg(a,d)−rsign(a)(1−fsg(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=z1−yz˙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=v1−z1e2=v2−z2u0=β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=u0−z3/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控制,然而最近了解到实际生产中还在使用ADRC控制,而且使用效果还优于PID控制,遂找了几篇文献学习学习。 0 引言 自抗扰控制(Active Disturbances Rejection Controller,ADRC)…...
剑指 Offer Day2——链表(简单)
目录剑指 Offer 06. 从尾到头打印链表剑指 Offer 24. 反转链表剑指 Offer 35. 复杂链表的复制剑指 Offer 06. 从尾到头打印链表 原题链接:06. 从尾到头打印链表 最容易想到的思路就是先从头到尾打印下来,然后 reverse 一下,但这里我们使用递归…...
Final Cut Pro 10.6.5
软件介绍Final Cut Pro 10.6.5 已通过小编安装运行测试 100%可以使用。Final Cut Pro 10.6.5 破解版启用了全新的矩形图标,与最新的macOS Ventura设计风格统一,支持最新的macOS 13 文图拉系统,支持Apple M1/M2芯片。经过完整而彻底的重新设计…...
Modelsim仿真操作指导
目录 一、前言 二、仿真分类 三、RTL级仿真 3.1创建库 3.2 仿真配置设置 3.3 运行仿真 四、常见问题 4.1 运行仿真时报错“cant read "Startup(-L)": no such element in array” 4.2 运行仿真时无任何报错,但object窗口为空,可正常运…...
你知道这20个数组方法是怎么实现的吗?
前言你们一定对JavaScript中的数组很熟悉,我们每天都会用到它的各种方法,比如push、pop、forEach、map……等等。但是仅仅使用它就足够了吗?如此出色,您一定不想停在这里。我想和你一起挑战实现20数组方法的功能。1、forEachforEa…...
《系统架构设计》-01-架构和架构师概述
文章目录1. 架构的基本定义1.1 架构组成理论1.1.1 系统元素1)概念2)静态结构和动态结构1.1.2 基本系统属性1.1.3 设计和发展原则1.2 架构的决策理论1.2.1 统一软件过程(Rational Unified Process,统一软件过程)1.2.2 决…...
第七届蓝桥杯省赛——5分小组
题目:9名运动员参加比赛,需要分3组进行预赛。有哪些分组的方案呢?我们标记运动员为 A,B,C,... I下面的程序列出了所有的分组方法。该程序的正常输出为:ABC DEF GHIABC DEG FHIABC DEH FGIABC DEI FGHABC DFG EHIABC DFH EGIABC DF…...
中国专科医院行业市场规模及未来发展趋势
中国专科医院行业市场规模及未来发展趋势中国专科医院行业在过去几年中取得了跨越式发展,市场规模不断扩大,未来的发展前景也远比过去更加乐观。根据市场调研在线网发布的2023-2029年中国专科医院行业运营现状及发展前景预测报告分析,截至2018年…...
【刷题笔记】--两数之和Ⅳ,从二叉树中找出两数之和
法一:深度搜索中序遍历双指针 思路:通过中序遍历二叉树得到一个递增的数列,再在这个递增的二叉树中找到这两数。 主要学到双指针这个方法。 对于一般数列,我们要找到两数满足其之和等于目标数,我们一般会进行暴力&a…...
浏览器渲染原理JavaScript V8引擎
浏览器渲染原理 前言 在我们面试过程中,面试官经常会问到这么一个问题,那就是从在浏览器地址栏中输入URL到页面显示,浏览器到底发生了什么? 浏览器内有哪些进程,这些进程都有些什么作用;浏览器地址输入U…...
在TheSandbox 的「BOYS PLANET」元宇宙中与你的男孩们见面吧!
世界各的男孩们成为 K-Pop 男团的旅程。 Mnet 的全球项目 BOYS PLANET 终于在 2 月 2 日首次亮相! The Sandbox 与 CJ ENM 合作,于 2 月 6 日晚上 10 点开始举办两个基于 BOYS PLANET 生存节目的虚拟体验:BOYS PLANET:BOYS LAND 和…...
数据结构与算法:java对象的比较
1.基本类型的比较 在Java中,基本类型的对象可以直接比较大小。 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.定义一个类格式:class Classname( ):内容💎鄙人目前还是一名学生,最熟悉的也就是学校了,所以就以学校为例子来建立一个类吧class School():headline"帝国理工大学"def schoolmotto(self):…...
CNI 网络流量分析(七)Calico 介绍与原理(二)
文章目录CNI 网络流量分析(七)Calico 介绍与原理(二)CNIIPAM指定 IP指定非 IPAM IPCNI 网络流量分析(七)Calico 介绍与原理(二) CNI 支持多种 datapath,默认是 linuxDa…...
API安全的最大威胁:三体攻击
最近《三体》火的一塌糊涂,动画片、电视剧和书都受到了大家的喜爱。在API安全上,最近也发现了三体攻击。 当然了,肯定是不来自于三体人的攻击,这里的三体攻击指的是(trinity,也称三位一体攻击),是一个新的攻击手法。具体的情况老李也找到了相关的介绍,下面就分享给大…...
分布式事务解决方案——TCC
TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confirm、撤销Cancel。1、Try 阶段是做业务检查(一致性)及资源预留(隔离),此阶段仅是一个初步操作,它和后续的Confirm一起才能真正构成…...
ITSS认证分为几个级别,哪个级别最高
一、什么是ITSS ITSS( 信息技术服务标准,简称ITSS)是国内第一套成体系和综合配套的信息技术服务标准库,全面规范了IT服务产品及其组成要素,用于指导实施标准化和可信赖的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的分布式锁实现①
前言 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户…...
十六、基于FPGA的CRC校验设计实现
1,CRC校验循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的…...
2022爱分析 · DataOps厂商全景报告 | 爱分析报告
报告编委 李喆 爱分析合伙人&首席分析师 廖耘加 爱分析分析师 目录 1. 研究范围定义 2. 市场洞察 3. 厂商全景地图 4. 市场分析与厂商评估 5. 入选厂商列表 1. 研究范围定义 研究范围 在后疫情时代,以数据分析为代表的数据消费场景日益丰富&…...
京东前端react面试题及答案
useEffect 与 useLayoutEffect 的区别 (1)共同点 运用效果: useEffect 与 useLayoutEffect 两者都是用于处理副作用,这些副作用包括改变 DOM、设置订阅、操作定时器等。在函数组件内部操作副作用是不被允许的,所以需…...
TongWeb8数据源相关问题
问题一:数据源连接不足当TongWeb数据源连接用完时,除了监控中看到连接占用高以外,日志中会有如下提示信息。2023-02-14 10:24:43 [WARN] - com.tongweb.web.jdbc.pool.PoolExhaustedException: [TW-0.0.0.0-8088-3] Timeout: Pool empty. Una…...
关于最近大热的AI,你怎么看?
AI人工智能,相信大家都不陌生,也都接触过不少。但是最近小编在网上冲浪的时候发现各大媒体又掀起了一阵AI热潮,AI不是很常见了吗?是又有什么新的发展吗? 带着强烈的好奇心,我在地铁上读完了一篇关于Chatgp…...
25.架构和软件产品线
文章目录25 Architecture and Software Product Lines架构和软件产品线25.1 An Example of Product Line Variability 产品线可变性的一个例子25.2 What Makes a Software Product Line Work? 软件产品线的工作原理是什么?25.3 Product Line Scope 产品线范围25.4 …...
Seata-server 源码学习(一)
Seata源码学习引入 学习了Seata的应用以后,我们从这开始要开始分析Seata的源码相关内容 源码下载 官方地址:https://seata.io/zh-cn/blog/download.html 通过idea打开seata-1.4.2版本的源码 回顾AT模式 其实在之前的应用课程中,我们已经用…...
2023新华为OD机试题 - 斗地主(JavaScript)
斗地主 题目 斗地主起源于湖北十堰房县, 据传是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的, 如今已风靡整个中国,并流行于互联网上 牌型: 单顺,又称顺子,最少5张牌,最多12张牌(3...A),不能有2, 也不能有大小王,不计花色 例如:3-4-5-7-8,7-8-9-1…...
素数相关(结合回文数,合数)线性筛素数(欧拉筛法)Euler【算法模板笔记】
一、朴素筛法(埃拉托斯特尼筛法)Eratosthenes 筛法(埃拉托斯特尼筛法,简称埃氏筛法)时间复杂度是O(nloglogn)不常用,被欧拉筛代替,略二、线性筛素数(欧拉筛法)简介线性筛…...
1.7配置OSPF手动汇总
实验7:配置OSPF手动汇总 实验目的实现OSPF路由汇总的配置阐明OSPF引入的外部路由时进行路由汇总的方法实验拓扑配置OSPF手动汇总实验拓扑如图1-17所示。 图1-17 配置OSPF手动汇总 实验步骤配置IP地址,配置OSPF(和实验6一致,此处略)在…...
多线程下载工具axel的安装和使用
多线程下载工具axel的安装和使用 Axel是一个轻量级下载程序,它和其他加速器一样,对同一个文件建立多个连接,每个连接下载单独的文件片段以更快地完成下载。 Axel 支持 HTTP、HTTPS、FTP 和 FTPS 协议。它也可以使用多个镜像站点下载单个文件…...
wordpress如何调整文章位置/搜索引擎优化分析报告
Python不需要为变量指定数据类型 例如写出 abc 1,abc 就是整数类型,写 abc 1.0,变量 abc 就是浮点类型 Python 操作字符串,用单引号或双引号括起来 >>> "Hello World!" Hello World! 从键盘读取一个数字…...
b2c网站特点/seo排名工具给您好的建议
摘要:了解 TreeView Web 控件,并学习如何在 ASP.NET Web 应用程序中使用 TreeView Web 控件。除了标准的 ASP.NET Web 控件(例如 TextBox、DropDownList、DataGrid、DataList 等)之外,Microsoft 还发布了附加的 Web 控…...
dreawever如何做本地网站/全网自媒体平台大全
栈的实现 实现一个栈,当务之急是决定存储数据的底层数据结构。这里采用的是数组。 我们的实现以定义 Stack 类的构造函数开始: function Stack() { this.dataStore []; this.top 0; this.push push; this.pop pop; this.peek peek; } 我们用数组 dataStore 保存栈内元素,构…...
济南科技市场做网站/环球网
前言小案例:输入输出参数:记录MYSQL存储过程中的关键语法:DELIMITER // 声明语句结束符,用于区分;CEATE PROCEDURE demo_in_parameter(IN p_in int) 声明存储过程BEGIN …. END 存储过程开始和结束符号SET p_in1 变量赋值DECLARE …...
重庆手机网站开发/seo优化工作怎么样
一个网友说他的存储过程中有一段update sql,运行了15分钟还没出结果,需要优化一下 他把sql发给我 UPDATE TB_RESULT R SET R.VOTE_COUNTNVL((SELECT TEMP_.VOTE_COUNT FROM ( SELECT RESULT_ID, COUNT(RV_ID) AS VOTE_COUNT FROM TB_RESULT_VOTE GROUP B…...
详情页制作网站/沈阳关键词优化费用
定义SynDirTool类,用于同步两个文件夹的内容,从/usr/local/a文件夹到/usr/local/b文件夹,执行方法:python SynDirTool.py /usr/local/a /usr/local/bSynDirTool.py文件内容:#!/usr/bin/python# -*- coding:utf-8 -*-im…...