PID 算法 (温控为例子)
一:位式控制:
位式控制算法输出信号一般只有高低两种状态。
算法输出信号out的依据 PV < SP => H; PV >= SP => L
对于系统惯性,会导致系统震荡
- PID算法 (基于位式控制,做了很多优化)
SP: Set Point
PV: Process Value
- 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 算法 (温控为例子)相关推荐
- pid温度控制c语言程序及仿真,温度控制PID算法的C语言程序实例代码
//PID算法温控C语言 #include #include #include #include struct PID { unsigned int SetPoint; // 设定目标 Desired ...
- python基础教程:python实现PID算法及测试的例子
今天小编就为大家分享一篇python实现PID算法及测试的例子,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 PID算法实现 import timeclass PID:def __i ...
- pid matlab 温度控制,温控PID算法的具体实现(一)
经过本人发表的上一篇文章<几种温度算法的比较与总结>可知,分段式PID算法既可以提高温控系统的响应速度,又可以提高温控系统的控温精度,现将以增量式PID算法为例总结一下其具体的实现步骤或过 ...
- LabVIEW增量式PID算法控制房间温度变化的简单例子的程序
PID相关的基础知识可以查看我之前写的博客: PID算法的基础知识 基于PID算法的房间温度控制 增量式PID算法控制房间温度变化的简单例子 LabVIEW简单的PID控制程序 前面板
- 小型温控系统c语言程序,pid算法温度控制c语言程序 - 全文
温度控制PID自整定原理介绍 整定PID(三模式)控制器 整定温度控制器涉及设置比例.积分和微分值,以得到对特定过 程的可能的最佳控制.如果控制器不包含自动整定算法,或者自 动整定算法未提供适合特定应 ...
- PID算法搞不懂?看这篇文章。
大家好,我是张巧龙,网上关于PID算法的文章很多,但是感觉有必要自己再进行一次总结,抽丝剥茧地重新认识了一下PID: 1 前言 2 开环控制 3 闭环控制 4 PID 4.1 系统架构 4.2 理论基 ...
- 电子设计竞赛(4)-常用的两种PID算法
公众号关注 "大鱼机器人" 设为 "星标",重磅干货,第一时间送达! 1. 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备.气动 ...
- 用Excel教会你PID算法
01.引入PID 电机控制 这样是没有反馈的,也就是说我们完全相信输入的数字,且是理想化的模型,比如输入占空比为50%的25Kz的PWM,车轮速度为1m/s,实际产品中会受到各种这样的影响,比如地面阻 ...
- 基于bp神经网络的pid算法,神经网络pid控制器设计
基于BP神经网络的PID控制器设计 参考一下刘金琨的<先进PID控制>这本书. 例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a ...
最新文章
- Elasticsearch之分词
- H5案例分享:移动端滑屏 touch事件
- UOJ #214 [UNR #1]合唱队形 (概率期望计数、DP、Min-Max容斥)
- 【NGN学习笔记】6 代理(Proxy)和背靠背用户代理(B2BUA)
- Android源码设计模式解析与实战(四)
- 代写python作业 费用_代写dither method作业、代做python程序设计作业、代写python语言作业、代做Image Dithering作...
- 调用java的webservice返回null
- loinc编码_医学知识组织系统:术语与编码
- 基于PHP的校园竞赛信息网站 毕业设计-附源码221230
- shell 值判断,大于0,等于0,小于0,大于等于0,小于等于0,不等于0
- windows无法连接到打印机
- 从业10多年,我总结了这几款程序员必备实用工具
- 温控仪C语言程序,模糊PID控制温控系统设计C语言程序代码
- CSS如何实现文字两端对齐
- 未来的趋势—电子签约流行
- 如何从ST官网下载官方库函数(更新版)
- A Game of Thrones(24)
- Android 图片加边框
- 超声波测距仪编程_简易超声波测距仪的制作
- 考虑碳交易机制的园区综合能源系统电热协同运行优化研究(Matlab代码实现)
热门文章
- CentOS 7.0 扩展分区空间
- How to Google
- 九宫格游戏-第14届蓝桥杯省赛Scratch初级组真题第5题
- IM即时通信学习总结(1):IM系统是什么?
- python实现“快递价格查询系统”的编写
- 超实用!使用Python快速对比两个Excel表格之间的差异
- 多元函数的二阶泰勒展开推导
- C语言期末考试可以运行嘛,C语言期末考试总结,看完保你过-
- 【元胞自动机】激进策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型matlab源码
- ubuntu入门---从配置虚拟机到使用qtcreator运行opencv3.4(C++)