【PID学习笔记10】PID公式分析

写在前面

前面已经将控制系统的基础知识点过了一遍,从本节开始,将正式学习PID控制的相关知识,将会从基本的PID公式概念解释,再基于matlab仿真介绍十几种数字式PID的基本概念。本文重点讲解PID的经典公式。

一、连续与离散的概念

  • 连续就是时间和数值上是连续不间断的,在图形表示上是一条平滑的曲线。
  • 离散就是采用时间采样的方式使得时间上离散;并且量化数值,使得数值是离散的。
  • 图形化表示如下:

请添加图片描述

  • 信号算式表示如下表:
运算连续表示运算离散表示
积分 ∫ 0 t x ( t ) d t \int_0^t x(t)dt 0tx(t)dt求和 ∑ n = 0 N x ( n ) \displaystyle \sum_{n=0}^N x(n) n=0Nx(n)
求导 d x ( t ) d t \frac{dx(t)}{dt} dtdx(t)变化率 x ( n ) − x ( n − 1 ) Δ t \frac{x(n)-x(n-1)}{\Delta t} Δtx(n)x(n1)

二、PID公式分析

  • 公式1:
    u ( t ) = k p ( e + 1 T i ∫ 0 t e d t + T d d e d t ) u(t)=k_p(e+\frac{1}{T_i}\int_0^t edt+T_d\frac{de}{dt}) u(t)=kp(e+Ti10tedt+Tddtde)
    其中 k p k_p kp 为比例系数, T i T_i Ti 为积分时间常数, T d T_d Td 为微分时间常数。

请添加图片描述

上图是前面我们学过的闭环控制系统框图,我们看到图中标记的这个u(t)是控制器的输出,也就是控制器环节与执行器之间的信号量。公式中有一个熟悉的参数 e e e,这是误差,也是图中控制系统中的 E E E(等于期望输出减去实际输出)。

公式分成三部分相加,第一部分主要是误差变量,第二部分主要是一个从 0 0 0 t t t 对误差 e e e 的积分运算,第三部分主要是对误差 e e e 求导。

k p k_p kp是比例系数, T i T_i Ti 是积分时间, T d T_d Td 是微分时间,这三个参数也是PID里要调的三个参数,这三个参数在实际 PID 实现中,如单片机实现、matlab、simulink仿真中都是经过化简后直接调节 K p K_p Kp K i K_i Ki K d K_d Kd这三个参数。

  • 将公式1转化成常用的形式如下,分为连续形式和离散形式
  • 连续形式的常用PID公式:

u ( t ) = k p e + k i ∫ 0 t e d t + k d d e d t u(t)=k_p e+k_i\int_0^t edt+k_d\frac{de}{dt} u(t)=kpe+ki0tedt+kddtde

  • 离散形式的常用PID公式:

u ( t ) = k p e i + k i ∑ i = 0 N e i + k d e i − e i − 1 Δ t u(t)=k_p e_i+k_i \displaystyle \sum_{i=0}^N e_i+k_d \frac{e_i-e_{i-1}}{\Delta t} u(t)=kpei+kii=0Nei+kdΔteiei1

  • 这样,闭环控制系统框图可以转化为:

请添加图片描述

三、PID控制器各校正环节的作用

  • 比例环节:
    • 成比例地反映控制系统的偏差信号 e ( t ) e(t) e(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。
  • 积分环节:
    • 主要用于消除静态误差,提高系统的无差度。积分作用的强弱取决于积分时间常数 T T T, T T T 越大,积分作用越弱,反之则越强。
  • 微分环节:
    • 反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。

四、以无人机高度控制的实例进一步解释公式

(1)Proportional比例控制
纯比例控制下:
请添加图片描述

  • 对照前面的PID公式,按下图中的高度值计算。
    在这里插入图片描述

我们来看第一幅图,假如我们要让无人机悬停在 10 10 10米的高度,设为 h = 10 h=10 h=10,而此时,它的高度是 2 2 2米,设为 h 0 = 2 h0=2 h0=2。那就有 e = h − h 0 = 8 e=h-h0=8 e=hh0=8米的误差,假设Kp等于0.5,则比例环节 K p ∗ e = 0.5 ∗ 8 = 4 K_p* e=0.5*8=4 Kpe=0.58=4米,比例控制就是每次调节高度是误差的 K p K_p Kp倍,第一次调节后,无人机上升了4米。

第二幅图,此时无人机的高度,设为 h 1 = 2 + 4 = 6 h1=2+4=6 h1=2+4=6米,也就是最初未调节前无人机的高度 2 2 2米,再加上第1次调节的高度 4 4 4米,现在是 6 6 6米。那我们看现在的误差是多少,现在的误差是设定高度 10 10 10米减去现在高度 6 6 6米,即 e = h − h 1 = 10 − 6 = 4 e=h-h1=10-6=4 e=hh1=106=4米。再乘以 K p K_p Kp,即 K p ∗ e = 0.5 ∗ 4 = 2 Kp*e=0.5*4=2 Kpe=0.54=2米,目前还有两米误差,依次进行下去,随着误差的减小,每次调节上升的量也逐渐减小,但最终会接近 10 10 10米的目标高度,这个过程就是比例控制。

可以看到比例系数 K p K_p Kp越大,系统反应越快,无人机可以更快的靠近目标,但比例控制也有天生的弱点,在实际过程中有着各种各样的干扰,比如无人机到达 8 8 8米后,有持续的风将无人机向下吹,每次正好往下吹 1 1 1米,而比例控制往上升的高度误差 2 2 2乘以系数 0.5 0.5 0.5,也正好是 1 1 1米,这样的话,这个无人机就会悬停在这个高度,无法达到指定高度,这就是静态误差(也叫稳态误差)。也就是说虽然较大的比例系数能让系统快速到达目标值附近,但 K p K_p Kp调的再大,也避免不了与目标值存在稳态误差,这就需要引入积分控制。

  • P作用下的阶跃响应

在这里插入图片描述

(2)Integral积分控制

在比例控制上,引入积分控制。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

积分控制是对过去所有的误差求和,在离散的情况下,就是做累加,无人机经过两次控制,第一次误差是 8 8 8米,第二次误差是 4 4 4米,那么它的累积误差就是 12 12 12米,如果积分系数是 0.1 0.1 0.1,那即便此时向下吹的高度和比例控制上升的高度效果抵消,积分控制还是可以让无人机往上吹 1.2 1.2 1.2米,这样就可以逐渐达到目标高度。

对于这个控制过程加入合适的积分控制系数后,被控量就能既快速又精准的到到目标值。但是,这样的控制仍然不完美,至少在一些对偏差控制要求比较严格的场合,仍然是一次失败的调节,因为这个控制曲线的超调量太大。如果这个曲线是汽车自动驾驶情况下方向盘的控制曲线,这么大的过冲,对于乘客来说,肯定是一场精心动魄的体验。

我们再回到无人的例子,我们经过三次控制累积误差已经从 12 12 12变成 12.8 12.8 12.8,乘以积分系数 K i K_i Ki等于 1.28 1.28 1.28,而此时无人机距离目标高度只有 0.8 0.8 0.8米,直接飞上去,就出现了过冲现象,此时就该微分控制出场了。

  • PI作用下的阶跃响应
    在这里插入图片描述

(3)Derivative微分控制

在这里插入图片描述

微分控制就是通过当前时刻与前一时刻误差量的差值,对未来做预测,如果差值为正,就认为误差在逐渐变大,需要加大控制强度,使误差降下来,如果误差为负,则误差在逐渐变小,控制强度可以小一点,让目标平稳缓和的到达指定值,这样我们给 K d K_d Kd一个合适的值,就可以让无人机平稳达到 10 10 10米的高度。

  • PID作用下的阶跃响应

在这里插入图片描述

从阶跃函数可以看出,系统超调量得到有效控制,最终得到了我们期望的一个曲线。

五、PID参数比较

在这里插入图片描述


本节完

特别说明:文中如有编辑错误,感谢指出,会及时更新。本文的实例是之前学习阶段看的一个视频,感觉很有代表性,就分享在这里,如有侵权,请私信我删除。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PaddleOCR一键搭建文字识别和身份证识别web api接口

前言 通过这篇文章【基于PaddleOCR的DBNet神经网络实现全网最快最准的身份证识别模型】开发的身份证识别模型,还无法进行部署应用,这篇文章就已经开发好的代码如何部署,并如何通过api的接口进行访问进行讲解。 项目部署 以windows系统为例&…

LeetCode1318. Minimum Flips to Make a OR b Equal to c

文章目录 一、题目二、题解 一、题目 Given 3 positives numbers a, b and c. Return the minimum flips required in some bits of a and b to make ( a OR b c ). (bitwise OR operation). Flip operation consists of change any single bit 1 to 0 or change the bit 0 t…

Python 爬虫之简单的爬虫(三)

爬取动态网页(上) 文章目录 爬取动态网页(上)前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取指定数据 总结 前言 之前的两篇写的是爬取静态网页的内容,比较简单。接下来呢给大家讲一下如何去…

使用Redisson实现高并发场景下的缓存穿透、缓存击穿、缓存雪崩以及缓存数据不一致性的问题

使用Redisson实现高并发场景下的缓存穿透、缓存击穿、缓存雪崩以及缓存数据不一致性的问题 缓存击穿:同一时间进行查询,缓存中没有找到,查询数据库,可以通过设置不同的过期时间解决缓存穿透:同一时间进行查询&#xf…

20V升26V 600mA升压型LED驱动芯片,PWM调光芯片-AH1160

AH1160是一个功能强大的升压型LED驱动芯片,专为需要精确控制LED亮度的PWM调光应用而设计。它可将20V输入电压升压至26V,同时提供稳定的600mA电流输出,适用于各种LED照明设备。 芯片特点: 1. 输入电压范围:AH1160可在…

linux驱动的学习 驱动开发初识

1 设备的概念 在学习驱动和其开发之前,首先要知道所谓驱动,其对象就是设备。 1.1 主设备号&次设备号: 在Linux中,各种设备都以文件的形式存在/dev目录下,称为设备文件。最上层的应用程序可以打开,关…

uniapp获取键盘高度顶起底部输入框

核心代码&#xff1a; uni.onKeyboardHeightChange((res) > {console.log(res.height);//转化为rpxthis.KeyHight res.height;}); 全部代码&#xff1a; <template><view class"pagesone" :class"bg-themeColor.name" style"padding-t…

【Windows系统C盘爆红】之扩展C盘大小详细步骤

扩展C盘大小详细步骤 一、C盘爆红怎么办二、为什么C盘容易爆满三、c盘扩容 建议&#xff1a;文中的两处链接&#xff0c;可以参考进行c盘操作&#xff01; 一、C盘爆红怎么办 我们好多人在使用一段时间电脑后&#xff0c;发现C盘大小会急剧减少&#xff0c;开始小蓝条快占满&…

【Go】基于GoFiber从零开始搭建一个GoWeb后台管理系统(五)角色管理、菜单管理模块

窝来辣&#x1f601; 下面是前几篇的内容&#xff1a; 第一篇&#xff1a;【Go】基于GoFiber从零开始搭建一个GoWeb后台管理系统&#xff08;一&#xff09;搭建项目 第二篇&#xff1a;【Go】基于GoFiber从零开始搭建一个GoWeb后台管理系统&#xff08;二&#xff09;日志…

挑战52天学小猪佩奇笔记--day26

52天学完小猪佩奇--day26 ​【本文说明】 本文内容来源于对B站UP 脑洞部长 的系列视频 挑战52天背完小猪佩奇----day26 的视频内容总结&#xff0c;方便复习。强烈建议大家去关注一波UP&#xff0c;配合UP视频学习。 day26的主题&#xff1a;堆雪人 猜台词&#xff1a; 旁白&am…

卷积神经网络的学习与实现

基于matlab的卷积神经网络(CNN)讲解及代码_matlab中如何查看cnn损失函数-CSDN博客 可以看到与BP神经网络相比&#xff0c;卷积神经网络更加的复杂&#xff0c;这里将会以cnn作为学习案例。 1.经典反向传播算法公式详细推导 这里引用经典反向传播算法公式详细推导_反向目标公…

docker jar包打成镜像并推送到仓库

shell脚本 #!/bin/bash image_name$1 version$2 echo ${version}echo build...... docker build -t ${image_name}:${version} . echo build doing..... sleep 10 image_idsudo docker images | grep ${image_name} | awk -F" " {print $3} | head -n 1 echo ${imag…

敏捷开发项目管理流程及scrum工具

项目启动&#xff1a; 团队明确项目愿景、目标和范围&#xff0c;确定项目范围和优先级&#xff0c;并建立团队以及开展初步计划。 制定产品待办事项清单&#xff08;Product Backlog&#xff09;&#xff1a; 定义项目所需功能、任务和需求列表&#xff0c;并按优先级排序。 …

使用libaom处理av1编码教程

使用libaom处理av1编码教程 文章目录 使用libaom处理av1编码教程一. av1 是什么二. av1 用处三. libaom 是什么四. libaom 安装五. libaom 安装完成六. 解码av1 一. av1 是什么 AV1&#xff08;AOMedia Video 1&#xff09;是一种 开源视频编码格式 。它由开放媒体联盟 (AOM) …

N6705B 直流电源分析仪,模块化,600 W,4 个插槽,是德科技 低功耗测试专家

N6705B 直流电源分析仪 简述&#xff1a; N6705B 直流电源分析仪将多达 4 个先进电源与数字万用表、示波器、任意波形发生器和 Data logger 特性融为一体&#xff0c;可以显著提高向被测件提供直流电压和电流以及进行测量的效率。N6705B 可独立测量被测件的电流&#xff0c;无…

【重点】【前缀树|字典树】208.实现Trie(前缀树)

题目 前缀树介绍&#xff1a;https://blog.csdn.net/DeveloperFire/article/details/128861092 什么是前缀树 在计算机科学中&#xff0c;trie&#xff0c;又称前缀树或字典树&#xff0c;是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串。与二叉查…

手写RTOS准备

1. 确定RTOS基本功能 首先&#xff0c;你需要定义你的RTOS应该具备的基本功能。对于一个简单的RTOS&#xff0c;你可能需要包括以下功能&#xff1a; 任务调度&#xff1a;&#xff08;Task Scheduling&#xff09;&#xff1a;这是RTOS最核心的功能之一。它允许系统支持多个任…

【Apache-StreamPark】Flink 开发利器 StreamPark 的介绍、安装、使用

【Apache-StreamPark】Flink 开发利器 StreamPark 的介绍、安装、使用 1&#xff09;框架介绍与引入1.1.&#x1f680; 什么是 StreamPark1.2.&#x1f389; Features1.3.&#x1f3f3;‍&#x1f308; 组成部分1.4.引入 StreamPark 2&#xff09;安装部署2.1.环境要求2.2.Hado…

【缓存】一、Redis的基本使用与Redisson分布式锁

缓存 缓存技术是一种可以大幅度提高系统性能的技术&#xff0c;我们可以在某些适用的场景下使用缓存来大幅度的提高系统性能 读缓存的基本流程&#xff1a; 请求向缓存中查数据 if (命中) {返回缓存中的数据 } else {从数据库中取出数据将该数据在缓存中再存储一份返回缓存中…

重温经典struts1之八种页面跳转或请求转发的方式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 今天来学习下&#xff0c;struts1框架中实现页面跳转或请求转发的八种方式。 页面跳转方式 request的Dispatcher方法 这种方式在学习servlet编程中&#xff0c;我们学…