一:位式控制:

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

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

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

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

SP: Set Point

PV: Process Value

  1. PID算法分析:

采样的温度系列: X, X, X, ......, X, X, X

1). 当前偏差: E = SP - X

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

P= K * E + Out  ---比例控制 (只考虑现在偏差,偏差越大,输出PWM越大)

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

2). 历史的偏差系列: E, E, E, ......, E, E, E

S =  E+ E + E+ ...... + E + E + E

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

I =  K * S + Out  ---积分算法控制(只考虑历史偏差,缺点很大)

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

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

D = E -  E ---偏差变化率,变化趋势

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

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

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

二:PID算法的数学模型:

PID =  P + I + D

=  (K * E + Out) + (K * S + Out) + (K * D + Out)

=  K * ( E +  S +  D) + Out

S 的处理:

S  =  * E * T

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

T : 积分常数(积分时间)越大影响越弱 (不能太大也不能太小)

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

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

两个关键因素的选择:T 和 T

D 的处理:

D = T * (( E -  E ) / T)

T: 微分常数

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

OUT = (K * E) + (K * T/T * E)  + ( K * T/T *  ( E -  E )) + OUT

四: K K 和 K的关系:

K

K = K * T/T

K = K * T/T

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

 = OUT - OUT

OUT = (K * E) + (K * T/T * E)  + ( K * T/T *  ( E -  E )) + Out

OUT = (K * E) + (K * T/T * E)  + ( K * T/T *  ( E -  E )) + Out

 =  (K * ( E - E))  +  K *  T/T *  E + K * T/T * (  E -  2 * E + E)

E : 当前本次偏差值

E :上次偏差值

E :上上次偏差值

PID 算法 (温控为例子)相关推荐

  1. pid温度控制c语言程序及仿真,温度控制PID算法的C语言程序实例代码

    //PID算法温控C语言 #include #include #include #include struct PID { unsigned int SetPoint; // 设定目标 Desired ...

  2. python基础教程:python实现PID算法及测试的例子

    今天小编就为大家分享一篇python实现PID算法及测试的例子,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 PID算法实现 import timeclass PID:def __i ...

  3. pid matlab 温度控制,温控PID算法的具体实现(一)

    经过本人发表的上一篇文章<几种温度算法的比较与总结>可知,分段式PID算法既可以提高温控系统的响应速度,又可以提高温控系统的控温精度,现将以增量式PID算法为例总结一下其具体的实现步骤或过 ...

  4. LabVIEW增量式PID算法控制房间温度变化的简单例子的程序

    PID相关的基础知识可以查看我之前写的博客: PID算法的基础知识 基于PID算法的房间温度控制 增量式PID算法控制房间温度变化的简单例子 LabVIEW简单的PID控制程序 前面板

  5. 小型温控系统c语言程序,pid算法温度控制c语言程序 - 全文

    温度控制PID自整定原理介绍 整定PID(三模式)控制器 整定温度控制器涉及设置比例.积分和微分值,以得到对特定过 程的可能的最佳控制.如果控制器不包含自动整定算法,或者自 动整定算法未提供适合特定应 ...

  6. PID算法搞不懂?看这篇文章。

    大家好,我是张巧龙,网上关于PID算法的文章很多,但是感觉有必要自己再进行一次总结,抽丝剥茧地重新认识了一下PID: 1 前言 2 开环控制 3 闭环控制 4 PID 4.1 系统架构 4.2 理论基 ...

  7. 电子设计竞赛(4)-常用的两种PID算法

    公众号关注 "大鱼机器人" 设为 "星标",重磅干货,第一时间送达! 1. 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备.气动 ...

  8. 用Excel教会你PID算法

    01.引入PID 电机控制 这样是没有反馈的,也就是说我们完全相信输入的数字,且是理想化的模型,比如输入占空比为50%的25Kz的PWM,车轮速度为1m/s,实际产品中会受到各种这样的影响,比如地面阻 ...

  9. 基于bp神经网络的pid算法,神经网络pid控制器设计

    基于BP神经网络的PID控制器设计 参考一下刘金琨的<先进PID控制>这本书. 例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a ...

最新文章

  1. Elasticsearch之分词
  2. H5案例分享:移动端滑屏 touch事件
  3. UOJ #214 [UNR #1]合唱队形 (概率期望计数、DP、Min-Max容斥)
  4. 【NGN学习笔记】6 代理(Proxy)和背靠背用户代理(B2BUA)
  5. Android源码设计模式解析与实战(四)
  6. 代写python作业 费用_代写dither method作业、代做python程序设计作业、代写python语言作业、代做Image Dithering作...
  7. 调用java的webservice返回null
  8. loinc编码_医学知识组织系统:术语与编码
  9. 基于PHP的校园竞赛信息网站 毕业设计-附源码221230
  10. shell 值判断,大于0,等于0,小于0,大于等于0,小于等于0,不等于0
  11. windows无法连接到打印机
  12. 从业10多年,我总结了这几款程序员必备实用工具
  13. 温控仪C语言程序,模糊PID控制温控系统设计C语言程序代码
  14. CSS如何实现文字两端对齐
  15. 未来的趋势—电子签约流行
  16. 如何从ST官网下载官方库函数(更新版)
  17. A Game of Thrones(24)
  18. Android 图片加边框
  19. 超声波测距仪编程_简易超声波测距仪的制作
  20. 考虑碳交易机制的园区综合能源系统电热协同运行优化研究(Matlab代码实现)

热门文章

  1. CentOS 7.0 扩展分区空间
  2. How to Google
  3. 九宫格游戏-第14届蓝桥杯省赛Scratch初级组真题第5题
  4. IM即时通信学习总结(1):IM系统是什么?
  5. python实现“快递价格查询系统”的编写
  6. 超实用!使用Python快速对比两个Excel表格之间的差异
  7. 多元函数的二阶泰勒展开推导
  8. C语言期末考试可以运行嘛,C语言期末考试总结,看完保你过-
  9. 【元胞自动机】激进策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型matlab源码
  10. ubuntu入门---从配置虚拟机到使用qtcreator运行opencv3.4(C++)