关于PID 第1篇

PID是比例,积分,微分的英文单词的首字母的简称。下面举个例子说明一下PID,让大家有个感官的认识。

一个人闭眼走路,假设他知道自己离目的地有100米远,那么他就以每步1米的速度走向目的地,100米刚刚好是100步,这是一个非常理想化的现象。假设他不知道目的地有多远,目的地可能是1000米也有可能是10000米,他就用每步3米的速度向前走,很不巧的是这个目的地在80米处,他走了26步时刚刚好差2米,走27步有刚刚好又多出1米,这就是所谓的稳态误差。如果他知道目的地在大概15米处得地方,开始这个人以每步1米的速度,走完一步然后目测一下离目的地还有多远,结果发现还剩下大概14米,显然每步1米太慢了,因此决定每步要大于1米。得出一条式子: y= Kp *e(t)

y为下一次每步要走的距离,e(t) 为目测距离,也就是偏差, Kp就是一个常数。

假设我们把Kp设置为0.5,由公式 y= Kp *e(t) 可以得出 y=7;也就是说他下一步要以每秒7米得速度走,重复上述的过程。己经走了7+1米,然后目测一下15米的目的地处,还有7米得误差。所以下一步要走3.5米,然后在重复,发现最后会出现一个稳态的误差,也就是多走一步会超出目的地,少走一步又没到目的地。当然这个上述的例子情况非常特殊,大家可能觉得最后那些误差可以忽略,但是实际应用中,肯定没有人走路的那么特殊,按照这种线性比例下去最后得到的误差会非常大,所以就引入了一个积分的概念。

积分跟比例的专业阐述:

比例(P)控制

比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。

积分(I)控制

在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差的消除取决于积分的时间,随着时间的增加,积分项会增大。即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。

微分的专业阐述:

控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入 “比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。具有比例+微分(PD)的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。

微分调节就是偏差值的变化率。例如,如果输入偏差值线性变化,则在调节器输出侧叠加一个恒定的调节量。大部分控制系统不需要调节微分时间。因为只有时间滞后的系统才需要附加这个参数。如果画蛇添足加上这个参数反而会使系统的控制受到影响。举个例子,人去调节窝炉的温度,慢慢调节旋钮,使得温度慢慢变大,要使得温度达到某个固定值,人可以慢慢调节,边看温度边调节。如果开始调节时离目标温度相差较大就可以快速旋旋钮(比例效果),到最后要使得温度误差小就微调(积分效果)。然后实际上温度是有一个惯性在那里,开始你以很快速度调节旋钮的时候温度不会突变,不会一下子就达到稳定值,它慢慢增加到最后,当他看到温度值离目标温度还差这么远,又加快旋转旋钮,最终结果导致实际温度跟目标温度差别非常远,微调也跟本没法调整,最后导致系统的不稳定。但是如果这个人很有经验,他事先知道这个温度是有惯性的,开始它快速旋转旋钮看温度上升率非常高,也就是温度变化非常快,他就放慢旋转速度了,最后结果是准确的把温度调整到最佳(微分效果)。

综上所述得到PID公式:

PID可分为增量式PID和位置式PID。其实PID的算法可以做很深,但没必要,一般入门级的算法已经在很多场合够用了,增量式PID算法运算量少,非常适合单片机的应用。显然要想给单片机运算,就必须是数字量,而上述的PID是模拟PID,我们要将他数字化,离散化。

积分定义

设f(x)在[a,b]上有界,任意插入若干个分点 a=x0<x1<...<xn-1<xn=b把区间[a,b]分成n个小区间[x0,x1]...[xn-1,xn]。在小区间[xi-1,xi]上任取一点ξi(xi-1≤ξi≤xi), f(ξi)与小区间长度的乘积f(ξi)△xi,并作出和。

如果不论对[a,b]怎样分法,也不论在小区间上的点ξi怎样取法,只要当区间的长度趋于零时,和S总趋于确定的极限I,这时我们称这个极限I为函数f(x)在区间[a,b]上的定积分,记作:

微分定义

我们可以想象把上图中的f(x)换成e(t),x轴换成t轴,把△x换成△t,当△x非常小的时候曲线MN等价于直线MN,△y就等于dy,所以

增量式PID算法实现:

PID离散化得到在k-1时刻的输出

因此得到一个增量

时间: 2024-11-09 20:39:18

关于PID 第1篇的相关文章

从Cts测试testCheckForDuplicateOutput到linux kernel中Thread消耗PID

最近折腾CTS android.security.cts testCheckForDuplicateOutput项,单项测试很容易过,但是联测就挂了. 源码:http://xdecay.com/docs/android-sdk/cts/tests/tests/security/d0/db5/_cloned_secure_random_test_8java_source.php 测试的原理是:不停的创建和关闭进程,测试Pass的前提是出现两个Pid相同的进程.. 循环过程如下: a). 创建进程A

致DBA:为什么你经常犯错,是因为你做的功课不够

专职做DBA已经6年多的事件了,看同行.同事犯了太多的错误,自己也犯了非常多的错误.一路走来,感触非常深.然而绝大多数的错误其实都是很低级的错误.有的是因为不了解某个引擎的特性导致:有的是因为对线上环境不了解导致:有的是因为经验不足导致:一路上,跌跌撞撞,从小公司DBA,到腾讯高级DBA,再到现在的金融数据库DBA. 不由得想起5年前的我,刚进入DBA行业,缺乏经验,经常犯错误,不是我不够努力,更多的是初来咋到的我根本不知道应该在哪方面下功夫.本文就是基于这方面的考虑,根据自己在DBA这个职业上

[转载]腾讯专家:论高级DBA的自我修养

作者介绍: 张秀云:2007年开始从事运维方面的工作,经历过网络管理员.linux运维工程师.DBA.分布式存储运维等多个IT职位.对linux运维.mysql数据库.分布式存储有丰富的经验.2012年加盟腾讯,目前在腾讯负责腾讯云数据库平台和分布式存储运维平台的运维规划工作. 微信:feihongwuhen 前言 专职做DBA已经6年多的事件了,看同行.同事犯了太多的错误,自己也犯了非常多的错误.一路走来,感触非常深.然而绝大多数的错误其实都是很低级的错误. 有的是因为不了解某个引擎的特性导致

使用pipenv,听说是最好的虚拟环境管理方式

上一篇讲到安装python3 https://www.cnblogs.com/kkkboshow/p/11166160.html 1.pipenv安装 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv 2.pipenv启动 python3 -m pipenv shell 3.会自动生成Pipfile,可以将依赖加入Pipfile中,使用命令升级虚拟环境 pipenv update 4.或者使用命令单独安装 pipenv

诗经 全文

诗经 全文 (带注释和译文) http://www.edu009.com/Article/HTML/Article_60756.html <诗经> 春秋·孔丘 <诗经>是我国第一部诗歌总集,先秦时代称为“诗”或“诗三百”,孔子加以了整理.汉武帝采纳董仲舒“罢黜百家,独尊儒术”的建议,尊“诗”为经典,定名为<诗经>. <诗经>现存诗歌 305 篇,包括西周初年到春秋中叶共 500 余年的民歌和朝庙乐章,分为风.雅.颂三章. “风”包括周南.召南.邶.鄘.卫.王

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

毕业设计准备篇一——环境搭建

毕业设计准备篇一--环境搭建 经过四年的学习和实战经验,打算做一个可以融合大多数学习的知识的毕业设计,所以就给自己的毕设取名:(分布式)桌面化多媒体网站系统.系统采用的构架如图1所示. 图1 系统架构 其中数据库集群目前采用mysql集群,为什么呢,因为目前mysql使用率还是很大的,而且mysql官方文档详细,最大的原因是因为自己笔记本配置不够高,不能搭建oracle集群.业务集群和WEB集群使用dubbo来实现远程调用及服务治理. 本篇文档的主要内容是记录毕设准备工作--环境搭建. 环境搭建

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc

SaltStack 入门到精通 - 第一篇: 安装SaltStack

实际环境的设定: 系统环境: centos6 或centos5 实验机器: 192.168.1.100 软件需求: salt 套件,及其需求环境 实验目的: 成功安装salt,并实现salt主从间通讯 特殊设置: 其它目的: 安装SaltStack(下面简称为salt) epel安装:salt安装需要epel源支持,所以在安装salt前需要先安装epel包 # centos5 下载下面rpm  wget -O    epel.rpm https://dl.fedoraproject.org/pu