PID 算法 (温控为例子)

2023-11-01

一:位式控制:

位式控制算法输出信号一般只有高低两种状态。

算法输出信号out的依据 PV < SP => H; PV >= SP => L

对于系统惯性,会导致系统震荡

  1. PID算法 (基于位式控制,做了很多优化)

SP: Set Point

PV: Process Value

  1. PID算法分析:

采样的温度系列: X_{1}, X_{2}, X_{3}, ......, X_{k-2}, X^{_{k-1}}, X_{k}

1). 当前偏差: E_{k} = SP - X_{k} 

      >0: 当前未达标; =0; 正好达标; <0: 当前超标

P_{Out}= K_{p} * E_{k} + Out_{0}  ---比例控制 (只考虑现在偏差,偏差越大,输出PWM越大)

因为如果 E_{k} 为0表述没有PWM输出了,为了维持系统温度, 需要有一个维持的默认常数输出值Out_{0}这样可以保证系统能温度在目标温度SP (根据不同系统,调试得到具体值。) 

 2). 历史的偏差系列: E_{1}, E_{2}, E_{3}, ......, E_{k-2}, E^{_{k-1}}, E_{k}

S_{k} =  E_{1}+ E_{2} + E_{3}+ ...... + E_{k-2} + E^{_{k-1}} + E_{k}

    >0: 表示过去这段时间,大多数情况下未达标; =0: 总体可以; <0: 表示过去这段时间,大多数情况下超标;

I_{Out} =  K_{p} * S_{k} + Out_{0}  ---积分算法控制(只考虑历史偏差,缺点很大)

因为如果 E_{k} 为0表述没有PWM输出了,为了维持系统温度, 需要有一个维持的默认常数输出值Out_{0}这样可以保证系统能温度在目标温度SP (根据不同系统,调试得到具体值。)

 3). 最近两次的偏差相减: 

 D_{k} = E_{k} -  E^{_{k-1}} ---偏差变化率,变化趋势

D_{Out} = K_{p} * D_{k} + Out_{0}  ---微分算法控制(只考最近两次的变化率,预测下一次的走势(可以适当通过系数增大变化率,这样可以提前控制未来的变化))

 >0: 表示偏差有增大趋势; =0: 表示偏差趋势没有改变; <0: 表示偏差有减小趋势;

因为如果 E_{k} 为0表述没有PWM输出了,为了维持系统温度, 需要有一个维持的默认常数输出值Out_{0}这样可以保证系统能温度在目标温度SP (根据不同系统,调试得到具体值。)

二:PID算法的数学模型: 

PID_{}^{_{Out}} =  P_{Out} + I_{Out} + D_{Out} 

            =  (K_{p} * E_{k} + Out_{0}) + (K_{p} * S_{k} + Out_{0}) + (K_{p} * D_{k} + Out_{0})

            =  K_{p} * ( E_{k} +  S_{k} +  D_{k}) + Out_{0} 

 S_{k} 的处理:

 S_{k}  =  \frac{1 }{T i}* \sum_{k=0}^{n}E_{k} * T

T: 采样周期(PID计算周期)

T_{i} : 积分常数(积分时间)越大影响越弱 (不能太大也不能太小)

 第一次达到目标温度SP之前,会产生错误,导致超调,过冲。为了避免超调, 可以做积分分离处理,可以在第一次达到目标温度SP之前,可以设置T_{i}为一个很大的值,把  S_{k} 忽略掉。

 积分项一般是在积分项在比例项失效时再起作用,用历史经验继续来控制。

两个关键因素的选择:T 和 T_{i} 

 D_{k} 的处理: 

  D_{k} = T_{d} * (( E_{k} -  E^{_{k-1}} ) / T)

T_{d}: 微分常数 

三:位置式PID 算法表达式:

OUT = (K_{p} * E_{k}) + (K_{p} * T/T_{i} * \sum_{k=0}^{n}E_{k})  + ( K_{p} * T_{d}/T *  ( E_{k} -  E^{_{k-1}} )) + OUT_{0} 

四: K_{p} K_{i} 和 K_{d}的关系:

 K_{p} 

 K_{i} = K_{p} * T/T_{i} 

 K_{d} = K_{p} * T_{d}/T

五:增量式PID (输出是一个增量,计算出控制量的增加值):

\Delta^{_{Out}} = OUT^{_{k}} - OUT^{_{k-1}}

 OUT^{_{k}} = (K_{p} * E_{k}) + (K_{p} * T/T_{i} * \sum_{k=0}^{n}E_{k})  + ( K_{p} * T_{d}/T *  ( E_{k} -  E^{_{k-1}} )) + Out_{0} 

  OUT^{_{k-1}} = (K_{p} * E^{_{k-1}}) + (K_{p} * T/T_{i} * \sum_{k=0}^{n-1}E_{k})  + ( K_{p} * T_{d}/T *  ( E^{_{k-1}} -  E^{_{k-2}} )) + Out_{0} 

 \Delta^{_{Out}} =  (K_{p} * ( E_{k} - E^{_{k-1}}))  +  K_{p} *  T/T_{i} *  E_{k} + K_{p} * T_{d}/T * (  E_{k} -  2 * E^{_{k-1}} + E^{_{k-2}})

  E_{k} : 当前本次偏差值

  E^{_{k-1}} :上次偏差值

  E^{_{k-2}} :上上次偏差值

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

PID 算法 (温控为例子) 的相关文章

  • DHCP协议的运行过程

    DHCP协议的运行过程 预热知识 DHCP协议是使用C S模式 DHCP服务器运行DHCP服务器进程 在用户主机上运行DHCP客户进程 简称为DHCP客户 DHCP协议是TCP IP应用层的协议 使用的是传输层的UDP所提供的服务 DHCP
  • 2022团体程序设计天梯赛题解 Python

    p1 签到题 print I m gonna win Today print 2022 04 23 p2 L1 2 种钻石 5 分 n v list map int input split print n v p3 L1 3 谁能进图书馆
  • Python三维绘图——Matplotlib

    菜鸡的第一篇博客 学习一下大佬的笔记 1 创建三维坐标轴对象Axes3D 方法一 利用关键字 projection 3D 来实现 方法一 利用关键字 objection 3d from matplotlib import pyplot as
  • JAVA【设计模式】开闭原则

    开闭原则 一 设计模式的规范 二 开闭原则 三 示例 开闭原则设计 UML关系图 一 设计模式的规范 设计模式遵循六 原则 单 职责 个类和 法只做 件事 替换 多态 类可扩展 类 依赖 倒置 细节依赖抽象 下层依赖上层 接 隔离 建 单

随机推荐

  • QT-事件循环机制

    QT事件循环理解 一 常见问题 问题 Qt中常见的事件有哪些 答 鼠标事件 QMouseEvent 键盘事件 QKeyEvent 绘制事件 QPaintEvent 窗口尺寸改变 QResizeEvent 滚动事件 QScrollEvent
  • R语言缺失值探索的强大R包:naniar

    简介 缺失值在数据中无处不在 需要在分析的初始阶段仔细探索和处理 在本次示例中 会详细介绍naniar包探索缺失值的方法和理念 它和ggplot2和tidy系列使用方法非常相似 上手并不困难 有时 解释缺失值出现的原因可能很简单 比如 可能
  • 紧跟产业区块链趋势,杭州米链科技运用区块链科技,赋能实体产业

    近日 2020年全球区块链发展趋势报告 发布 报告中指出 进入2020年之后 疫情倒逼全球各国和各行业的数字化进程加速 进而推动互联网服务也进一步升级 即需从消费互联网发展到 产业互联网 产业互联网的发展 对相关信息基础设施的可信 开放 敏
  • 【待完善】常见更改源操作(ubuntu、centos、pip等等)

    1 pip 临时切换 在进行安装时 加上 i https pypi tuna tsinghua edu cn simple选项 如 pip3 install tensorflow model analysis i https pypi tu
  • VisualStudio Code 安装 及常用插件

    首先检查电脑位数64还是32 在电脑桌面 鼠标右键单击 此电脑 属性 系统类型 官网下载页面 https code visualstudio com Download 一 同意协议 二 选择安装路径 英文路径 默认C盘也可以 默认安装路径为
  • 千年虫”bug归来,新一代程序员将如何解决

    新的十年开始了 二十年前 在千禧之年钟声敲响的时候 诸多 Y2K 应急队的程序员坐在电脑前惴惴不安 他们此前刚刚用最简单易行的 懒人方法 修补了一个被称为 千年虫 Millennium Bug 又称 Y2000 problem 简称 Y2K
  • 网络地址转换NAT

    1 局域网内主机如何与互联网上主机通信 假设局域网内主机分配到本地IP地址 但想和互联网上的主机通信 那么应当采取什么措施呢 最简单的办法就是设法申请一些全球IP地址 但这几乎无法做到 因为IPv4地址资源很早就被列强瓜分完毕 ipv4地址
  • 服务器租用机房机房的类型应该如何选择

    服务器租用机房机房的类型应该如何选择 1 单电信机房 单电信服务器机房业务模式比较固定 访问量也不是很大 适合新闻类网站或政务类网站 如果网站的PV流量持续增加 建议后期采用租赁CDN的方式解决非电信用户访问网站速度过慢的问题 2 双线机房
  • 3. 静态编译和动态编译

    简单的说 1 平时直接 gcc o 编译的都是动态编译的方法 2 动态编译是 gcc shared fPIC o 的方法生成 so动态库 再用 gcc o 把 so和main c编译成可执行文件 总结 静态库是必须要链接到执行文件中去的 而
  • 【NLP】第 7 章:使用序列到序列神经网络进行文本翻译

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 设计模式-单例模式-懒汉式饿汉式探讨

    文章目录 基础概念 饿汉式实例 懒汉式实例 懒汉式实例 互斥锁方式保障线程安全 懒汉式实例 双重检查锁定 Double Checked Locking 保障线程安全 大型项目中单例模式实用 数据库连接池 C语言 单例模式实现线程池 C语言单
  • Linux系统下解压当前目录下的所有.zip文件到指定目录

    可以使用以下的命令在Linux系统下解压当前目录下的所有 zip文件到指定目录 find type f name zip exec unzip o d path to destination 解释 find type f name zip
  • matlab读写xlsx文件

    做数据分析时经常需要将分析的结果写入文件保存 这里就说明一下matlab读写xlsx文件的方法 调用函数如下 写文件 files 文件路径 A 数据 sheet xlsx工作表 x1Range 工作表的单元格 files strcat pw
  • [技术讨论]PCB晶振layout需要注意事项

    晶振是单片机的心脏 所以晶振的重要性不言而喻 那么在PCB layout的时候 我们对晶振要有哪些注意事项呢 一 晶振的两个重要参数 晶振的频偏是指晶振输出的频率与其额定频率之间的差异 通常以ppm 百万分之一 为单位表示 频偏可能会受到晶
  • 怎么在云服务器上跑深度学习项目,深度学习训练

    MMCV 是一个面向计算机视觉的基础库 它支持了很多开源项目 注意事项 RTX 3000 系列显卡在 PyTorch 1 8 1 For CUDA 11 1 上 MMCV 目前工作不正常 使用此系列显卡时 请选择 PyTorch 1 7 1
  • C语言循环数组解决数学问题,通过C语言数组解决一些简单的递推数学问题

    通过C语言数组解决一些简单的递推数学问题 c语言是一种十分适合解决数学问题的编程语言 其中数组对于解决递推问题有十分优秀的作用 数组 数组就是变量的集合 是一种指定义变量的方法 一维数组 定义 类型 数组 数量 里的整数表示变量的数量 in
  • 【猿人学WEB题目专解】猿人学第2题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • 【计算机视觉

    文章目录 一 ZeroWaste 二 Aircraft Context Dataset 三 BdSLImset Bangladeshi Sign Language Image Dataset 四 COCO Tasks 五 Deep PCB
  • fragment中嵌套viewpager,vierpager中有多个fragment,不显示 .

    http blog csdn net shaoyizhe2006 article details 27352349
  • PID 算法 (温控为例子)

    一 位式控制 位式控制算法输出信号一般只有高低两种状态 算法输出信号out的依据 PV lt SP gt H PV gt SP gt L 对于系统惯性 会导致系统震荡 PID算法 基于位式控制 做了很多优化 SP Set Point PV