PID算法控制简单理解
1 传统的位式控制算法
用户期望值Sv(设定值)经控制算法输出一个输出信号OUT,输出信号加载到执行部件上(像MOS管等)对控制对象进行控制(步进电机、加热器等),控制对象的当前值(Pv)如速度通过传感器反馈给控制算法与Sv相比较。
特点:1 位式算法输出的控制信号只有两种状态‘H’或者‘L’。
2 算法输出信号OUT的依据:
如果Pv>=Sv 输出信号高了
如果Pv<Sv 输出信号低了
缺点:只能考察控制对象的当前值
2 PID算法
Sv:用户的设定值(目标值)
Pv:反应负载当前的状态值(控制对象当前的状态值)
E = Sv - Pv :偏差值
2.1 PID算法分析
1.从开始工作到当前时刻得到一个采样点序列(假如每秒采样一次,Xk表示当前时刻的采样值):
X1,X2,X3,..........Xk-1,Xk
2.分析采样点序列得到三个信息:
1> 偏差值Ek = Sv - Xk 反映了当前时刻,传感器反馈回来的值与目标值偏差的程度;
如果:Ek>0 表示当前时刻未达标
Ek=0 表示当前时刻已达标
Ek<0 表示当前时刻已超标
设:Pout = Kp * Ek ——比例控制
特点:比例控制一般输出为PWM信号,通过调节PWM的占空比,来对输出进行控制。比例控制只考虑当前时刻是否有偏差,当Ek=0时,负载就处于失控状态,PWM此时可不起作用;比例控制没有偏差时是不起作用的,需要始终有一个偏差。
一般地在算法上加一个常数:
Pout = Kp * Ek + out0 ;
2>历史偏差序列(有正数有负数)
设:E1=Sv-X1,E2=Sv-X2,E3=Sv-X3,.........Ek = Sv - Xk
得序列:E1,E2,E3,.............Ek.
Sk=E1+E2+E3+............+Ek
如果:Sk>0 过去时间段大多数时刻未达标
Sk=0 过去时间段总体情况较好
Sk<0 过去时间段大多数时刻超标
根据历史状态输出信号得:
Iout = Kp * Sk ——积分算法
单纯的积分控制Sk=0时,会严重干扰当前情况,进入失控状态;一般的
Iout = Kp * Ek + out0
3>最近两次的偏差相减
Dk=Ek-Ek-1
如果:Dk>0 偏差有增大趋势
Dk=0 偏差趋势没有变化
Dk<0 偏差有减小趋势
Dout =Dk * Kp ——微分控制
微分控制不可以独立行动,微分算法只关心偏差有没有变化趋势
Dout =Dk * Kp + out0
PID算法控制简单理解的更多相关文章
- PID算法控制直流电机笔记
1.将偏差的比例.积分和微分通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器称为PID控制器.简单说就是根据系统的误差,利用比例.积分.微分计算出控制量进行控制. 2.为什么需要P ...
- BOOTH 算法的简单理解
学习FPGA时,对于乘法的运算,尤其是对于有符号的乘法运算,也许最熟悉不过的就是 BOOTH算法了. 这里讲解一下BOOTH算法的计算过程,方便大家对BOOTH的理解. 上图是BOOTH ...
- 推荐系统 LFM 算法的简单理解,感觉比大部分网上抄来抄去的文章好理解
本文主要是基于<推荐系统实践>这本书的读书笔记,还没有实践这些算法. LFM算法是属于隐含语义模型的算法,不同于基于邻域的推荐算法. 隐含语义模型有:LFM,LDA,Topic Model ...
- 关于Dijkstra 和 Bellman-ford算法的简单理解
两个算法都是跟求图的有源最短路径有关.Dijkstra主要针对的是无负权值节点的图,而Bellman-Ford算法则是可以处理有负权值的有向图的最短路径问题.两者都用到了一个“松弛计算”的方法,也就是 ...
- PID算法
所谓PID就是比例-积分-微分的英文缩写,但并不是必须同时具备这三种算法,也可以是 PD, PI,甚至只有 P算法控制,下面分别介绍每个参数的含义:首先需要明确一个事实就是,要实现PID算法,必须在硬 ...
- PID算法通俗理解,平衡车,倒立摆,适合不理解PID算法的人来看!
先插句广告,本人QQ522414928,不熟悉PID算法的可以一起交流学习,随时在线(PID资料再我的另一篇博客里) 倒立摆资料连接↓ https://www.cnblogs.com/LiuXinyu ...
- PID算法的理解及场景模拟
增量式PID算法的简化版之后的公式: △u(t)=Ae(t)-Be(t-1)+Ce(t-2) △u:PID控制器输出的下一时刻的调整量 e(t):PID控制器在当前时刻的状态变化量-给定值 e(t-1 ...
- PID算法笔记2
总所周知,PID算法是个很经典的东西.而做自平衡小车,飞行器PID是一个必须翻过的坎.因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂.并举出PID的形象例子来帮助理解PID.一. ...
- PID控制算法的C语言实现一 PID算法原理
本系列是转载............. 全部的程序有一个共同点:就是我没认真去调pid的参数 在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设 ...
随机推荐
- MFC CEdit控件 自动换行
属性设置: Auto HScroll : False Auto VScroll : True Multiline : Ture Want Return : Ture 亲自测试,值得信赖!
- oracle 修改表结构,增加列,删除列等
增加一列:ALTER TABLE yourTabbleName ADD columnName dataType; 增加多列:ALTER TABLE yourTabbleName ADD (column ...
- featuremap尺寸的计算
对于卷积层,向下取整 对于池化层:想上取整 output=((input+2*pad-dilation*(kernel-1)+1)/stride)+1 input:输入尺寸 output:输出尺寸 p ...
- 设置一个div网页滚动时,使其固定在头部,当页面滚动到距离头部300px时,隐藏该div,另一个div在底部,此时显示;当页面滚动到起始位置时,头部div出现,底部div隐藏
设置一个div网页滚动时,使其固定在头部,当页面滚动到距离头部300px时,隐藏该div,另一个div在底部,此时显示: 当页面滚动到起始位置时,头部div出现,底部div隐藏 前端代码: <! ...
- XML系列之--解析电文格式的XML(二)
上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...
- python range函数
这个函数很简单,就不写例子了,看看语法,拿来即用 python range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法 range(start, stop[, step]) 参数 ...
- array_contains 分析函数使用演示
Hive中的array_contains函数与SQL中的 in关键字 操作类似,用于判定 包含(array_contains)或不包含(!array_contains)关系.与 in不同的是array ...
- 【函数封装】javascript判断是否是微信浏览器
//判断是否是微信浏览器的函数 function isWeiXin(){ //window.navigator.userAgent属性包含了浏览器类型.版本.操作系统类型.浏览器引擎类型等信息,这个属 ...
- 20165316 预备作业3 Linux安装及学习
Linux安装 我下载的是VirtualBox 5.2.6和Ubuntu 17.10.1,感觉这两个版本的兼容性不是太好,因为我在Oracle的官网社区中看到不少新版本的问题没有得到解决,而老版本(V ...
- Codeforce 513A - Game
Two players play a simple game. Each player is provided with a box with balls. First player's box co ...