PID的算法改进 #本系列用来记录和输出自己学习PID的记录看的是江协)#out(t) Kp * error(t) Ki *error(t)dt Kd *1、积分限幅防止积分饱和是指对误差的积分累加器∑error设置最大值 Imax 和 Imin而不是限制乘完 Ki 后的结果。它的作用是防止执行器达到物理极限如PWM满幅后积分项仍在疯狂累加。当实际值因负载过重无法跟上目标值时积分项会将累加器撑爆导致系统在目标值突变时产生巨大的滞后和震荡。通过在累加器上设置“天花板”可以有效扼制这种情况保证系统在饱和状态下依然能快速恢复控制。// 1. 累加误差原始数据integral_sum error;// 2. 【关键步骤】在这里限幅限制的是累加和而不是乘完Ki的结果if (integral_sum INTEGRAL_MAX) integral_sum INTEGRAL_MAX;if (integral_sum INTEGRAL_MIN) integral_sum INTEGRAL_MIN;// 3. 最后再乘上 Ki 系数输出integral_output Ki * integral_sum;2、积分分离设置一个误差阈值当误差值很大时候关闭I项的控制使用PD控制当误差小的时候打开I项使用PID控制。其主要式解决过冲或者超调的问题。那么主要是解决的呢当我们设置PI控制后P向目标值进发I累计误差当P冲到顶了I项误差累积加起来了I项就会有惯性了I是之前所有时刻的误差累积就会超出目标值就产生了超调当我们设置了分离后不让I提早加入只有P到头后I在加入累积的误差很小就不会产生了。当然了如果P给我过打也会产生超调if (abs(error) 阈值){integral 0; // 或者不进行累加// 此时输出 P项 D项}else{integral Ki * error; // 只有接近目标时才累积}3、变速积分变速积分的实质是根据误差大小动态调节积分项的有效增益Ki * α。误差越大积分增益被压缩得越小误差越小积分增益恢复得越大。引入一个动态系数 α阿尔法取值范围 0 ~ 1。最终参与积分的有效系数 Ki × α误差大时α 趋近于 0相当于把 Ki 临时缩小了。误差小时α 趋近于 1相当于 Ki 满血复活。学到这里我们知道误差越大Ki越小误差越小Ki越大但是我就有个问题不应该是误差越大Ki越大误差越小Ki越小我这的理解对于P项来理解是没有问题但是放在I项来理解就错完了因为假设目标值是100P项为推到了95我们距离目标值只剩下5那么这个时候我们是不是应该让积分项工作呢所以I项只能是趋向1而不能是0当为0时候I项不工作的输出值就一直停留在了95.#define ERROR_MAX 100.0 // 设定误差的最大范围#define ERROR_MIN 10.0 // 设定误差的最小范围死区边界float get_variable_coefficient(float error){float abs_err fabs(error);if (abs_err ERROR_MAX)return 0.0; // 误差极大放弃积分防止超调else if (abs_err ERROR_MIN)return 1.0; // 误差很小全额积分消除静差else// 线性渐变 (误差越大系数越接近0)return (ERROR_MAX - abs_err) / (ERROR_MAX - ERROR_MIN);}// 在主循环中float alpha get_variable_coefficient(error);integral Ki * alpha * error; // 积分累加使用了变速系数

相关新闻

最新新闻

no-mistakes代理指南:9种AI编程代理支持清单与选型建议

no-mistakes代理指南:9种AI编程代理支持清单与选型建议

no-mistakes代理指南:9种AI编程代理支持清单与选型建议 【免费下载链接】no-mistakes git push no-mistakes 项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes no-mistakes 是一个本地 Git 推送门禁工具,在你执行 git push no-mist…

2026/8/29 14:46:53
RTK性能解密:单线程同步Rust设计为何能把开销压到10ms以内

RTK性能解密:单线程同步Rust设计为何能把开销压到10ms以内

RTK性能解密:单线程同步Rust设计为何能把开销压到10ms以内 【免费下载链接】rtk CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies 项目地址: https://gitcode.com/GitHub_Trending/rtk4/…

2026/8/29 14:46:53
GM(1,1)灰色预测模型:原理、代码实现与数学建模实战指南

GM(1,1)灰色预测模型:原理、代码实现与数学建模实战指南

1. 从“信息贫瘠”到“趋势洞察”:灰色模型的独特价值 在数学建模的世界里,我们常常面临一个尴尬的境地:手头的数据少得可怜,或者数据本身充满了不确定性,就像雾里看花。传统的统计模型,比如回归分析、时间…

2026/8/29 14:46:53
5分钟上手MarkItDown文档转Markdown指南

5分钟上手MarkItDown文档转Markdown指南

5分钟上手MarkItDown文档转Markdown指南 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown MarkItDown 是一个轻量级 Python 工具,把 PDF、Wo…

2026/8/29 14:46:53
AlGaN/GaN HFET五参数模型原理与实操指南

AlGaN/GaN HFET五参数模型原理与实操指南

1. 这不是普通晶体管模型:AlGaN/GaN HFET五参数模型到底在解决什么问题? 你手头刚拿到一份器件仿真报告,里面赫然写着“AlGaN/GaN HFET五参数模型拟合误差<3.2%”,但翻遍全文没找到这五个参数究竟是哪几个、为什么偏偏…

2026/8/29 14:46:53
扫描报纸变可检索的 Markdown:PaddleOCR 文档数字化实操指南

扫描报纸变可检索的 Markdown:PaddleOCR 文档数字化实操指南

扫描报纸变可检索的 Markdown:PaddleOCR 文档数字化实操指南 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 1…

2026/8/29 14:41:52