【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.hqwc.cn/news/286093.html

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

相关文章

无懈可击的防泄密之旅:迅软DSE在民营银行的成功实践

客户简要介绍 某股份有限公司主体是中部地区的民营银行,由其母公司联合9家知名民营企业共同发起设立。正式开业于2016年,紧紧围绕目标产业生态圈和消费金融,着力打造产业银行、便捷银行、数字银行、财富管理银行为一体的BEST银行&#xff0c…

scrapy批量爬取豆瓣电影排行信息

scrapy批量爬取豆瓣电影排行信息 1.创建项目2.编写items3.douban.py4.pipelines.py5.爬取得到的文件 scrapy的使用及其安装请看这里 使用scrapy框架批量爬取豆瓣电影排行信息,首先看到豆瓣电影链接为 https://movie.douban.com/top250 经过分析,一共10页…

虚幻学习笔记18—C++委托(多播)和事件

一、前言 委托分单播和多播,多播就是可以绑定多个回调函数,然后一次性执行。这样也可以理解为啥多播没有返回值,多个回调函数执行后返回哪一个都是问题啊。而事件呢官方官方文档说法是“对于事件而言,只有定义事件的类才能调用 Br…

在 linux上运行 Scratch,找到了更github 的项目地址,而且找到了scratch的官方项目。

1,关于Scratch Scratch 是麻省理工学院的“终身幼儿园团队”发布的一种图形化编程工具, 主要面对全球青少年开放,所有人都可以在软件中创作自己的程序。 2,在linux 上面还真有个默认的 scratch 版本 但是太老旧了。 于是找了下…

麒麟V10 ARM内核aarch64 安装harbor redis 存储错误解决办法

安装harbor 里面自带的 redis 报错 “jemalloc: Unsupported system page size” 解决办法 下载指定镜像的redis 替换harbor 自带的redis镜像 修改 docker-compose 文件替换原来的镜像版本。 删除 重构镜像执行: docker-compose up –build 后台启动&#xff…

SCADA助力食品加工数字化变革:未来产业的智慧引擎

一、背景介绍 当前,在国际市场竞争加剧、消费者个性化需求突出的背景下,我国食品加工行业面临着诸多挑战:越发严苛的食品安全标准、追求供应链的透明度和效率、进一步提高产品质量和降低成本等等。 为了应对上述挑战,我国食品加…

生日蜡烛C语言

分析&#xff1a;假设这个人只能活到100岁&#xff0c;如果不这样规定的话&#xff0c;那么这个人就可以假设活到老236岁&#xff0c;直接一次吹236个蜡烛&#xff0c;我们就枚举出所以情况&#xff0c;从一岁开始。 #include <stdio.h> int f(int a,int b){//计算从a到…

《代码随想录》--二叉树(二)

《代码随想录》--二叉树 101.对称二叉树相关题目 101.对称二叉树 leetcode链接 代码实现 递归 class Solution {public boolean isSymmetric(TreeNode root) {if(root null) return true;return compare(root.left,root.right);}public boolean compare(TreeNode left,Tree…

【微服务】springboot整合minio详解

目录 一、前言 二、Minio 概述 2.1 Minio简介 2.1 Minio特点 三、Minio 环境搭建 3.1 部署过程 3.1.1 拉取镜像 3.1.2 启动容器 3.1.3 访问web页面 四、Minio基本使用 4.1 基本概念 4.2 上传文件演示 4.3 用户管理 4.4 Java操作Minio 4.4.1 导入依赖 4.4.2 上传…

Java操作windows系统功能(二)

Java可以通过调用Windows系统的API来操作Windows&#xff0c;实现一些基本的操作&#xff0c;例如打开、关闭窗口、创建文件夹、复制、删除文件等。 具体操作可以引入Java的java.awt和java.awt.event包&#xff0c;并使用java.awt.Desktop类来进行操作。 以下是一些常用的操作…

阿里云登录镜像仓库报错: Error response from daemon: Get https://

阿里云登录镜像仓库报错: Error response from daemon: Get https:// 1. 故障现象 开发反应自用笔记本连接镜像仓库是正常的,但通过服务器连接镜像仓库一直失败. 报错信息如下: Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthoriz…

避坑指南:uni-forms表单在uni-app中的实践经验

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;uni-app篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:uni-app中forms表单的避坑指南篇 该篇章已被前端圈子收录,点此处进入即可查看更多优质内…