一、ADRC概述1、ADRC的背景1场景引入比如一个司机要控制一辆车在一条充满未知的路上行驶这条路可能突然刮风外部干扰轮胎可能磨损导致抓地力变化内部参数变化甚至车的发动机模型本身就不完全精确模型不确定性传统的PID控制就像一个只盯着速度表、发现慢了就踩油门的司机它总是慢半拍反馈控制总是等误差出现后再补偿而且遇到大侧风时可能会手忙脚乱ADRCActive Disturbance Rejection Control自抗扰控制的提出者韩京清研究员以及后来推广线性ADRC的高志强教授想出了一个更聪明的策略即将模型的不确定性、内外扰动等所有未建模动态统一视为一个“总扰动”司机不需要精确知道风多大、路多滑只需要一个“虚拟的传感器”实时估算出这个“总扰动”是多少然后在打方向盘控制指令时提前反向补偿掉它实现对扰动的主动抑制2、PID的缺陷1微分信号不好取直接对信号求微分会放大噪声像用放大镜看画面的毛刺这也是部分场景选用PI控制而非PID控制的原因。2非线性适应性差PID参数在一种模式下调好了换种模式可能就不是最佳参数了因为它本质上是个线性策略。二、ADRC的组成成分1、ADRC框图ADRC主要由三部分组成——跟踪微分器TD、扩张状态观测器ESO和非线性状态误差反馈NLSEF实际应用中也可替换为线性状态误差反馈2、跟踪微分器TD1TD的输入输出及作用简单来说给定一个跳变的指令TD能够返回一个平滑过渡的指令并给出准确的斜率估计低噪声的微分信号比如给系统一个“转速从0升到1000”的指令时TD不会把这个陡峭的指令直接扔给控制器而是给它“安排”一条光滑、合理的过渡路径比如一条S形曲线沿着这条光滑的路径TD能轻松地计算出“优质”的速度一阶微分甚至加速度二阶微分信号完美避开了直接从噪声信号中提取微分的难题2TD的实现①经典非线性跟踪微分器韩京清形式②基于临界阻尼二阶系统的响应调节器3、扩张状态观测器ESO1ESO可以认为是龙伯格观测器的延伸它在龙伯格观测器的基础上增加一个状态变量这个状态变量就是“总扰动”。2由于模型的不确定性、内外扰动等所有未建模动态可以统一视为一个“总扰动”那么ESO使用的被控对象数学模型就不要求非常精确可以使用一个简单的、理想的模型忽略任何难计算的阻力当然建模不要求精确不代表可以脱离实际的物理定律。3ESO设计举例4ESO的阶数不一定要与TD匹配假设TD会输出速度信号和速度微分信号加速度信号而ESO只输出速度信号和扰动信号那么有如下几种解决方案①提升ESO的阶数以观测加速度信号这是正统ADRC的做法这么做是为了后续的SEF做铺垫但是使用这种方法的前提是被控对象本身是三阶的上例中的电机调速系统无法通过升阶观测加速度信号。②不提升ESO的阶数直接对ESO观测的速度信号不是传感器采集的速度信号做差分近似但这种做法在干扰严重的工况容易产生抖动适合比较光滑的信号。③不提升ESO的阶数在ESO末端增加TD以计算加速度信号但这种做法会增加滤波滞后。④不提升ESO的阶数在SEF中放弃微分项这种做法可能会导致被控量超调甚至是震荡以电机控制为例一般转速环和转矩环可以省略微分项位置环不建议省略微分项。4、状态误差反馈SEF与扰动补偿1SEF是计算控制输入量的关键部分它的作用与PID控制器类似主要区别在于①SEF的误差输入不由目标值和实际值直接作差计算而是由TD处理过的目标值和ESO观测的实际值作差计算而得。②SEF一般没有I项因为ESO已经将扰动项估算出来了在SEF计算出控制输入量后将扰动项补偿进去即可。③SEF可以是非线性的。2SEF可设计为非线性控制器也可设计为线性控制器。①SEF设计举例的背景②非线性SEF③线性SEF3扰动补偿SEF没有积分项抵消稳态误差这是因为稳态误差已经被ESO估计出来了因此只需要将ESO观测的扰动项补偿到SEF的输出中即可得到被控对象的输入量继续以上一小节中通过转矩控转速的系统为例经过扰动补偿后的输入量为三、ADRC的参数整定方法1、带宽法2、线性LSEF的参数整定3、非线性NLSEF的参数整定四、ADRC的Simulink实现举例
现代控制理论——专题 ADRC自抗扰控制
发布时间:2026/6/3 23:34:41
一、ADRC概述1、ADRC的背景1场景引入比如一个司机要控制一辆车在一条充满未知的路上行驶这条路可能突然刮风外部干扰轮胎可能磨损导致抓地力变化内部参数变化甚至车的发动机模型本身就不完全精确模型不确定性传统的PID控制就像一个只盯着速度表、发现慢了就踩油门的司机它总是慢半拍反馈控制总是等误差出现后再补偿而且遇到大侧风时可能会手忙脚乱ADRCActive Disturbance Rejection Control自抗扰控制的提出者韩京清研究员以及后来推广线性ADRC的高志强教授想出了一个更聪明的策略即将模型的不确定性、内外扰动等所有未建模动态统一视为一个“总扰动”司机不需要精确知道风多大、路多滑只需要一个“虚拟的传感器”实时估算出这个“总扰动”是多少然后在打方向盘控制指令时提前反向补偿掉它实现对扰动的主动抑制2、PID的缺陷1微分信号不好取直接对信号求微分会放大噪声像用放大镜看画面的毛刺这也是部分场景选用PI控制而非PID控制的原因。2非线性适应性差PID参数在一种模式下调好了换种模式可能就不是最佳参数了因为它本质上是个线性策略。二、ADRC的组成成分1、ADRC框图ADRC主要由三部分组成——跟踪微分器TD、扩张状态观测器ESO和非线性状态误差反馈NLSEF实际应用中也可替换为线性状态误差反馈2、跟踪微分器TD1TD的输入输出及作用简单来说给定一个跳变的指令TD能够返回一个平滑过渡的指令并给出准确的斜率估计低噪声的微分信号比如给系统一个“转速从0升到1000”的指令时TD不会把这个陡峭的指令直接扔给控制器而是给它“安排”一条光滑、合理的过渡路径比如一条S形曲线沿着这条光滑的路径TD能轻松地计算出“优质”的速度一阶微分甚至加速度二阶微分信号完美避开了直接从噪声信号中提取微分的难题2TD的实现①经典非线性跟踪微分器韩京清形式②基于临界阻尼二阶系统的响应调节器3、扩张状态观测器ESO1ESO可以认为是龙伯格观测器的延伸它在龙伯格观测器的基础上增加一个状态变量这个状态变量就是“总扰动”。2由于模型的不确定性、内外扰动等所有未建模动态可以统一视为一个“总扰动”那么ESO使用的被控对象数学模型就不要求非常精确可以使用一个简单的、理想的模型忽略任何难计算的阻力当然建模不要求精确不代表可以脱离实际的物理定律。3ESO设计举例4ESO的阶数不一定要与TD匹配假设TD会输出速度信号和速度微分信号加速度信号而ESO只输出速度信号和扰动信号那么有如下几种解决方案①提升ESO的阶数以观测加速度信号这是正统ADRC的做法这么做是为了后续的SEF做铺垫但是使用这种方法的前提是被控对象本身是三阶的上例中的电机调速系统无法通过升阶观测加速度信号。②不提升ESO的阶数直接对ESO观测的速度信号不是传感器采集的速度信号做差分近似但这种做法在干扰严重的工况容易产生抖动适合比较光滑的信号。③不提升ESO的阶数在ESO末端增加TD以计算加速度信号但这种做法会增加滤波滞后。④不提升ESO的阶数在SEF中放弃微分项这种做法可能会导致被控量超调甚至是震荡以电机控制为例一般转速环和转矩环可以省略微分项位置环不建议省略微分项。4、状态误差反馈SEF与扰动补偿1SEF是计算控制输入量的关键部分它的作用与PID控制器类似主要区别在于①SEF的误差输入不由目标值和实际值直接作差计算而是由TD处理过的目标值和ESO观测的实际值作差计算而得。②SEF一般没有I项因为ESO已经将扰动项估算出来了在SEF计算出控制输入量后将扰动项补偿进去即可。③SEF可以是非线性的。2SEF可设计为非线性控制器也可设计为线性控制器。①SEF设计举例的背景②非线性SEF③线性SEF3扰动补偿SEF没有积分项抵消稳态误差这是因为稳态误差已经被ESO估计出来了因此只需要将ESO观测的扰动项补偿到SEF的输出中即可得到被控对象的输入量继续以上一小节中通过转矩控转速的系统为例经过扰动补偿后的输入量为三、ADRC的参数整定方法1、带宽法2、线性LSEF的参数整定3、非线性NLSEF的参数整定四、ADRC的Simulink实现举例