PID原理及控制算法详解

文章目录

1. 概念

1.1 PID框图

1.2 具体示例:无人机高度控制

2. PID原理

3. 常用术语

4. 计算过程

4.1 比例控制(Proportional)

4.2 积分控制(Integral)

4.3 微分控制(Derivative)

5. 代码实现逻辑

7. 串级PID和代码实现

6. 模拟仿真


1. 概念

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

一般而言,目标值和反馈值为同种物理量,输出值可以是施加在被控物体上的控制量
举例:对物体进行位置控制时,目标值=目标位置,反馈值=当前位置,输出值=施加的驱动力大小,PID就能实时计算出驱动力使物体到达目标位置。

控制程序一般会定时运行PID算法,在每次运行时,先计算出误差=目标值-反馈值,然后分别由P、I、D三个环节根据误差计算出输出分量,三个分量加和即为最终输出值。

1.1 PID框图

上图就是PID的信号框图,表示了PID的运行过程:

为系统指定一个目标值。PID将目标值与被控对象(无人机)当前的反馈量作差得到误差。PID将误差值分别经过三个环节计算得到输出分量,三个分量加起来得到PID的输出。将PID的输出施加到被控对象上,使反馈量向目标值靠拢。

PID三个环节的作用

由控制无人机案例我们可以总结出PID三个环节各自的主要作用和效应:

  • 比例环节:起主要控制作用,使反馈量向目标值靠拢,但可能导致振荡。

  • 积分环节:消除稳态误差,但会增加超调量。

  • 微分环节:产生阻尼效果,抑制振荡和超调,但会降低响应速度。

PID中物理量的设计

我们在设计PID时主要关注三个量:目标值、反馈值、输出值。PID会根据目标值和反馈值计算输出值。

需要强调的是,PID并不知道被控对象是什么,它仅负责进行数值计算,而我们——作为控制系统的设计者,就需要为PID指定这三个量所对应的实际物理量,这在不同的控制系统中是不一样的。

如何确定实际物理量

我为大家总结了一个常用准则:

  • 目标值和反馈值
    • 通常为同种物理量,就是你需要控制的物理量。
  • 输出值
    • 通常是直接驱动被控对象的控制量。
    • 输出量作用在被控对象上需要经过时间积累才会产生反馈量的变化,换言之,输出值通常为反馈值对于时间的低阶物理量。例如:目标值和反馈值为位置,则输出值可以为速度或加速度。

对于线性关系的两个物理量(只差一个系数),可以直接替换。例如:目标和反馈值为无人机的位置,根据上一条准则,输出值可以为加速度。但我们无法直接控制加速度,只能控制推力大小,由于由于高度的变化是由推力产生的,且推力与加速度只差一个系数(F=ma),因此可以将输出值直接定为推力。

 

1.2 具体示例:无人机高度控制

  1. 目标值(Setpoint)无人机希望达到的高度,例如10米。

  2. 反馈值(Measured Value)无人机当前的实际高度,例如8米。

  3. 误差(Error)

    • 目标高度与实际高度的差值。误差 = 目标高度 - 实际高度 = 10米 - 8米 = 2米。
  4. 输出值(Output)

    • 控制电机的推力大小,以使无人机的高度向目标高度靠拢。
    • 由于推力与加速度成正比,我们可以将输出值设为推力。通过调整推力来改变无人机的加速度,从而改变高度。

2. PID原理

这是一个通过PID控制水管进出水流量的例子。让我们详细解释这个例子:

图示说明

  • 阀门:水管中间有一个阀门,通过调节阀门的开度来控制水流量。
  • PID控制器:控制系统通过PID控制器来调节阀门,以控制水流量。
  • 流量传感器:水管上有流量传感器,用来测量当前的实际流量。

工作原理

  1. 设定值:系统有一个预期流量值(设定值),这是希望达到的水流量。比如2L/S.
  2. 测量值:流量传感器实时测量当前的实际流量。
  3. 误差计算:PID控制器将实际流量与预期流量进行比较,得到误差值(误差 = 预期流量 - 实际流量)。
  4. 控制输出
    • 比例控制(P):根据当前误差值直接调节阀门的开度。误差越大,调整幅度越大。
    • 积分控制(I):根据误差随时间的累积来调节阀门,以消除持续的偏差。积分控制能消除系统的稳态误差。
    • 微分控制(D):根据误差变化的速度来调节阀门,预见并平滑误差的变化,减少超调和振荡。

实际操作

  • 启动时:当系统启动时,PID控制器根据初始误差进行较大的调整,使流量迅速接近设定值。
  • 稳定阶段:当实际流量接近设定值时,比例控制器的作用减小,积分控制器确保误差归零,微分控制器平滑误差变化,避免波动。
  • 扰动响应:当系统受到外部扰动(如水压变化)时,PID控制器会重新计算误差,并调整阀门,以重新达到设定的流量值。

3. 常用术语

  • 被控对象:需要控制的对象。例如,温度控制中的加热器、速度控制中的电机等。
  • 目标值(Setpoint):期望被控对象达到的状态量。例如,温度控制中的期望温度、速度控制中的目标速度。
  • 反馈值(Measured Value):被控对象当前时刻的状态量。例如,当前的温度、当前的速度。
  • 增益(Gain):比例、积分和微分部分的放大系数,分别是Kp、Ki和Kd。
  • 输出量(Output):PID的计算结果,用于调整被控对象的控制力。例如,加热器的功率、驱动电机的电压。
  • 误差(Error):目标值与反馈值之间的差异。公式为:误差 = 目标值 - 反馈值。
  • 稳态误差(Steady-State Error):系统在稳定状态下仍然存在的误差。例如,加入干扰后仍存在的误差。
  • 阶跃输入(Step Input):在系统稳定状态下,目标值发生突然变化。例如,目标温度从20°C突然升高到25°C。
  • 阶跃响应(Step Response):阶跃输入后,被控对象的响应状态,能够代表系统的控制性能。
  • 瞬态响应(Transient Response):系统从初始状态到达到稳态的过渡过程,包括上升时间、超调量和调节时间等。
  • 响应速度(Response Speed):阶跃输入后,被控对象再次到达目标值的速度。
  • 超调量(Overshoot):阶跃输入后,被控对象到达目标值后超出目标值的距离。

4. 计算过程

这里用无人机的高度控制来举例

4.1 比例控制(Proportional)

假如让无人机悬停在10米的高度,但此时高度为2米,所以此时误差(error)为8米,假设Kp=0.5,比例控制每次调节的高度就为:

Kp * error

所以第一次调节为 0.5*8=4,此时误差变为4米。

第二次调节:0.5*4=2,此时误差变为2米。

依次进行调节,误差逐渐变小。这个过程就叫做比例调节。

Kp值越大,系统反应速度越快,无人机更快靠近误差。

但是比例控制的缺点为两点:

  • 干扰:容易受到外界干扰,比如此时有持续的风将无人机向下吹,导致无人机同一周期向下1米,此时比例控制的计算结果为0.5*2=1,所以,这会导致无人机永远保持在八米的高度,误差保持在2米。这也叫做稳态误差。
  • 震荡:Kp值越大,系统反应速度越快,无人机更快靠近误差,但同时无人机在接近目标高度时,产生的震荡也越严重。

为了消除稳态误差的问题,就需要用到积分控制(Integral)。

为了消除系统震荡的问题,就需要用到微分控制(Derivative)。

4.2 积分控制(Integral)

积分控制是对之前计算的所有的误差求和,也就是在离散的情况下做累加,比如无人机经过两次调节,第一次误差为8米,第二次误差为4米,加起来就是12米,假如Ki=0.1,计算结果为:

 0.1*12=1.2,所以及时有向下持续的风影响无人机,由于积分控制,无人机还是会向上走1.2米。

所以积分控制会对误差进行累计,从而提供更大的升力,让无人机慢慢的朝着目标点靠近,最终误差消除为0。

所以经过第三次调节,累计误差从12调整到了12.8,那么第四次调节的结果0.1*12.8=1.28。

但此时无人机距离目标高度仅为0.8米,如果还是调节1.28米,就会出现过冲现象。

此时就需要使用微分控制进行更细致的调节。

4.3 微分控制(Derivative)

微分控制就是通过当前时刻与前一刻误差量的差值对未来做预测。如果差值为正,就表示误差在变大,为负就表示误差在减小。如果误差在变大,就会加大控制强度,让误差降下来。如果误差减小,就会减小控制强度,让无人机平稳缓和的到达指定值。

这里也就相当于对距离求微分:

d(error)/dt = 速度

微分控制算法可以对无人机的速度做出响应,当无人机的速度过快时,微分控制会抵消一部分由比例控制计算出来的升力,从而减缓系统的震荡。所以当我们提高Kd的值,系统的震荡会逐步减小。

但无论是比例,积分还是微分控制,数值调的过大,无人机就会出现过冲现象。

5. 代码实现逻辑

这段伪代码实现了一个基本的PID控制算法。

previous_error := 0
integral := 0

loop:
    error := setpoint - measured_value //计算误差
    integral := integral + error * dt //计算积分
    derivative := (error - previous_error) / dt //计算微分
    output := Kp * error + Ki * integral + Kd * derivative //计算控制输出
    previous_error := error //更新前一次误差
    wait(dt) //等待并循环
    goto loop
  • previous_error 用于存储前一次循环中的误差值,初始化为0。
  • integral 是积分部分的累加值,初始化为0。
  • error 是当前的误差,等于设定值(setpoint)减去测量值(measured_value)。
  • 积分部分通过累加误差乘以时间步长(dt)来实现。这个部分用于消除系统的稳态误差。
  • 微分部分通过当前误差减去前一次误差,再除以时间步长(dt)来实现。这个部分用于预测误差的变化趋势,从而提前进行调整。
  • 控制输出(output)是比例、积分和微分三部分的加权和。
  • Kp 是比例增益,对应 error。
  • Ki 是积分增益,对应 integral。
  • Kd 是微分增益,对应 derivative。
  • 将当前的误差值存储到 previous_error 中,以便下次循环使用。 

这段伪代码通过不断地测量误差、累积积分和计算误差变化率,动态调整控制输出,使系统的实际值尽量接近设定值。

7. 串级PID和代码实现

串级PID可增加系统的稳定性,抗干扰能力更强,包括代码实现可以看下面这篇:

串级PID控制算原理及法详解-CSDN博客

6. 模拟仿真

下面这个网站可以模拟调节PID参数来控制无人机

Webpack App

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/747909.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6.18-6.26 旧c语言

第一章 概述 32关键字 9种控制语句 优点:能直接访问物理地址,位操作,代码质量高,执行效率高 可移植性好 面向过程:以事件为中心 面向对象:以实物为中心 printf:系统定义的标准函数 #include&l…

[图解]建模相关的基础知识-19

1 00:00:00,640 --> 00:00:04,900 前面讲了关系的这些范式 2 00:00:06,370 --> 00:00:11,570 对于我们建模思路来说,有什么样的作用 3 00:00:12,660 --> 00:00:15,230 我们建模的话,可以有两个思路 4 00:00:16,790 --> 00:00:20,600 一个…

《Redis设计与实现》阅读总结-3

第 12 章 事件 Redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件和时间事件 一、文件事件 1. 文件处理器:Redis基于Reactor模式开发了自己的网络事件处理器被称为文件处理器 文件事件处理器使用I/O多路复用程序来同时监听多…

electron线上跨域问题

一、配置background.js win new BrowserWindow({webPreferences: {nodeIntegration: true, // 使渲染进程拥有node环境//关闭web权限检查,允许跨域webSecurity: false,// Use pluginOptions.nodeIntegration, leave this alone// See nklayman.github.io/vue-cli-p…

win11系统重装?正版系统Windows11安装重启!保姆级重装系统攻略!

随着科技的不断发展,Windows 11系统已经逐渐成为了众多电脑用户的新选择。然而,当当电脑出现严重故障、受到病毒攻击、软件冲突、系统升级失败、硬件更换或升级、系统性能下降或个性化需求等情况时,重装系统可能是一个有效的解决方案。本文将…

江协科技51单片机学习- p16 矩阵键盘

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

武汉星起航:跨境电商浪潮下,中国卖家扬帆出海,书写国际新篇章

随着全球化进程的加速和互联网技术的飞速发展,跨境出口电商模式已成为中国卖家海外拓展的重要渠道。这一模式不仅为商家带来了巨大的市场机遇,更为中国卖家在全球舞台上展示其独特魅力和竞争力提供了宝贵平台。武汉星起航将从多个维度探讨中国卖家海外发…

基于 GD32F450 的Zephyr 的基本测试-编译工程

一、cmake 编译 hello world 测试 打开示例工程 hello world cd ~/zephyrproject/zephyr/samples/hello_world新建 build 目前,用于存放临时文件目录,并进入该目录 mkdir -p build && cd build通过 cmake 指令 生成 gd32f450z 工程的 makefil…

聚观早报 | 小鹏MONA M03曝光;iPhone 16系列电池改进

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 6月25日消息 小鹏MONA M03曝光 iPhone 16系列电池改进 一加Ace 3 Pro三款配色 字节跳动与博通合作开发AI芯片 蚂…

【efinix】efinity如何安装官方补丁patch

efinix官网可以下载efinity的官方补丁。 下载 efinity-2023.2.307.5.10-windows-x64-patch.zip 解压缩补丁zip 压缩包内容 files/ : updated files to be copied into the Efinity installation run.sh : patch installation script (Linux on…

Open3D 显示带有强度的点云数据

目录 一、概述 1.1强度信息的意义 1.2应用场景 二、代码实现 三、实现效果 一、概述 在点云数据中,强度(Intensity)指的是激光雷达传感器在扫描环境时,每个点返回的反射强度值。这些强度值代表了激光脉冲返回的能量&#xff…

python目录树生成器

代码如下: import os from colorama import Fore, Style, init from tkinter import Tk, Label, Entry, Button, Text, Scrollbar, RIGHT, Y, END# 初始化 colorama init(autoresetTrue)def print_directory_tree(root_dir, text_widget, indent, lastTrue):"…

Qt Quick Effect Maker 工具使用介绍

一、介绍 随着 Qt 版本的不断升级,越来越多的功能被加入 Qt,一些新的工具也随之应运而生,Qt Quick Effect Maker 工具是 Qt 6.5 之后才新添加的工具,之前的名字应该是叫做 Qt shader tool 这个模块。 以下是官方的释义:Qt Quick Effect Maker是一个用于为Qt Quick创建自定…

SpringAOP执行流程——从源码画流程图

文章目录 了解ProxyFactory入门操作添加多个Advice的执行顺序关于异常Advice关于proceed()方法指定方法才进行增强逻辑 创建代理对象的其他方式ProxyFactoryBeanBeanNameAutoProxyCreatorDefaultAdvisorAutoProxyCreator 对SpringAOP的理解TargetSourceProxyFactory选择JDK/CJL…

安卓免费短剧大全v1.0.2/全部无需VIP实时更新全平台短剧

在当今社会,时间成为了许多人最为宝贵的资源。忙碌的工作与繁重的日常事务,常常让我们难以拨出时间沉浸于长篇大幅的影视作品中。对于那些热爱剧情、渴望在生活中点缀一抹戏剧色彩的朋友们而言,这无疑是一种挑战。 然而,随着免费…

Ubuntu挂载window的网络共享文件夹爱

1.进入win10创建一个用户smb密码也是smb 2.右键进入文件夹共享 3.进入Ubuntu安装支持cifs-utils sudo apt update sudo apt install cifs-utils 4.sudo mkdir /mnt/shared 5.挂载: sudo mount -t cifs -o usernamesm bpasswordsmb //172.16.11.37(windowsIP)/s…

C语言学习记录20240626

飞船无论朝哪边行驶,都能通过结构体记录获取它的初始坐标、转向角度和在该方向行进的距离,需要根据这些信息计算飞船移动后的坐标。 向量(vector)指具有大小(magnitude)和方向(direction)的量,可以理解为有方向的线段。 标量或纯量(scalar)指…

甲子光年专访天润融通CEO吴强:客户经营如何穿越低速周期?

作者|陈杨、编辑|栗子 社会的发展从来都是从交流和联络开始的。 从结绳记事到飞马传信,从电话电报到互联网,人类的联络方式一直都在随着时代的发展不断进步。只是传统社会通信受限于技术导致效率低下,对经济社会产生影…

明星周边物品交易购物系统

摘 要 随着明星文化的兴起和粉丝经济的蓬勃发展,明星周边产品的市场需求日益增长。明星周边物品包括各种与明星相关的商品,如T恤、海报、手办、签名照等,它们成为粉丝们表达对明星喜爱和支持的方式之一。通过“星光璀璨”来形象化地表达明星…

创意设计师,如何在AIGC时代寻找价值?

在当今AIGC(人工智能生成内容)时代,技术的浪潮席卷了各个行业,创意设计领域也不例外。对于创意设计师来说,这既是一个充满挑战的时代,也是一个蕴藏无限机遇的时代。在这个时代背景下,如何寻找并…