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

news2024/11/27 21:06:45

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

0 引言

  自抗扰控制(Active Disturbances Rejection Controller,ADRC)技术,是发扬PID控制技术的精髓并且吸取了现代控制理论,不依赖于被控对象精确模型,能够替代PID控制技术,是一种新型的实用数字控制技术。
PID控制的缺点
  ①直接以 e = v − y e=v-y e=vy 的方式产生原始误差不太合理,因为控制目标 v v v 是可以跳变的,而对象输出 y y y 是存在惯性的,不可能跳变,所以让缓变的 y y y 来跟踪能跳变的 v v v 是不合理的。
  ② 由于微分器物理不可实现,只能近似实现,所以产生误差的微分信号 d e / d t \mathrm{d}e/\mathrm{d}t de/dt 是不合适的,并且微分信号容易被噪声干扰。
  ③线性组合不一定是最好的组合办法。
  ④误差信号 e e e 的积分 ∫ 0 ∝ e ( t ) d t \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 = v 2 v ˙ 2 = f h f h = f h a n ( v 1 − v 0 , v 2 , r , h 0 ) \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)   v 0 v_0 v0 输入信号, v 1 v_1 v1 输入信号的跟踪信号, v 2 v_2 v2 输入信号的微分信号, r r r 速度因子, h 0 h_0 h0 滤波因子, f h a n fhan fhan 为非线性的最速控制综合函数,能够实现对期望输入的平稳快速跟踪,且对输入信号的噪声具有一定的抑制效果。
f h a n ( v 1 − v 0 , v 2 , r , h 0 ) = { f s g ( x , d ) = ( s i g n ( x + d ) − s i g n ( x − d ) ) / 2 d = r h 2 a 0 = h 0 x 2 y = x 1 + a 0 a 1 = d ( d + 8 ∣ y ∣ ) a 2 = a 0 + s i g n ( y ) ( a 1 − d ) / 2 a = ( a 0 + y ) f s g ( y , d ) + a 2 ( 1 − f s g ( y , d ) ) f h a n = − r ( a d ) f s g ( a , d ) − r s i g n ( a ) ( 1 − f s g ( 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 = z 1 − y z ˙ 1 = z 2 − β 01 e z ˙ 2 = z 3 − β 02 f a l ( e , α 01 , δ 01 ) + b 0 u z ˙ 3 = − β 03 f a l n ( 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)  其中非线性函数 f a l fal fal
f a l ( x , α , δ ) = { ∣ x ∣ α s i g n ( 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, …, β 0 n \beta _{0n} β0n 为ESO的增益,其值对ESO的观测能力和估计扰动的能力起决定性作用。 e e e 为观测误差, δ 0 i \delta _{0i} δ0i 为观测误差的线性变化区域的大小, α 0 i \alpha _{0i} α0i 代表误差指数变化的参数, b 0 b _{0} b0 为控制增益的估计值。ESO不仅能够观测出状态变量 x ( n ) x^{\left( n \right)} x(n) z n z_n zn 还能估计出系统总扰动 z n + 1 z_{n+1} zn+1,其中总扰动包括已建动力学模型、模型不确定性和外部干扰等因素。

2.3 非线性反馈

  非线性反馈(Nonlinear State Error Feedback)是保留了PID基于误差消除误差的部分,与 PD 控制不同的是加入了非线性函数,不再是原来线性组合的方式,利用非线性函数的性质实现更高精度的控制,常用的控制器主要为:
{ e 1 = v 1 − z 1 e 2 = v 2 − z 2 u 0 = β 1 f a l ( e 1 , α 1 , δ 1 ) + β 2 f a l ( e 2 , α 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)  其中, v i v_i vi 为TD输出信号, z i z_i zi 为ESO的输出, β i \beta_i βi 为非线性反馈的增益, f a l fal fal 函数见上。

2.4 扰动补偿

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

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

3 仿真结果

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

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

4 未来工作

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Datawhale图机器学习】第一章图机器学习导论

图机器学习导论 学习路径与必读论文清单 斯坦福CS224W&#xff08;子豪兄中文精讲&#xff09;知识图谱实战DeepwalkNode2vecPageRankGNNGCNGragh-SAGEGINGATTrans-ETrans-R 图无处不在 图是描述关联数据的通用语言 举例 计算机网络新冠肺炎流行病学调查传播链食物链地铁图…

推荐一个.Ner Core开发的配置中心开源项目

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 当你把单体应用改造为微服务架构&#xff0c;相应的配置文件&#xff0c;也会被分割&#xff0c;被分散到各个节点。这个时候就会产生一个问题&#xff0c;配置信息是分散的、冗余的&#xff0c;变成不好维护管理…

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…

分布式一致性算法Raft原理图释

什么是分布式一致性算法Raft 分布式一致性算法Raft&#xff1a;指在分布式场景下实现集群数据同步的解决方案 掌握了这个算法&#xff0c;就可以较容易地处理绝大部分场景的容错和数据一致性需求 Raft三大角色 跟随者&#xff08;Follower&#xff09;&#xff1a;普通群众…

opencv绘制矩形和圆

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

Go语言之 下载安装go以及vscode配置go环境

上篇请移步到Go语言之 下载安装及第一个代码_水w的博客-CSDN博客 目录 一、下载安装以及配置go环境 1 下载安装go 2 配置go环境 二、安装配置git 一、在vscode上开发golang 1 配置 2 编写代码 解决报错&#xff1a;go: go.mod file not found in current directory or …

J-Link RTT Viewer使用教程(附代码)

目录 RTT(Real Time Transfer)简介 使用教程 常用API介绍 RTT缓冲大小修改 使用printf重定向 官方例程 RTT(Real Time Transfer)简介 平常调试代码中使用串口打印log&#xff0c;往往需要接出串口引脚&#xff0c;比较麻烦&#xff0c;并且串口打印速度较慢&#xff0c;串…

RTT 线程间同步互斥

1.概念 在多线程实时系统中&#xff0c;一项工作的完成往往可以通过多个线程协调的方式共同来完成&#xff0c;那么多个线程之间如何 “默契” 协作才能使这项工作无差错执行&#xff1f;下面举个例子说明。 例如一项工作中的两个线程&#xff1a;一个线程从传感器中接收数据…

分享112个HTML电子商务模板,总有一款适合您

分享112个HTML电子商务模板&#xff0c;总有一款适合您 112个HTML电子商务模板下载链接&#xff1a;https://pan.baidu.com/s/13wf9C9NtaJz67ZqwQyo74w?pwdzt4a 提取码&#xff1a;zt4a Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 有机蔬菜水果食品商城网…

ubuntu 安装支持GPU的Docker详细步骤

安装依赖项 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common 添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerpr…

分享111个HTML医疗保健模板,总有一款适合您

分享111个HTML医疗保健模板&#xff0c;总有一款适合您 111个HTML医疗保健模板下载链接&#xff1a;https://pan.baidu.com/s/1YInaQDnUVsXYtMh1Ls-BHg?pwdxvfc 提取码&#xff1a;xvfc Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 import os import shuti…

元宇宙之声:新鸿基公司

在本期节目中&#xff0c;新鸿基团队讲述了他们在农历新年季中展示的元宇宙最新创作&#xff01; 为什么将体验命名为「乘风启航」&#xff1f;什么是 「Scallywag」&#xff1f; 香港专业离岸帆船队新鸿基 Scallywag 队由新鸿基公司赞助&#xff0c;其团队精神与公司的精神相呼…

Git实用指令记录

config 用例&#xff1a;对git最先要做的一个操作就是配置用户名和邮箱&#xff0c;否则无法commit查看所有可以config的条目&#xff0c;非常之多$ git config --list core.symlinksfalse core.autocrlftrue core.fscachetrue color.interactivetrue color.uiauto help.forma…

Java多重选择结构,超详细整理,适合新手入门

目录 一、什么是多重选择结构&#xff1f; 二、if 语句的语法 1、什么是嵌套if语句&#xff1f; 2、if 语句循环基本用法&#xff1a; 3、案例&#xff1a; 二、if...else多重选择结构语法 1、什么是if-else语句&#xff1f; 2、if...else 循环基本用法 3、案例&#…

尚硅谷Git课程 | Git(idea版本)笔记

尚硅谷Git课程 | Git(idea版本) 笔记 文章目录尚硅谷Git课程 | Git(idea版本) 笔记工作机制代码托管中心git安装(看视频)Git常用命令设置用户签名初始化本地库查看状态添加暂存区提交本地库查看git历史版本修改文件版本穿梭Git分支操作分支的好处查看分支创建分支切换分支分支合…

安全渗透环境准备(工具下载)

数据来源 01 一些VM虚拟机的安装 攻击机kali&#xff1a; kali官网 渗透测试工具Kali Linux安装与使用 kali汉化 虚拟机网络建议设置成NAT模式&#xff0c;桥接有时不稳定。 靶机OWASP_Broken_Web_Apps&#xff1a; 迅雷下载 网盘下载 安装教程 开机之后需要登录&am…

UE4 使用控件蓝图的动画功能实现UI的淡入淡出

效果&#xff1a;步骤&#xff1a;首先PS一张背景纯黑&#xff0c;边缘有羽化效果的图片&#xff1a;新建一个控件蓝图&#xff0c;创建一个图像和按钮控件&#xff0c;控件的初始位置如下所示&#xff0c;设置图像一开始为完全透明新建两个动画&#xff0c;分别命名为“向左移…

高可用架构:异地多活

前言&#xff1a;多「活」、多「备」是两个相对的概念&#xff0c;设计和实现的难度相差很大&#xff0c;不要搞混了 1.为什么要做多活 在一些极端场景下&#xff0c;有可能所有服务器都出现故障&#xff0c;例如机房断电、机房火灾、地震等这些不卡抗拒因素会导致系统所有服务…

多线程之死锁,哲学家就餐问题的实现

1.死锁是什么 死锁是这样一种情形&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 2.哲学家就餐问题 有五个哲学家&#xff0c;他们的生活方式是交替地进行思考和进餐…

网际协议IP

网际协议IP 文章目录网际协议IP[toc]虚拟互联网IP地址及其表示方法分类IP地址(两级)无分类编址 CIDR网路前缀地址块地址掩码子网划分&#xff08;三级IP地址&#xff09;IP地址和MAC地址地址解析协议ARPIP数据报的格式IP数据报首部的固定部分中的各字段IP数据报首部的可变部分分…