PID控制原理

PID控制算法——基本原理(附MATLAB程序) PID 控制器是一种经典且有效的控制策略,通过比例、积分和微分三部分的调节,能够提供稳定的控制输出。虽然其设计和调节相对简单,但在实际应用中需要根据系统的具体需求进行调整,以实现最佳性能。 阅读详情

原创者微信公众号




PID算法可以说是在自动控制原理中比较经典的一套算法,在现实生活中应用的比较广泛。


大学参加过电子竞赛的朋友都应该玩过电机(或者说循迹小车),我们要控制电机按照设定的速度运转,PID控制在其中起到了关键的作用。


说来惭愧,大学这门课程学的不咋滴,老师讲的课基本没听进去过。直到后面接触竞赛,算是对PID有了很基础的一点点认识,直到现在工作实际应用的比较广泛才知道它的重要性。所以,这里特地回顾一下。


Ⅰ什么是PID

PID,即比例Proportion、积分Integral和微分Derivative三个单词的缩写。


闭环自动控制技术是基于反馈的概念以减少不确定性,在闭环自动控制原理中,我们把它叫做“PID控制器”,拿控制电机来说,参考下面模型:



下面引用一段网上经典的话:

在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在我所接触的控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧,何等的简单!简单的不是原始的,简单的也不是落后的,简单到了美的程度。


ⅡPID原理

常规的模拟 PID 控制系统原理框图如下:


该系统由模拟 PID 控制器和被控对象组成。


上面框图中, r(t) 是给定值, y(t) 是系统的实际输出值,给定值与实际输出值构成控制偏差e(t) = r(t) − y(t).


e(t) 作为 PID 控制的输入, u(t)作为 PID 控制器的输出和被控对象的输入。 所以模拟 PID 控制器的控制规律为:



三个重要的参数:

Kp:控制器的比例系数.

Ti:控制器的积分时间,也称积分系数.

Td:控制器的微分时间,也称微分系数.


1、P - 比例部分

比例环节的作用是对偏差瞬间作出反应。偏差一旦产生控制器立即产生控制作用, 使控制量向减少偏差的方向变化。 控制作用的强弱取决于比例系数Kp, 比例系数Kp越大,控制作用越强, 则过渡过程越快, 控制过程的静态偏差也就越小; 但是Kp越大,也越容易产生振荡, 破坏系统的稳定性。 故而, 比例系数Kp选择必须恰当, 才能过渡时间少, 静差小而又稳定的效果。


2、I  - 积分部分

从积分部分的数学表达式可以知道, 只要存在偏差, 则它的控制作用就不断的增加; 只有在偏差e(t)=0时, 它的积分才能是一个常数,控制作用才是一个不会增加的常数。 可见,积分部分可以消除系统的偏差。


积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数Ti越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡; 但是增大积分常数Ti会减慢静态误差的消除过程,消除偏差所需的时间也较长, 但可以减少超调量,提高系统的稳定性。


当 Ti 较小时, 则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定Ti 。


3、D - 微分部分

实际的控制系统除了希望消除静态误差外,还要求加快调节过程。在偏差出现的瞬间,或在偏差变化的瞬间, 不但要对偏差量做出立即响应(比例环节的作用), 而且要根据偏差的变化趋势预先给出适当的纠正。为了实现这一作用,可在 PI 控制器的基础上加入微分环节,形成 PID 控制器。


微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入, 将有助于减小超调量, 克服振荡, 使系统趋于稳定, 特别对髙阶系统非常有利, 它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分, 或在微分起作用之前先对输入信号进行滤波。


ⅢPID算法代码

 PID 控制算法可以分为位置式 PID 和增量式 PID 控制算法。


两者的区别:

(1)位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大;


(2)增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。


(3)由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。



下面给出公式直接体现的C语言源代码(请结合项目修改源代码):

1.位置式PID


  1. typedef struct
    {
     float Kp;                       //比例系数Proportional
  2.  float Ki;                       //积分系数Integral
  3.  float Kd;                       //微分系数Derivative
  4.  float Ek;                       //当前误差
  5.  float Ek1;                      //前一次误差 e(k-1)
  6.  float Ek2;                      //再前一次误差 e(k-2)
  7.  float LocSum;                   //累计积分位置
    }PID_LocTypeDef;

    /************************************************
  8. 函数名称 : PID_Loc
  9. 功    能 : PID位置(Location)计算
  10. 参    数 : SetValue ------ 设置值(期望值)
  11.            ActualValue --- 实际值(反馈值)
  12.            PID ----------- PID数据结构
  13. 返 回 值 : PIDLoc -------- PID位置
  14. 作    者 : strongerHuang
  15. *************************************************/
    float PID_Loc(float SetValue, float ActualValue, PID_LocTypeDef *PID)
  16. {
     float PIDLoc;                                  //位置
  17.  PID->Ek = SetValue - ActualValue;
  18.  PID->LocSum += PID->Ek;                         //累计误差
  19.  PIDLoc = PID->Kp * PID->Ek + (PID->Ki * PID->LocSum) + PID->Kd * (PID->Ek1 - PID->Ek);
  20.  PID->Ek1 = PID->Ek;  return PIDLoc;
  21. }


2.增量式PID



  1. typedef struct
    {
     float Kp;                       //比例系数Proportional
  2.  float Ki;                       //积分系数Integral
  3.  float Kd;                       //微分系数Derivative
  4.  float Ek;                       //当前误差
  5.  float Ek1;                      //前一次误差 e(k-1)
  6.  float Ek2;                      //再前一次误差 e(k-2)
    }PID_IncTypeDef;

    /************************************************
  7. 函数名称 : PID_Inc
  8. 功    能 : PID增量(Increment)计算
  9. 参    数 : SetValue ------ 设置值(期望值)
  10.            ActualValue --- 实际值(反馈值)
  11.            PID ----------- PID数据结构
  12. 返 回 值 : PIDInc -------- 本次PID增量(+/-)
  13. 作    者 : strongerHuang
  14. *************************************************/
    float PID_Inc(float SetValue, float ActualValue, PID_IncTypeDef *PID)
  15. {
     float PIDInc;                                  //增量
  16.  PID->Ek = SetValue - ActualValue;
  17.  PIDInc = (PID->Kp * PID->Ek) - (PID->Ki * PID->Ek1) + (PID->Kd * PID->Ek2);
  18.  PID->Ek2 = PID->Ek1;
  19.  PID->Ek1 = PID->Ek;  return PIDInc;
  20. }
如何使你的直流电机闭环?(PID讲解) 看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解 阅读详情

相关推荐

pid调节软件_PID控制原理 二(PID使用详解)

本文灵感来自于 仪表云 视频:“10分钟了解PID工作流程”,下面附上连接Sina Visitor System​weibo.com笔者属于控制入门,文中若有不当之处还请读者指出,欢迎大家讨论!---------------------------------------------正文---------------------------------------------在 “PID控制原理 ...

weixin_39702483的博客 2701

PID控制原理(全干货)

PID控制原理(全干货) 主要内容: 1.常用的控制算法与PID控制算法的异同点; 2.PID控制算法的理论分析 3.基于单片机的PID算法实现 4.PID算法的工程应用的一些注意事项 5.演示板电路分析 6.PID算法C语言实现—基于ARM-CortexM3(STM32)的增量式PID温度控制 一、常用的控制算法: 1.控制系统基本结构  控制目的: 控制的根本目的就是要使控制对象当前的状态值与用户的设定值相同(最大限度的接近)。 基本思想: 用户设定值SV与被控制对象当前的值PV两者同

zxysm的博客 3万+

PID控制原理基本介绍(图解).docx

PID控制原理基本介绍(图解)

PID原理及控制算法详解

PID是应用最广泛的闭环控制方法之一,是一种常用的反馈控制方法,对于每个PID控制器由三个部分组成:比例控制(Proportional)、积分控制(Integral)和微分控制(Derivative)。

TENET123的博客 3万+

FREERTOS+LWIP+IAP实现TCP、HTTP、网页访问并固件升级、更新配置 (三)lwip实现httpd服务并在web访问

在前两篇文章中配置freeRTOS和,并实现了TCP、UDP的通信协议,现在终于轮到重头戏lwip的httpd服务,LWIP官方例程中是有很多自带的网页的,但是远远不够满足实际项目的使用需求,因此我也是踩了很多坑,从前端网页制作,到网络通信的实现,到后端数据处理,从头开始学起,也是学习到了很多没接触过的东西,本章将搭建LWIP的HTTP服务使得浏览器可以访问WEB。

wangjiaheng0716的博客 2963

Android车载多屏开发实战:从零搭建同显/异显Demo(附源码)

本文详细介绍了Android车载多屏开发的实战经验,从零搭建同显/异显Demo,涵盖多屏模拟、核心API调用、同显/异显架构实现及性能优化等关键环节。通过C++构建完整开发链路,帮助开发者快速掌握多屏同显和多屏异显技术,提升智能座舱系统的交互体验。附源码供参考。

weixin_29233857的博客 403

浅谈控制原理以及PID

为有信号系统基础的同学提供一些控制原理入门理解

sherlock_cp的博客 1182

Git Worktree + Claude Code:多终端并发开发完全实战

深入讲解如何使用 Git Worktree 配合多终端 Claude Code 实现并发开发,通过实战案例展示如何在 Android 开发中提升 2-3 倍效率,彻底告别等待 AI 的问题。

Cheson的专栏 1201

PID控制原理及应用(一)

此时加入D控制器,D控制器的作用是抑制变化,当无人机倾角逐渐向0接近时,D控制器会根据角速度成比例的实时输出一个负的控质量(与P控制器的输出相反),角速度越大这个负控质量就会越大,由此我们可以知道,此时无人机倾角接近0时的角速度肯定比没有加D控制器时的小,实际上,如果参数适中,无人机会很快收敛,如图6,然后达到水平状态,即控制任务完成。随着i控制器的不断累加,M会逐渐靠近T,直到等于T,如图3,此时i控制器的输出固定,控制任务完成。这里以无人机的姿态控制为例,如图4,假设此时无人机有一个倾角。

LLZ15827447646的博客 2646

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 390

学习笔记|多组率卡方检验和Fisher确切法|个案加权|规范表达|《小白爱上SPSS》课程:SPSS第十六讲 | 多组率卡方检验和Fisher确切法

学习笔记|多组率卡方检验和Fisher确切法|个案加权|规范表达|《小白爱上SPSS》课程:SPSS第十六讲 | 多组率卡方检验和Fisher确切法

Medlar_CN的博客 2962

【PID控制原理及其算法】

本文主要介绍了经典的pid控制原理及其原理

gogo0707的博客 2万+

基于FFT+BP神经网络/决策树的轴承故障诊断

基于FFT+BP神经网络/决策树的轴承故障诊断

天天酷科研的博客 131

控制c 舵机的pid_PID控制原理 二(PID使用详解)

本文灵感来自于 仪表云 视频:“10分钟了解PID工作流程”,下面附上连接Sina Visitor System​weibo.com笔者属于控制入门,文中若有不当之处还请读者指出,欢迎大家讨论!---------------------------------------------正文---------------------------------------------在 “PID控制原理 ...

weixin_39638309的博客 9898

Autosar PNC网络管理配置-UserData的使用

之前配置的网络管理报文中的data都由ComM管理,后面客户新增了需求,最后两个byte需要发送,本文记录一下相关配置的修改能配置生成的,尽量不手码,毕竟手写一堆bug~

赞的博客 1903

10步掌握!跨国企业在MySQL中实现数据主权的秘诀 vs. 传统方法,你选对了吗?

首先,我们要明确“数据主权”这一概念。简单来说,它指的是国家对其境内产生的所有类型的数据拥有绝对控制权。这意味着即使数据被存储在国外服务器上,只要该数据来源于某国,那么该国政府就有权对其进行监管。对于跨国公司来说,这就要求它们必须严格遵循不同国家关于数据保护的规定,如欧盟的GDPR、美国的《云法案》以及中国的《网络安全法》等。

java专栏 714

PID控制原理、参数整定和Pure Pursuit、Stanley控制原理及代码

本文主要讲解常用的控制算法PID控制的原理、参数整定以及斯坦利控制的原理,最后讲解PID、Stanley控制控制的代码。以上就是今天要讲的内容,本文介绍了PID控制、Pure Pursuit 控制和Stanley控制,同时讲解了比较常用的PID控制和Stanley控制的代码。

weixin_44924725的博客 3864

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【过程控制系统】第4章 PID控制原理,数字PID控制算法

第4章 PID控制原理4.l PID控制的特点 4.2 比例控制(P控制) 4.3 比例积分控制(PI控制) 4.4 比例积分微分控制(PID控制) 4.5 数字PID控制 4.6 利用MATLAB实现PID控制规律 本章小结PID控制是比例(Proportional)积分(Integral)微分(Differential)控制的简称。在生产过程自动控制的发展历程中,PID控制是历史最久、应用最广、适应性最强和控制效果良好的一种基本控制方式。

周文龙的博客 3307

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PID控制原理解释

PID控制原理解释 文章目录PID控制原理解释0.前言1.控制原理图解释2.算法分析3.PID数学模型解释 0.前言 参考网址:http://blog.gkong.com/liaochangchu_117560.ashx 1.控制原理图解释 PID控制图 2.算法分析 3.PID数学模型解释 重点学习位置式PID控制,增量式PID控制 备注:原创不易,转载请说明出处 感谢! ...

华山论健的博客 3744

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PID控制原理学习资料:深入掌握PID控制的精髓

PID控制原理学习资料:深入掌握PID控制的精髓 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在自动化领域的控制系统中,PID控制器因其稳定性和准确性被广泛应用于各种场景。PID控制原理学习资料项目,旨在为广大爱好者和学习者提供一份详尽的PID控制原理学习资源。该资源以《位置式和增量式PID.pdf》文档为核心,系统讲解了位置式PID与增量式PID的原理和应用,助力...

gitblog_06775的博客 1060
上一篇: CAN FD
下一篇: XCP协议
cppstdy
博客等级 码龄15年 89粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值