新闻详情

新闻详情

首页 / 资讯中心 / 详情

LADRC与PID的Simulink仿真对比:原理、参数整定与抗扰性能分析

发布时间:2026/9/12 12:00:01来源:尧图网络
LADRC与PID的Simulink仿真对比:原理、参数整定与抗扰性能分析
做控制算法选型的时候很多人会在LADRC和PID之间纠结。我一开始也觉得LADRC听起来高大上做仿真验证时应该直接用最新方法碾压老一代PID。但真正把两个控制器在Simulink里搭出来对比之后才意识到没有绝对“更好”的控制器只有更清楚自己控制对象和需求的人。这篇博客我就用一次完整的Simulink仿真对比过程把LADRC与PID的建模思路、参数整定、结果分析和新手容易踩的坑全部说清楚给正在做入门学习的同学一条可以直接抄的路线。1. 为什么要把LADRC和PID放到同一张图里比1.1 从PID的局限说起PID控制器统治工业现场几十年比例、积分、微分三个环节确实简单粗暴又有效。但你实际操作时会发现PID的“好”是有前提的它的参数是根据被控对象的标称模型整定出来的。一旦对象特性发生变化比如负载突变、摩擦非线性、模型参数漂移PID性能就会明显下降。我自己做过的温度控制项目里最典型的情况就是——冬天和夏天室温不同同一套PID参数出来的曲线完全是两个样子。LADRC的提出者韩京清先生当初的切入点也在这里经典PID把误差的过去、现在、未来趋势都用来构造控制律但本质上没有把“对象本身的内在动态”和“外部扰动”分开处理。LADRC的核心思路是把系统内部不确定性和外部扰动统一当作一个“总扰动”然后通过扩张状态观测器把这个总扰动估计出来再进行前馈补偿。这样一来系统对外表现就像一个“干净”的积分串联型对象控制难度大大降低。这次仿真对比的核心目的就是想直观地看到两种控制器在同一个被控对象、同样的仿真环境下跟踪性能和抗扰性能的差异到底有多大差距是怎么来的。1.2 为什么选择用Simulink来做这个对比Simulink做控制算法仿真有几个没法替代的优势。首先它支持连续系统和离散系统混合建模PID和LADRC都可以用图形化模块搭出来不用写一堆底层求解代码。其次Simulink里的示波器Scope、数据记录To Workspace模块可以直接把仿真曲线导出到MATLAB工作区方便后续用脚本做定量分析比如计算超调量、调节时间、积分绝对误差IAE等。更重要的是Simulink的变步长求解器如ode45对这类带观测器的控制系统非常友好。LADRC的扩张状态观测器本质上是几个积分环节的组合在连续域仿真中只要带宽参数设计合理很少出现数值发散的问题。我们不需要为仿真写任何插件原生模块就够用。当然需要说明的一点是Simulink里搭LADRC没有现成的库可以直接拖观测器和控制律都需要自己用基本模块拼这个过程虽然麻烦一点但也逼着你去理解每一个信号流其实对入门学习帮助很大。2. 两套控制器的控制逻辑到底差在哪2.1 PID用误差的三个“历史维度”来纠正PID控制律的数学形式大家都熟u(t) Kp * e(t) Ki * ∫e(t)dt Kd * de(t)/dt其中e(t)是期望值与实际输出之间的误差。比例项负责“现在”误差大就给大动作积分项负责“过去”把小误差慢慢累积起来消除稳态偏差微分项负责“未来趋势”看到误差增长趋势就提前踩刹车抑制超调。用生活化的类比来说PID控制器就像一个经验丰富但比较保守的司机看当前离前车距离P、看过去一段时间平均跟车距离I、再感受一下相对速度的趋势D来决定踩油门还是踩刹车。问题在于这位司机完全不看路面的坡度、风力这些外部干扰只靠跟车误差来判断。如果突然上坡就得等到出现明显误差后控制器才反应过来这就是PID抗扰性能偏弱的本质原因。PID的工程调参也有成熟套路。我常用的做法是先设Ki和Kd为0逐步加大Kp让系统临界振荡然后按齐格勒-尼科尔斯经验公式推算Ki和Kd的初值最后手动微调。这个方法在Simulink仿真里实现起来非常直观后面我会具体演示。2.2 LADRC把未知扰动“估出来”再干掉LADRC的核心由三个部分组成扩张状态观测器LESOLinear Extended State Observer、线性状态误差反馈控制率LSEF和扰动补偿环节。我尽量不堆公式把逻辑原理说清楚。首先我们把被控对象写成状态空间表达x1_dot x2 x2_dot f(t) b0 * u y x1这里的f(t)就是“总扰动”其中包括了系统内部的未建模动态、参数变化也包括外部负载扰动。b0是控制增益的估计值u是控制器输出。这里x1相当于对象输出x2是输出的一阶导数。LESO做的事情就是把x1、x2以及总扰动f(t)同时估计出来z1_dot z2 β1 * (y - z1) z2_dot z3 β2 * (y - z1) b0 * u z3_dot β3 * (y - z1)其中z1跟踪yz2跟踪x2z3跟踪总扰动f。三个β参数如果按带宽法配置就简化为β13ωoβ23ωo²β3ωo³ωo就是观测器带宽。然后控制律设计为u (u0 - z3) / b0其中u0是线性反馈控制率给出的中间量。只要LESO能把z3估计得足够准总扰动f就被补偿掉了原来的复杂对象被“改造”成一个积分串联对象剩下的工作就是用一个简单的PD控制器来控制u0。再引入控制器带宽ωc之后u0 ωc² * (r - z1) - 2ωc * z2这就是二阶系统最常见的极点配置形式。这里推荐一篇我反复研读过的高质量文档对LESO的推导和带宽整定规则讲得尤其透彻链接放在文末入门阶段读两三遍会有质的提升。2.3 一张表看清两者差异对比维度PIDLADRC依赖模型程度低只需要误差信息需要知道对象的相对阶和b0估计抗扰动机制被动抑制等误差出现才动作主动估计扰动并前馈补偿需要整定的参数Kp、Ki、Kdωc、ωo、b0参数物理含义不太明确靠经验整定带宽、观测速度、控制增益物理含义清晰对模型失配的适应能力较弱参数失效后性能明显下降较强b0有一定容错空间实现复杂度一个模块就搞定需要自己搭LESO和反馈律要费点功夫看完这张表应该就理解了我为什么坚持要动手仿真对比因为光看表还是体会不到“主动估计扰动”和“被动等待误差”之间的动态性能差别。3. Simulink仿真模型搭建全过程3.1 确定被控对象和实验条件这次仿真我选了一个典型的欠阻尼二阶系统做被控对象G(s) 10 / (s² 3s 10)这个对象的无阻尼自然频率约等于3.16rad/s阻尼比约0.474阶跃响应会有大概20%左右的超调。它代表了工程里很常见的一类对象——本身不够稳、又有一定惯性很适合用来对比PID和LADRC谁调得更快更好。仿真条件统一设置如下仿真时间10s求解器ode45变步长最大步长0.01s输入信号1s时加入幅值为1的阶跃信号扰动注入4s时在对象输入端叠加幅值为0.5的阶跃扰动为了公平对比两种控制器都用连续域实现不做离散化处理。被控对象保持不变控制器分别切换。Scope模块记录三个信号给定值、PID输出、LADRC输出对应的系统响应。3.2 搭建PID回路与整定步骤PID控制器在Simulink里最省事的方式就是直接拖一个PID Controller模块设置好控制器类型为PIDTime domain选择Continuous time然后勾选输入和输出限幅。不过为了对比公平我建议把PID离散成三个独立增益用Gain增益模块搭出来这样能看清每个环节的信号流不至于黑盒。结构是这样的Sum模块计算误差e r - y三路并联一路乘Kp一路经过Integrator后乘Ki一路经过Derivative后乘Kd三路输出加和得到u实际整定中我先用齐格勒-尼科尔斯Z-N响应曲线法做初整。让系统开环跑一次阶跃响应得到等效的滞后时间L和过程时间常数T。对一阶近似模型经验公式给出Kp1.2T/(L)Ti2LTd0.5L。按这个方法得到Kp初始值之后再把Kd从0开始加观察超调抑制情况最后微调Ki消除稳态误差。我这里最终整定出来的效果比较稳定的参数是Kp8.5Ki2.5Kd1.2。在1s阶跃输入下稳态误差为零超调约15%调节时间大概在2.5s左右。你可以把这个结果作为参考基线但自己搭建的时候不一定要死磕同一组参数关键是理解每个参数调整时曲线是怎么变化的。3.3 搭建LADRC回路与LESO参数配置LADRC部分需要自己搭两个子系统LESO观测器和控制律。我习惯把它们封装成两个Subsystem保持主模型整洁。LESO子系统内部结构按公式来Gain模块系数β1乘以误差(y - z1)后与z2相加经过Integrator得到z1Gain模块系数β2乘以误差后与z3和b0*u相加经过Integrator得到z2Gain模块系数β3乘以误差后经过Integrator得到z3控制律子系统稍微简单一点输入期望值r、估计值z1和z2、扰动估计z3u0 ωc² * (r - z1) - 2 * ωc * z2最终输出u (u0 - z3) / b0把b0初始选为对象的标称增益10。然后选观测器带宽ωo30rad/s控制器带宽ωc10rad/s。按经验规则ωo一般取ωc的3到10倍这里30倍其实偏高一点不过对仿真连续系统问题不大。搭建完成后用Step模块给定值用另一个Step模块通过Sum加在对象输入端做扰动注入。整个模型里面最关键的信号测量点是z3你可以把它接到Scope里直接看它能不能迅速逼近真实总扰动f(t)。能看出来就说明LESO设计成功了。4. 仿真结果对比响应、抗扰和鲁棒性4.1 阶跃跟踪超调与快速性的取舍先看不加扰动时两种控制器的阶跃响应。PID的参数是按常规工程经验整定的得到约15%的超调响应也算利落系统在2.5s左右达到稳态。LADRC这边把ωc调到10时曲线明显更“文雅”超调基本压到5%以下调节时间大约1.8s比PID快了将近30%。这个结果其实不意外因为LADRC的反馈结构相当于给系统做了一个极点配置把闭环主导极点直接设计成带阻尼的二阶极点响应特性在设计阶段就已经被“安排”好了。PID虽然也能通过加大Kd来压超调但微分项对测量噪声太敏感工程上不敢加得太大这是结构性的取舍。如果你在实际仿真中发现LADRC超调还是很大大概率是ωc设置过高或ωo设置过低导致扰动估计滞后进入反馈回路。把ωc调低一点或者把ωo调高一档通常都能改善。4.2 抗扰动加一个阶跃扰动看谁先稳住抗扰动能力是这次对比最精彩的部分。在4s时给对象输入端加一个0.5的阶跃扰动PID控制的响应曲线出现了明显凹陷最大动态偏差大约0.35经过约3s才逐渐恢复稳态。原因在于PID要等扰动作用到输出端形成了误差才做出反应这是一个“先受伤再疗伤”的过程。LADRC的表现完全是另一个水平。由于LESO的扩张状态观测器能够在一两个采样周期内估计出持续扰动量并在控制律里直接补偿系统输出的最大偏差只有0.08左右而且1s之内就基本回到给定值。也就是说扰动还没在输出端形成明显影响控制器就已经把它“消化”掉了。这一部分就是LADRC最大的卖点。对于实际工程中经常遇到负载突变、电网波动这类强扰动场景LADRC的优势是碾压性的。4.3 模型失配当被控对象“不听话”时为了进一步验证两种控制器的鲁棒性我把被控对象换成了参数偏差较大的模型G(s) 15 / (s² 5s 12)这相当于对象增益增大了50%时间常数也变了但控制器参数都保持不变。结果PID的性能明显恶化超调增大到30%以上系统的振荡感也变强了。原因很直观PID的三个参数是基于原模型整定的模型一变整定基础就失效了。LADRC这边由于b0仍然用原来的10模型增益实际变成了15b0低估了控制增益按道理会带来一定稳态偏差和振荡但实际仿真显示超调只增加到了8%左右整体性能仍然远优于PID。这说明LESO把模型失配的那部分动态也当作“总扰动”的一部分估计并补偿掉了控制系统的鲁棒性确实强了一个档次。当然要强调一个边界b0偏差不能太离谱。如果b0偏差超过3倍以上LESO的带宽增益会把估计误差放大导致控制量振荡甚至发散。实际工程中对b0的估计至少要保证在一个数量级内。5. 新手最容易踩的坑与排查经验5.1 代数环、求解器与Scope显示问题搭LADRC模型时最容易遇到的就是代数环报错。由于LESO里z3的计算直接依赖误差(y - z1)而y又是由被控对象反馈回来的如果不加任何处理就可能出现代数环。解决的办法有两个一是在反馈回路里加一个Memory模块把连续信号延迟一拍打破代数环二是直接改用法把整个被控对象和LESO改造成离散系统。对于入门学习我更推荐加Memory模块简单直接代码都不用改。不过要注意Memory会引入一拍延迟在高频段对系统有一定影响实际工程中要评估这个延迟是否在可接受范围内。求解器设置也有讲究。如果你用固定步长求解器步长最好不要超过系统最小时间常数的十分之一。我的模型里LESO带宽ωo30rad/s对应的观测器时间常数约0.033s所以固定步长至少要小于0.003s才能保证仿真不飘。变步长求解器虽然可以自适应步长但也要把最大步长限制在0.01s以内否则在信号突变处比如4s加扰动那一下很容易产生数值尖峰。Scope波形显示的小问题也提一下如果两个控制器的输出曲线用同一个Scope显示默认每个输入端口一个坐标轴看起来不方便对比。正确做法是把两条响应曲线先通过Mux合成一路信号再进Scope这样两条曲线会画在同一个坐标轴里对比效果直观得多。5.2 LADRC参数敏感性ωo和b0怎么配才稳很多新手调到LADRC时容易陷入“带宽越大越好”的误区。理论上观测器带宽ωo越高LESO估计扰动越快但实际仿真中你会发现ωo超过一定值之后z3开始出现高频振荡甚至把噪声放大到完全淹没有效信号。我在自己的仿真中测试过ωo从30加到80扰动估计的跟踪速度确实更快但控制量的高频抖动也变得非常明显看起来就像PID加了过大的Kd一样。经验上的建议是这样先从ωc开始调把ωc作为主导参数决定响应速度然后逐步加大ωo观察扰动抑制效果的变化加到效果不再明显或控制量抖动剧烈时往回调一点就行。b0的整定也要注意如果你的b0与实际对象增益有偏差系统在阶跃响应初期会出现类似于“过补偿”或者“欠补偿”的瞬态跳变。这时候不要急着改ωo和ωc先把b0往实际值靠一靠再观察。5.3 PID调参过程中的几个实用心得PID调参我踩过不少坑最深刻的一点是千万不要同时动三个参数。新手常见的操作是觉得响应慢了就加Kp发现超调大了又加Kd最后稳态误差消不掉再加Ki三个参数互相影响越调越乱。我自己的习惯是严格分阶段先把Kd和Ki设为零只调Kp让系统稳定且有一定超调再加Kd压超调最后加Ki消稳态误差。每个阶段只看一个参数的影响曲线变化方向才是可解释的。还有一个容易被忽略的点PID Controller模块中的微分项在阶跃输入瞬间会给控制量一个很大的尖峰这就是所谓的微分冲击。在实际工程里这个尖峰很容易触发执行机构饱和。仿真时遇到这个问题可以在误差信号进微分器之前加一个低通滤波器也就是给Kd配一个一阶惯性环节既能保留微分作用又不会放大高频噪声。5.4 几条快速排查清单异常现象可能原因排查动作仿真报代数环错误LESO反馈回路信号没有打拍在反馈回路添加Memory模块LADRC输出高频振荡ωo或b0设置偏大降低ωo检查b0与实际增益是否匹配PID响应静差消不掉Ki太小或输出达到饱和限幅增大Ki检查Saturation是否限制控制器输出阶跃瞬间控制量尖峰过大微分项冲击加低通滤波器或改用PID Controller模块的滤波系数N扰动抑制效果两者差别不大扰动位置不对或扰动幅度太小确认扰动加在被控对象输入端而不是系统输出端LADRC跟踪速度偏慢ωc偏小或b0偏大先加大ωc再调整b0至合适范围这篇文章从控制原理、Simulink建模到仿真结果分析和避坑经验基本覆盖了LADRC与PID对比学习的完整链路。最后再分享一个小技巧把两种控制器的误差绝对值积分IAE在MATLAB里用一段脚本计算出来做成柱状图对比。这样你就不只是“看曲线觉得LADRC好”而是能拿出定量的数据说明好在哪、好多少。仿真对比最大的意义不是证明谁更强而是让你搞清楚每一种控制方法适合什么场景、在什么条件下会失效这才是做入门研究最值得沉淀的东西。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于 InternLM 与 LangChain 搭建本地知识库助手:从向量库构建到 Gradio Web Demo 全流程实战 2026/9/12 12:36:06

基于 InternLM 与 LangChain 搭建本地知识库助手:从向量库构建到 Gradio Web Demo 全流程实战

基于 InternLM 与 LangChain 搭建本地知识库助手:从向量库构建到 Gradio Web Demo 全流程实战 【免费下载链接】self-llm 《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型&#xff0…

阅读更多 →
SpringSecurity与JWT实现安全认证的最佳实践 2026/9/12 12:36:06

SpringSecurity与JWT实现安全认证的最佳实践

1. 为什么需要SpringSecurity与JWT的权限认证组合 在现代Web应用开发中,认证(Authentication)和授权(Authorization)是两个核心的安全需求。SpringSecurity作为Spring生态中的安全框架,提供了强大的认证和授权能力,而JWT(JSON Web Token)则是…

阅读更多 →
纯电动汽车前向仿真Simulink模型解析与参数调优 2026/9/12 12:36:06

纯电动汽车前向仿真Simulink模型解析与参数调优

简介:针对纯电动汽车动力系统建模与仿真需求,这份完整版Matlab/Simulink模型以电池模型和电机模型为核心,并内置前向仿真框架,面向整车性能分析、控制策略优化及系统集成等应用场景,尤其适合汽车工程专业师生、电驱动系…

阅读更多 →
数据仓库调度完整指南:用DolphinScheduler 5分钟跑通ETL自动化 2026/9/12 12:36:06

数据仓库调度完整指南:用DolphinScheduler 5分钟跑通ETL自动化

数据仓库调度完整指南:用DolphinScheduler 5分钟跑通ETL自动化 【免费下载链接】dolphinscheduler Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code 项目地址: https://gitcode.co…

阅读更多 →
华为S5700链路聚合配置与优化实战 2026/9/12 12:36:06

华为S5700链路聚合配置与优化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI全栈开发实战:技术选型、RAG、Agent与生产化全攻略 2026/9/12 12:33:05

AI全栈开发实战:技术选型、RAG、Agent与生产化全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞