基于自抗扰控制(ADRC)的非线性反馈控制系统
项目介绍
本项目实现了一个基于自抗扰控制(ADRC)技术的非线性反馈控制系统。自抗扰控制的核心思想是不依赖于受控对象的精确数学模型,通过将系统内部的未建模动态和外部干扰统一视为“总扰动”,利用观测器进行实时估计并实施在线补偿。本项目通过典型的二阶受控对象验证了该控制策略在面对复杂扰动(如阶跃扰动和正弦时变扰动)时的鲁棒性和控制精度。
功能特性
- 动态过渡安排:利用跟踪微分器平滑处理输入指令,消除阶跃控制带来的初始冲击,并产生高质量的微分信号。
- 总扰动实时观测:通过扩张状态观测器,实时估算系统的各阶状态变量以及包含外部干扰与核心模型误差在内的总扰动。
- 非线性反馈特性:采用非线性状态误差反馈律,利用其“小误差大增益、大误差小增益”的特性,兼顾系统的快速响应性能与稳态精度。
- 抗干扰能力强:能够有效抵御突发的常量干扰和周期性的时变干扰,实现系统的精准解耦与补偿。
- 可视化分析:提供四维综合监控界面,涵盖跟踪性能、扰动估计精度、误差曲线以及控制器输出等关键指标。
系统要求- MATLAB R2016b 或更高版本。
- 环境需支持基本的脚本运行与绘图功能。
实现逻辑与功能说明系统的仿真运行基于 0.01 秒的固定步长,总仿真时间为 10 秒,具体逻辑流程如下:
- 输入指令生成:系统在 2 秒时接收到幅值为 1.0 的阶跃输入,在 6 秒时切换为 0.5 的目标值,用于测试系统对多变指令的跟踪能力。
- 环境扰动模拟:在 4 秒至 8 秒期间加入 1.5 的常量外部扰动,自 8 秒起引入幅值为 0.5 的正弦交变干扰,全面模拟复杂工业环境。
- 核心控制环节:
*
跟踪微分器 (TD):通过离散最速控制综合算法安排过渡过程,输入目标值,输出平滑的跟踪值及其导数,并通过滤波因子减少噪声。
*
扩张状态观测器 (ESO):基于系统的输入量和输出量,利用三维状态方程实时观测系统状态。其第三个状态专门用于捕捉并估算系统受到的总扰动。
*
非线性状态误差反馈 (NLSEF):将 TD 输出的期望状态与 ESO 观测得到的估计状态进行对比,通过非线性组合函数计算初步控制量。
- 扰动补偿与限幅:将初步控制量与 ESO 估算的扰动值进行反相叠加,抵消干扰影响;同时对最终的控制量输出设置幅度限制(上下限各为 20),以符合实际硬件执行器的物理约束。
- 受控对象仿真:建立了一个二阶线性动力学模型(加速度等于控制增益乘以控制量加外部扰动),通过欧拉离散积分方法实时计算系统的速度和位移输出。
关键算法与算法细节
- 非线性函数 (fal):这是 ADRC 中的核心数学组件,用于处理反馈误差。当误差较大时,它以幂指数形式平滑变化,防止控制量过饱和;当误差进入预设的线性区间(delta)时,它切换为线性比例关系,从而避免在零点附近的数值高频振荡,提升系统稳定性。
- 最速控制综合算法 (fst):用于 TD 模块的更新。该算法解决了离散系统中速度和位移匹配的最优控制问题,确保跟踪过程既无超调又能实现最快达到。它通过复杂的逻辑判断处理状态平面上的开关曲线,动态调整输出。
- 扰动补偿机制:系统将 ESO 观测得到的第三状态(总扰动估计值)除以控制增益后,直接从控制环节中减去。这种“前馈+反馈”的结构使得该控制器在物理意义上具有自适应抵消干扰的能力。
使用方法- 启动 MATLAB 软件。
- 将控制逻辑代码保存并加载至工作空间。
- 直接运行仿真函数。
- 程序将自动执行 1000 步迭代计算,并在运行结束后弹出仿真结果图表。您可以观察红色的系统输出曲线如何紧密贴合蓝色的 TD 轨迹,并分析 ESO 在应对 4 秒和 8 秒扰动切换时的收敛速度。