[控制原理基础]浅谈PID算法

2023-05-16

一、PID使用背景
在这里插入图片描述

当今的自动控制技术都是基于反馈的概念。即一个In Loop闭环的理论,反馈理论的要素包括三个部分:测量、比较和执行。测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。
PID(Proportion Intergration Differentiation)算法是比例微分积分控制的简称,该算法是自动控制原理中核心应用技术(从拉普拉斯变换应用于时域模型或者复数域模型用于调整整个模型的特性,稳,准,快),而在实际应用中更是非常广泛,基本与控制算法有关的模型都能够应用该算法包括有四旋翼无人机悬停,巡线控制,目标追踪,ADAS中的ACC,LCC等算法,因为其强大的性能和简单的调参方式能够在学术界和工业界都得到广泛的应用,这里我就简单拿四旋翼无人机的悬停技术来阐述该算法的用法,四旋翼无人机的悬停要用到很多项技术(PID,鲁棒控制,模糊控制)和传感器(激光测距雷达,摄像头)。四旋翼的上升,下降,悬停主要依靠的四个旋翼的升力,如果合力大于重力即上升,等于悬停,小于下降,当然四旋翼的引入是为了在对角线上旋翼旋转方向相同,相邻旋翼旋转方向相反,才能获得两个方向上力的抵消,垂直力的叠加。而四旋翼的定高悬停就需要用到PID控制,就比如说我设定一个上升的高度,我在实际上升过程中也需要根据我现在高度和实际高度的差距去改变控制量,最开始的时候距离设定高度较远我需要加大控制量,使其能够尽快到达,而如果接近时候可能需要放慢脚步,微调升力这就是比例控制,当我接近设定高度时候,就比如说实际高度和设定高度相差很小了,单纯通过比例控制其效果已经很小了(因为Kp系数是固定的,Kp不能设置很大,为了防止开始控制量过大,所以到最后误差很小时候,比例控制的作用很小),这时候就需要引入积分控制,积分控制和他的名字一样就是对误差在一定幅度上的时间累计,而积分是连续域上的含义,如果在离散域上就叫求和,简单来说就是在一定范围内的误差求和,当然这个误差是很小的,一段时间求和或者积分后就会得到一个逐渐变大的控制量,这就是我们看无人机在悬停时候,开始很快,到最后一定范围内的时候,他会慢慢的控制,逐渐接近目标。在绝大部分应用中可能PI控制,也即比例积分控制就已经能够满足要求了,但是这个D也即微分也有很重要的作用,D在高等数学中就是求导也即微分的意思,那微分项放进来具体就是为了防止突变,增加动态性能,回到最开始的例子,无人机定高好之后,突然吹过来一阵风,那他肯定会来回摆动,这时候微分作用就起作用了,因为D表示微分也可以表示变化率,如果高度误差的变化率较大,就会有微分控制对整体控制力进行调整,这就是PID的宽泛理解。

二、PID各自含义
P:比例控制,PID的核心思想就是根据误差去改变控制量,从而达到缩小误差的效果,比例控制的作用也很明显,就是通过误差去控制控制量。比如说误差较小,说明真实和预测已经非常接近,该时刻不需要过大的控制量,而反之,误差较大,说明真实和预测相差较大,此时可以稍微放大控制量。当然误差的正负同样能够改变控制量变化的方向,而Kp的系数其实就相当于如何从测量元件得到的误差量化成我们所需要的控制量,从而来减少误差,进行有差调整,其响应快速且控制及时。如果Kp较大,可以加速调节,减少误差,但是稳定性下降,所以需要合理设计Kp参数具体调参的方式是经验法、衰减曲线法、临界比例带法和动态特性法等,其主要还是满足控制理论要求上根据一定经验上去略微调整参数看最终的控制效果。拿上述的例子比如我们高度实际值是Htrue,而高度期望值是Hexpect所以说误差是
erro = Hexpect-Htrue
那么比例控制的控制量就是
G(Kp)= Kp erro
I:积分控制,积分控制需要在比例控制无法控制的时刻发挥作用,对于其微小残差进行修正,消除静差,提高系统无差性。他在提高整个系统无差控制时候有着非常关键且重要的作用,能够减少超调量,但是增加了调节时间,控制不及时,系统稳定性下降。在无人机定高悬停时候在最后时刻的修正中起着主导作用,能够帮助四旋翼无人机完成定高悬停。积分控制量的大小需要计算某时刻的残差累积,当然设计积分上限是积分控制引入时必须考虑到的问题,即积分控制量的最大值问题,不能够让积分作用的控制作用太强,这样非常容易影响整体的使用。积分作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,其参数整定方法于比例控制雷同。其积分数学公式如下,其中H的实际值和预计值都是随时间变化的
G(Ki)=1/Ti
∫(H_expect-H_true )dt
D:微分控制,能反映偏差信号的变化趋势(变化速率),微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,加快系统动作时间,减少调节时间,改善动态性能,微分控制的关键在于对其变化率的控制,如果无人机处于一种高噪声的情况下,能够较好的稳定无人机,使其最终达到一种稳定的状态,其具有超前控制,减少超调,减少调节时间,使系统动态特性变好, 稳定性增加,但系统对扰动的抑制能力减弱,对扰动有较敏感的响应。的功能,微分控制需要通过微分,而微分的计算即是通过某时刻与上一时刻的变化除以时间差。
Derivative=(H_t-H_(t-1))/Δt
而微分控制的最终控制效果如下
G(Td)=Td
(H_t-H_(t-1))/Δt
那么最终的PID控制效果就是
G(PID)=Kp* (Hexpect-Htrue)+ 1/Ti ∫(H_expect-H_true )dt+ Td(H_t-H_(t-1))/Δt
在这里插入图片描述

三、PID在自动控制原理中的应用
PID属于超前校正。可以提高系统的快速性,改善稳定性。在低频段,主要是 PI 控制规律起作用,提高系统型别,消除或减少稳态误差,在中频段主要是 PD 起作用,增大截止频率和相角裕度,提高响应速度。PID 控制可以全面的提高系统的控制性能。
比列基础上,积分消除静差,产生相位之后,但降低系统稳定裕度和工作频率,再加上微分作用,产生相位超前,提高稳定裕度和工作频率,提高性能。
动态误差上:PD<PID<P<PI(微分作用强,动态误差小)
调节时间:PD<PID<P<PI(微分强,调节快)
静差:0=PID=PI<PD<P (引入微分,能够适当减少静差)

四、PID各个算法适用范围
P控制
特点:简单,迅速克服干扰,跟踪设定值,过渡时间短,只有一个参数整定,有余差
适用场合:自衡能力强,纯之后时间t/T较小,负荷变化较小,工艺上允许有余差存在,控制质量要求不高。
PD控制
特点:增加稳定裕度,使比列增益扩大,加快过渡,减小动态偏差与余差,增加稳定性,克服容量滞后,但对高频干扰易振荡
适用场合:时间常数大,负荷变化小,反应慢,不应用于纯滞后,周期性干扰频繁场所
PI控制
特点:消除余差,减小稳定裕度,使比例增益变小,过渡时间变慢,动态偏差变大。
适用场合:控制通道时间常数小,负荷变化不大,无余差,不应用余容量滞后和纯滞后较大场合。
PID控制
特点:PID调节器兼顾PD调节器快速性,结合I调节器的无静差特点。克服容量滞后,减小动态偏差,提高稳定裕度,消除余差。
适用场合:容量滞后大,负荷变化不大,无余差,控制质量要求高。

五、P、I、D参数的预置与调整
比例增益 P
比例功能是利用目标信号和反馈信号的差值来调节输出控制量。一方面,我们希望目标信号和反馈信号无限接近,即差值很小,从而满足调节的精度:另一方面,我们又希望调节信号具有一定的幅度,以保证调节的灵敏度。解决这一矛盾的方法就是事先将差值信号进行放大。比例增益 P 就是用来设置差值信号的放大系数的,一般在初次调试时,P可按中间偏大值预置.或者暂时默认出厂值,待设备运转时再按实际情况细调。
积分时间I
积分环节I,其效果是,使经过比例增益P放大后的差值信号在积分时间内逐渐增大(或减小),从而减缓其变化速度,防止振荡。但积分时间I太长,又会当反馈信号急剧变化时,被控物理量难以迅速恢复。因此,I的取值与控制系统的时间常数有关:控制系统的时间常数较小时,积分时间应短些;控制系统的时间常数较大时,积分时间应长些,并且设计合理的积分上限对于积分控制进行规范化处理。
微分时间D
微分时间D是根据差值信号变化的速率,提前给出一个相应的调节动作,从而缩短了调节时间,克服因积分时间过长而使恢复滞后的缺陷。D的取值也与控制系统的时间常数有关:控制系统的时间常数较小时,微分时间应短些;反之,控制系统的时间常数较大时, 微分时间应长些。
P、I、D参数的调整原则
P、I、D参数的预置是相辅相成的,运行现场应根据实际情况进行如下细调:被控物理量在目标值附近振荡,首先加大积分时间I ,如仍有振荡,可适当减小比例增益P。被控物理量在发生变化后难以恢复,首先加大比例增益P,如果恢复仍较缓慢,可适当减小积分时间I,还可加大微分时间D。

六、PID引申:
1、PID分类:位置型PID,增量型PID
位置式PID:
在这里插入图片描述

特点:误差累加,易有大误差,控制量全量输出

增量型PID:
在这里插入图片描述

特点:控制量仅与几次误差有关,输出开度变化小,实现无冲击切换
区别:
①位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大。
②增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。
③由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。

2、积分饱和现象产生的内因和外因、危害
积分饱和现象:主要是由积分项的累计作用存在所引起的PID运算的饱和形象。
内因:控制器包含积分控制作用
外因:控制器长期存在偏差。
影响:系统超调量增加,上升时间增加,调节时间增加。
解决方案:
PI-P控制器,偏差小时去除I控制
②对于积分控制设计积分上限
③不用位置PID,用增量法或者速度法

3、PID微分改进:
作用:克服惯性,减少超调,抑制振荡
方法:
①不完全微分PID控制,串联一阶惯性环节,消除高频干扰,延长微分作用时间。不完全微分指的是在标准的PID控制算式,对于具有高频扰动的生产过程,微分作用响应过于灵敏,容易引起控制过程振荡,降低调节品质。为了克服这一缺点,同时又要使微分作用有效,可以在PID控制输出串联个一阶惯性环节,这样组成了不完全微分控制器。
②微分先行:将微分环节放在反馈回路中,避免定制下降引起系统振荡,明显改善系统动态特性。

4、PID算法变形算法
①微分先行(PI-D)
应用:化解微分冲击,随动控制
在这里插入图片描述
在这里插入图片描述

②比例先行(I-PD)
应用:消除比例冲击,定值控制
在这里插入图片描述
在这里插入图片描述

5、模糊PID的理解
模糊控制:一种逐步求精的思想。一个模糊控制器主要是由模糊化,模糊推理机和精确化三个功能模块和知识库(包括数据库和规则库)构成的。模糊PID控制是以偏差e及偏差的变化ec为输入,利用模糊控制规则在线对PID参数进行调整,以满足不同的偏差e和偏差的增量ec对PID参数的不同要求,模糊PID算法是模糊算法在PID参数整定上的应用,与纯粹的模糊控制算法是有区别的。普通的模糊控制器适用于直接推理控制器的输出,而模糊PID算法使用模糊算法修改PID参数,最终的控制器输出依然是由PID控制器来实现的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[控制原理基础]浅谈PID算法 的相关文章

  • PI闭环的FPGA实现

    PID闭环的FPGA实现 1 原理分析 最近小张同学在做项目的时候发现PI闭环的FPGA学习资料很少 秉持着 既然没有轮子 那么自己就造一个的原则 于是乎自己写了个PI的Verilog程序 FPGA中实现PI闭环与DSP STM32 arm
  • PID简介

    一 基本定义 Sv 用户设定值 给定信号 Pv 控制对象当前状态值 反馈信号 E 偏差值 偏差信号 所以 E Sv Pv 二 PID各个控制基本分析 1 P控制 比例控制 Pout Kp Ek 假定从早上开机上电 我们每隔一秒钟就通过传感器
  • 详解汽轮机的TSI系统

    汽轮机安全监视系统 TSI 是一种集保护和检测功能于一身的永久监视系统 是大型旋转机械必不可少的保护系统 TSI可以对机组在起动 运行过程中的一些重要参数能可靠地进行监视和储存 它不仅能指示机组运行状态 记录输出信号 实现数值越限报警 出现
  • 连载---《自动调节系统解析与PID整定》之一

    原创连载 自动调节系统解析与PID整定 之一 360doc com
  • TSI系统测量参数之:转速和零转速

    一 TSI系统测量参数 1 轴向位移 2 盖振或瓦振 3 偏心 4 键相 5 零转速 6 轴向振动 7 相对热膨胀 胀差 8 绝对热膨胀 缸胀 二 各参数作用 1 零转速与转速 1 零转速 主要用在汽机转速到零时投盘车的连锁以及对大机转速的
  • 1_simulink简单入门_simulink仿真PID控制

    1 simulink简单入门 simulink仿真PID控制 2 simulink搭建RCL 电阻电感电容模块 毕业前想去做物联网还是或者linux 结果玩了一年多的电机控制 早就深知matlab simulink绕不过的 拖到现在 下班晚
  • 什么是死区时间

    死区时间是PWM输出时 为了使H桥或半H桥的上下管不会因为开关的关断延迟问题发生同时导通而设置的一个保护时段 通常也指pwm响应时间 由于IGBT 绝缘栅极型功率管 等功率器件都存在一定的结电容 所以会造成器件导通关断的延迟现象 一般在设计
  • [经验] 轻松解读PID控制算法的三种参数的自整定方法

    轻松解读PID控制算法的三种参数的自整定方法 机器人论坛 电子技术论坛 广受欢迎的专业电子论坛 elecfans com
  • TSI系统测量参数之:轴向振动

    一 TSI系统测量参数 1 轴向位移 2 盖振或瓦振 3 偏心 4 键相 5 零转速 6 轴向振动 7 相对热膨胀 胀差 8 绝对热膨胀 缸胀 二 各参数作用 2 轴向振动 测量的是大轴相对于轴瓦的X向振动和Y向振动 反馈电压量程为 4V至
  • 如何以编程方式获取 OS X 上给定 PID 的打开文件描述符列表?

    我所看到的一切都说要使用lsof p 但我正在寻找不需要 fork exec 的东西 例如 在 Linux 上 人们可以简单地步行 proc pid fd You can use proc pidinfo与PROC PIDLISTFDS枚举
  • copy_from_user() 的任何示例吗?内核和用户空间

    我正在寻找将 PID 值从用户空间复制到内核空间 这是我的代码快照 内核模块 include
  • 在Qt中fork后获取进程的PID

    我正在创建一个成功分叉的 Qt C 控制台应用程序 当我在 fork 之前调用 QCoreApplication applicationPid 然后在 fork 之后 在子进程中 调用 QCoreApplication applicatio
  • 什么是 .pid 文件以及它包含什么?

    我最近遇到了一个扩展名为 pid 的文件 并查看了它的内部 但没有找到太多内容 这文档 says Pid 文件是包含进程标识号 pid 的文件 该文件存储在文件系统的明确定义位置 从而允许其他程序找到正在运行的脚本的 pid 任何人都可以对
  • 有人可以解释一下 Erlang 中 Pid(进程标识符)的结构吗?

    有人能解释一下 Erlang 中 Pid 的结构吗 Pids 看起来像这样
  • 如何迭代 PCB 以显示 Linux 内核模块中的信息?

    我想编写一个 Linux 内核模块 它可以显示所有正在运行的进程的 PID 我有以下代码 procInfo c My Kernel Module for process info include
  • os.kill 没有引发 OSError,但是我没有看到给定的 pid 正在运行

    在我的 ubuntu 服务器上运行以下命令 python c import os os kill 5555 0 这样做是为了查看 pid 5555 是否正在运行 根据我的理解 如果 pid 没有运行 这应该会引发 OSError 这不会对我
  • 有没有办法链接linux的线程TID和pthread_t“线程ID”

    在 Linux 上 线程由pthread t或 TID 我正在寻找这两种线程 id 之间的桥梁 given a pthread t我可以得到它吗TID 显然 https stackoverflow com questions 558469
  • 在 python 中,是否有跨平台的方法来确定哪个进程正在侦听给定端口?

    在linux下 我可以使用lsof i如以下函数所示 def FindProcessUsingPort portnum import os fp os popen lsof i s portnum lines fp readlines fp
  • Process.start() 启动的进程返回错误的进程 ID?

    我正在使用以下代码启动可执行文件 Process proc new Process proc StartInfo FileName executablePath proc Start proc WaitForInputIdle 在这次通话之
  • 如何在bash中列出所有后台pid

    要么我无法正确表达我的搜索 要么答案不容易找到 但我正在尝试找出如何列出我的所有后台任务 PID 例如 到目前为止 我发现要列出我们使用的最后一个 PID 但现在我想列出之前任务的 PID 如果存在 但我找不到如何做到这一点 最终我想列出我

随机推荐

  • zabbix 监控源代码安装

    实验环境 192 168 0 108 server端 192 168 0 109 agent端 步骤一 配置两台虚拟机确保ip能连网 配置l两台主机名 vim etc hostname 配置两台主机hosts文件 cat etc hosts
  • exec函数与fork函数的配合使用

    1 实现功能 当父进程检测到输入为1的时候 xff0c 创建子进程把配置文件的字段值 LENG 61 1修改为LENG 61 6 修改掉 代码如下 xff1a 将该修改配置文件通过gcc o 编译生成可执行文件changeData xff0
  • java中的Arrays.sort()的几种用法

    目录 1 第一种2 第二种方法3 第三种方法4 额外补充 for each的语法结构 直奔主题 Arrays sort 有三种用法 1 第一种 Arrays sort int a 查看源码 span class token keyword
  • Maven:导出war包时报错Failed to execute goal org.apache.maven.plugins:maven-war-plugin解决方法(全)

    出现如下问题的时候 是因为在target文件夹下没有生成war文件 Failed to execute goal org apache maven plugins maven war plugin 2 2 war default war o
  • java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

    目录 前言1 学习路线2 学习方法 前言 这篇文章主要总结我之前所学过的框架以及学习路线 从实打实的零基础到框架再到项目 之后实习工作 也在这篇博客中记录我的学习笔记 以及在笔记中遇到的配置安装 代码bug等错误 都从零开始摸索并且记录了下
  • Java抽象类和接口的详细区别(全)

    目录 前言1 抽象类2 接口3 两者结合4 面试总结 前言 这两者经常在笔试以及面试中经常问及 xff0c 甚至在项目实战中还在纠结用哪一种类型 今天就此问题详细剖析一下 以往我的文章中也有稍微提及 xff1a java框架零基础从入门到精
  • Python 通过ImageDraw.rectangle 画矩形框

    目录 1 函数讲解2 示例代码3 补充cv2 rectangle 1 函数讲解 源代码如下 xff1a ImageDraw rectangle xy fill 61 None outline 61 None width 61 1 主要的参数
  • 基于迁移深度学习的遥感图像场景分类

    前述 根据语义特征对遥感图像场景进行分类是一项具有挑战性的任务 因为遥感图像场景的类内变化较大 xff0c 而类间变化有时却较小 不同的物体会以不同的尺度和方向出现在同一类场景中 xff0c 而同样的物体也可能出现在不同的场景里 理论上 x
  • reStructuredText文档图片表格等自动编号以及名称修改

    number figures 61 True numfig 61 True numfig secnum depth 61 1 numfig format 61 39 figure 39 39 图 s 39 39 code block 39
  • Robocup 2D仿真足球机器人环境搭建(Ubuntu 16.04)

    现在很多高校的学生都在搞RoboCup2D仿真足球机器人 xff0c 而平台的搭建便是一大问题 本人也在搭建环境中遇到各种奇奇怪怪的问题 xff0c 有些找了许多网页 xff0c 下面是我对环境搭建 中遇到的问题以及解决方法的总结 希望能帮
  • Robocup 2D仿真足球机器人环境搭建快速搭建

    虽然之前已经写了Robocup 2D仿真足球机器人环境搭建 xff0c 但是后面我找到了更快搭建环境的方法 而且现在很多团队都是在agent底层代码的基础上编写的 之前的方法配置的环境运行agent球队代码会出现错误 通过找资料得知是有些软
  • Robocup 2D新手导读(入门总结)

    目前 xff0c 我们团队接触Robocup 2D比赛也有好几个月了 xff0c 不得不说 这个比赛也有一定难度 尤其是对于第一次接触这个比赛的我们来 说 下面是我的一些总结 xff0c 希望能够帮助你们 1 Robocup 2D的比赛基本
  • Robocup 2D比赛代码导读(agent底层代码指导)

    相信刚开始接触Robocup 2D比赛的萌新 xff0c 都清楚agent的代码看起来是很痛苦的 xff0c 而且不知道从何看起 我个人观点看代码先看bhv和role这部分的代码 bhv行为动作的类的代码涉及到球员的进攻 跑位 防守 铲球等
  • python爬虫接单-资料总结

    相信看到我这篇文章的朋友们 xff0c 都是奔着赚钱来的 当初我也是冲着爬虫接单 可以赚钱 xff0c 一下就报了个将近3000元的爬虫班 python爬虫确实可以接单赚钱 后来学会了之后就迫不及待地加入了接单行列 也确实赚了一些 希望这篇
  • 爬虫Scrapy框架的介绍与使用

    Scrapy Scrapy介绍 爬取网站数据 xff0c 提取结构数据而编写的爬虫应用框架 Scrapy工作流程图 Scrapy命令 span class token number 1 span 创建Scrapy项目 scrapy star
  • 太难为我了,为了这份P7岗offer,我承受了7轮面试

    前言 今年的大环境非常差 xff0c 互联网企业裁员的现象比往年更严重了 xff0c 可今年刚好是我的第一个 五年计划 截止的时间点 xff0c 说什么也不能够耽搁了 xff0c 所以早早准备的跳槽也在疫情好转之后开始进行了 但是 xff0
  • 云计算与大数据概论第五周

    对于 大数据 xff08 Big data xff09 研究机构Gartner给出了这样的定义 大数据 是需要新处理模式才能具有更强的决策力 洞察发现力和流程优化能力来适应海量 高增长率和多样化的信息资产 麦肯锡全球研究所给出的定义是 xf
  • 【hadoop_读写流程】

    14 hadoop 补充 xff1a 解决 linux 网卡丢失问题 xff1a service NetworkManager stop chkconfig NetworkManager off 重启网络 systemctl restart
  • 半监督学习

    半监督学习 xff1a 在训练阶段结合了大量未标记的数据和少量标签数据 与使用所有标签数据的模型相比 xff0c 使用训练集的训练模型在训练时更为准确 xff0c 而且训练成本更低 如何综合利用已标签例子和未标签例子 xff0c 是半监督学
  • [控制原理基础]浅谈PID算法

    一 PID使用背景 当今的自动控制技术都是基于反馈的概念 即一个In Loop闭环的理论 xff0c 反馈理论的要素包括三个部分 xff1a 测量 比较和执行 测量关心的变量 xff0c 与期望值相比较 xff0c 用这个误差纠正调节控制系