PID理解

合集下载

PID 通俗解释

PID 通俗解释

PID控制原理3个故事:看完您就明白了。

1、:PID的故事小明接到这样一个任务:有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。

小明接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,每30分钟来检查一次水面高度。

水漏得太快,每次小明来检查时,水都快漏完了,离要求的高度相差很远,小明改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。

几次试验后,确定每10分钟来检查一次。

这个检查时间就称为采样周期开始小明用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟才加够水,于是小明又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。

这个加水工具的大小就称为比例系数小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有打湿鞋的危险。

他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。

这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。

于是他试着变换不同大小口径的漏斗来控制加水的速度,最后终于找到了满意的漏斗。

漏斗的时间就称为积分时间小明终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。

小明又为难了!于是他又开努脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。

他又在要求水面位置上面一点将水凿一孔,再接一根管子到下面的备用桶里这样多出的水会从上面的孔里漏出来。

这个水漏出的快慢就称为微分时间看到几个问采样周期的帖子,临时想了这么个故事。

pid通俗易懂的解释

pid通俗易懂的解释

pid通俗易懂的解释pid,即proportional-integral-derivative,控制系统中常用的调节系统,需要利用此技术来指导被控对象达到极限配置或设定的预期状态,pid技术是工业控制中最重要的技术之一,用于控制机器的行为,以达到预定的计划。

PID技术的主要功能是调节被控对象的行为,使之更好地达到极限配置或设定的预期状态。

代码中,p是比例,i是积分,d是微分。

这三个量表示对被控对象的三种不同调整,它们分别产生有效的控制反应,从而帮助被控对象更快地达到极限配置或设定的预期状态。

比例(p)部分,也称为比例调节,是pid中最重要的部分,它通过检测错误信号(或者说,“误差”)来调节被控对象的行为。

比例的值越大,由此产生的反应就越大,因此,它可以更快地把被控对象带到预期状态。

但是,如果比例太大,就会造成过度反应,因此需要仔细调整比例大小,才能达到理想状态。

积分(i)部分,也称为积分调节,是pid中最耗时的部分。

它检测误差,并向当前运行方向积累误差,从而帮助被控对象达到预期状态。

例如,当被控对象的误差太小,而被控对象的当前运行方向正确时,积分会积累误差,从而使被控对象更快地达到预期状态。

但是,如果积分过大,可能会导致振荡,所以在使用的时候,也需要仔细调整积分的大小。

微分(d)部分,也称为微分调节,是pid中最容易理解的部分。

它检测误差,并基于误差的前后变化,调节被控对象的行为。

例如,当误差出现变化时,它会加快当前运行方向,从而帮助被控对象更快地达到预期状态。

但是,微分的值过大也会导致过度反应,所以,也需要仔细调整微分的大小,才能达到理想状态。

以上就是pid调节系统的简单介绍。

PID技术由比例、积分、微分三个量共同组成,依据不同调整,帮助被控对象更快地达到预期状态。

在使用过程中,大部分理论建议调整这三个量,以达到理想状态。

PID在实际生活中也有着广泛的应用,它可以应用于机器视觉检测、自动驾驶、工业自动化等领域,帮助机器更快地达到极限配置或设定的预期状态,从而获得更好的效果。

新手必看之pid教程

新手必看之pid教程

Pid教程
很多新手不知道最基本的pid我能理解,做淘客不知道pid的我的建议是先去阿里妈妈学习一下,但是居然还有很多做网站的也在问pid是什么,这个就很尴尬了,一边问站怎么建,一边问pid 是什么,像这种我是建议大家真的是去多了解了解再开始,如果你第一次问了pid是什么,或许还有人告诉你,如果你再问站怎么建,这个,你就自己去体会了
提倡大家做个爱学习的淘客,赚钱从来就不是一件容易的事。

废话说完了我还是得做个基础教程。

一、什么是pid?
pid即淘宝联盟标识淘客用户id,推广类型,推广位的一串数字。

通常以mm_开始,如: mm_32766788_4434234_36654914 其中,32766788 为淘宝联盟账号的ID。

4434234 为备案推广类型的ID。

36654914 为推广位的ID。

理解了这三个PID的意义,那么你就不会问pid会不会变,什么时候会变的问题了。

二、怎么获取通用和定向的pid?
三、怎么获取鹊桥pid?。

pid的简单理解

pid的简单理解

pid的简单理解PID是Proportional-Integral-Derivative的缩写,即比例-积分-微分控制。

它是一种常用的控制算法,广泛应用于工业自动化领域。

PID控制器通过对被控对象的测量值与设定值之间的误差进行计算,并根据比例项、积分项和微分项的权重对控制量进行调整,以使误差最小化,从而实现对被控对象的精确控制。

在PID控制器中,比例项(P项)是根据误差的大小来调整控制量的,比例项越大,控制量的变化就越大。

积分项(I项)是根据误差的累积值来调整控制量的,积分项可以消除稳态误差,提高系统的稳定性。

微分项(D项)是根据误差的变化率来调整控制量的,微分项可以预测误差的变化趋势,从而提高系统的响应速度和稳定性。

PID控制器的工作原理可以简单描述为以下几个步骤:1. 测量被控对象的实际值;2. 计算误差,即设定值与实际值之间的差异;3. 根据比例项、积分项和微分项的权重,计算控制量的调整值;4. 将调整值与当前控制量相加,得到新的控制量;5. 将新的控制量发送给被控对象,使其实际值逐渐趋近于设定值。

比例项的作用是根据误差的大小来调整控制量的变化幅度,当误差较大时,控制量的变化幅度也会较大,从而快速减小误差。

积分项的作用是根据误差的累积值来调整控制量的变化幅度,当误差存在较长时间时,积分项会逐渐增大,以消除稳态误差。

微分项的作用是根据误差的变化率来调整控制量的变化幅度,当误差的变化速度较大时,微分项会增大,以提高系统的响应速度和稳定性。

在实际应用中,PID控制器的参数调节是一个重要的环节。

通过合理地调节比例项、积分项和微分项的权重,可以使系统达到更好的控制效果。

比例项较大时,系统的响应速度会较快,但可能会引起超调现象;积分项较大时,系统的稳态误差会减小,但可能会引起震荡现象;微分项较大时,系统的稳定性会增强,但可能会引起超调现象。

因此,在实际应用中需要根据被控对象的特性和控制要求来选择合适的参数。

pid参数的定义

pid参数的定义

pid参数的定义在计算机系统中,pid(Process IDentifier)是一个用来区分不同进程的唯一标识符。

每个进程都有一个唯一的pid号,用来在系统中找到对应进程的相关信息。

在Unix、Linux等系统中,pid号通常是一个整数值,它表示进程在系统中的位置。

pid号的作用是方便系统进行进程管理和资源分配。

通过pid号,系统可以追踪进程的状态、调整进程的优先级、控制进程的执行等。

同时,pid号也可以帮助其他进程与指定进程进行通信,从而实现进程间的数据交互。

在实际应用中,pid号的使用非常广泛。

比如,当我们使用终端命令查看进程时,就可以通过pid号来识别不同的进程。

同时,许多系统调用和库函数也需要pid号作为参数,以便进行进程管理和控制。

通常情况下,每个进程都有一个唯一的pid号。

pid号的范围通常在0到65535之间,其中0表示系统进程,1表示init进程,而65535则是最大的pid号。

总之,pid号是一个非常重要的概念,它在进程管理和系统资源分配中扮演了重要的角色。

由于pid号的唯一性和特殊性,我们需要充分理解pid号的定义和用途,以便更好地管理和控制我们的计算机系统。

使用pid参数管理进程时,我们需要注意以下几点:1. 列出进程列表我们可以使用ps命令来列出当前系统中所有的进程列表,同时也会列出每个进程的pid号。

2. 终止进程我们可以使用kill命令来终止指定pid号的进程。

通常,我们可以使用kill -9命令来强制终止一个进程。

3. 获取进程信息我们可以使用top、htop等命令来获取当前系统中进程的信息,包括进程的状态、内存占用、CPU占用率等等。

同时,也可以使用kill -s命令来给指定进程发送信号。

4. 进程优先级我们可以使用nice命令来调整进程的优先级,从而影响其在系统资源分配中的权重。

综上所述,pid号是计算机系统中一个非常重要的概念,对于进程管理和调控都有着重要的作用。

如何快速读懂PID

如何快速读懂PID
1。了解工艺,PID由PFD发展来说,不管PID多么复杂,其PFD主线始终很清晰。大家一定要先看对工艺的描述,然后对照找出PID图的主线。初看图时可以先看的大概思路和流程,至于具体的如何实现再结合下面几条一点点的分析。
2。了解相关的标准,如设备的图形表示方法,阀门的DCS等,有些还涉及到自控的连锁控制等,这些内容最好看看相关标准或手册,有个大概的了解,至少知道那些符号的大概功能。
P&ID读图与画图-给初学者的建议
经常发现论坛上,有人问关于P&ID读图与画图的问题。
P&ID图对于初学者来说,确实是一个比较大的难题,各种设备,管线,各类管件,阀门盲板之类,一大堆的自控符号,让人无所适从。那么我们该如何下手学习呢,下面就我个人学习的一点体会分享大家,希望能抛砖引玉,让有经验的工程师们都能分享自己的经验来帮助新人快速成长。
3。看首页图。有些标准里面没有规定的,在某个项目自己有自己规定的符号的,只有通过看首页图才能明白。否则就是看天书一样,谁也不懂。
4。熟悉并掌握一些典型设备的P&ID与配管布置。这一点很重要,比如说离心泵,压缩机,反应釜,精馏塔,换热器等,这些化工厂最典型的设备都是有标准的PID方案的,不同的设计都大同小异,基本设计思路都是一样的。整个PID图纸其实就是不同设备单元的PID布置的组合。学会典型的PID布置,对于画PID图比读图更重要。因此,对于工艺设计工程师来说更应该熟悉典型设备的PID布置。
如何快速读懂PID
首先 ,要搞清楚什么是PID 管道及仪表流程图 PIPING INSTRUMENTATION DIAGRAM
它与PFD 最主要的区别就是加了"仪表"在里面,PFD PROCESS FLOW DIAGRAM

由入门到精通吃透PID

由入门到精通吃透PID

由入门到精通吃透PIDPID控制器(Proportional-Integral-Derivative Controller)是一种常见的控制器,广泛应用于工业自动化领域。

它通过对系统的反馈信号进行比例、积分和微分运算,以达到控制系统稳定和响应速度的目的。

本文将从入门到精通分别介绍PID控制器的基本原理、参数调整方法和应用实例。

一、基本原理在控制系统中,PID控制器根据反馈信号与设定值之间的差异来调整输出信号,从而实现对被控对象的控制。

它由三个基本部分组成:比例控制部分、积分控制部分和微分控制部分。

1. 比例控制部分:根据反馈信号与设定值之间的差异,以一定的比例调节输出信号。

比例控制的作用是根据差异的大小来进行精确调节,但它不能解决系统的超调和稳态误差问题。

2. 积分控制部分:通过累积反馈信号与设定值之间的差异,对输出信号进行调节。

积分控制可以消除系统的稳态误差,但会增大系统的超调。

3. 微分控制部分:通过反馈信号的变化率来预测未来的发展趋势,以调节输出信号。

微分控制可以提高系统的响应速度和稳定性,但过大的微分作用会引入噪声和振荡。

PID控制器的输出信号可以表示为:u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt其中,u(t)为输出信号,Kp、Ki和Kd分别为比例、积分和微分增益,e(t)为反馈信号与设定值之间的误差,∫e(t)dt为误差的积分,de(t)/dt为误差的微分。

二、参数调整方法PID控制器的参数选择对控制系统的性能至关重要。

有许多方法可以调整PID控制器的参数,常见的包括经验法、试错法和优化算法。

1. 经验法:根据实际经验,选择适当的参数范围,并逐步调整参数,观察系统的响应变化。

这种方法简单直观,但需要具备一定的经验和调试能力。

2. 试错法:通过不断试验不同的参数组合,观察系统的响应,并根据系统的性能指标进行优化调整。

试错法可以快速找到合适的参数组合,但依赖于多次试验和手动调整。

PID我的理解

PID我的理解

1-5 控制论1945年,美国数学家维纳把乃奎斯特的反馈概念推广到一切工程控制中,1948年维纳发表奠基性著作《控制论》。

这本书的副标题是“关于动物和机器中控制和通信的科学”。

在此之前西方没有控制论这个词。

维纳先生根据希腊词Kubernetes(舵手)创造了一个词:cybernetics。

舵手是干什么的?控制船的方向的。

“cyber”一词在今天已经被重新定义为“对电子、机械和生物系统的控制过程的理论性研究,特别是对这些系统中的信息流动的研究。

”——由最初的“舵手”变成了后来的“指导者”和“统治者”,由“驾驭航向”转变为“控制别人”。

且慢,维纳说:控制论是“对电子、机械和生物系统的控制过程的理论性研究”?电子需要控制论,机械需要控制论,生物也需要?恩,咱开头就说了,人们生产活动都离不开的。

虽然你在泡女孩的时候,从没有想过那讨厌的比例积分微分什么的概念,但是你实际上切切实实无意识地一直在运用控制论的方法。

维纳运用自己丰富的学识敏锐的观察深刻的分析,把这些基本原理提炼出来,最终,创立了控制论。

1-6 再说负反馈咱们前面说了,维纳在上学期间,精通数学、物理、无线电、生物和哲学。

而在电子领域,乃奎斯特已经提出了负反馈回路可以使得系统稳定这个概念。

维纳通过在电子学领域的知识,在控制领域取得了重大突破。

其实瓦特的蒸汽转速控制系统,本身也不知不觉地应用了负反馈系统:转速反馈到连杆上后,控制汽阀关小,使得转速降低。

只是瓦特没有把这个机构中的原理提炼出来,上升到理论高度。

说着容易做着难,这个理论经过了200年才被提出来。

负反馈理论应用非常广泛。

维纳本人研究的物理、无线电、生物学,在这些领域都广泛的应用着负反馈原理,这些学科很可能都给他提出负反馈理论以支持。

不光物理、无线电、生物学使用负反馈,也不光工业控制使用负反馈,大到国家宏观调控,中到商业管理,小到个人的行为,角角落落,无不出现负反馈的身影。

国家每一项宏观调控政策出台后,总要收集各种数据观察政策发布后的效果,这个收集的信息叫反馈。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

很多同学都不清楚PID是个什么东西,因为很多不是自动化的学生。

他们开口就要资料,要程序。

这是明显的学习方法不对,起码,首先,你要理解PID是个什么东西。

本文以通俗的理解,以小车纵向控制举例说明PID的一些理解。

首先,为什么要做PID?
由于外界原因,小车的实际速度有时不稳定,这是其一,
要让小车以最快的时间达达到既定的目标速度,这是其二。

速度控制系统是闭环,才能满足整个系统的稳定要求,必竟速度是系统参数之一,这是其三.
小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的。

如果是线性的,直接用P就可以了。

比如在PWM=60%时,速度是2M/S,那么你要它3M/S,就把PWM提高到90%。

因为90/60=3/2,这样一来太完美了。

完美是不可能的。

那么不是线性的,要怎么怎么控制PWM使速度达到即定的速度呢?即要快,又要准,又要狠。

(即快准狠
)系统这个速度的调整过程就必须通过某个算法调整,一般PID就是这个所用的算法。

可能你会想到,如果通过编码器测得现在的速度是 2.0m/s,要达到2.3m/s的速度,那么我把pwm增大一点不
就行了吗?是的,增大pwm多少呢?必须要通过算法,因为PWM和速度是个什么关系,对于整个系统来说,谁也
不知道。

要一点一点的试,加个1%,不够,再加1%还是不够,那么第三次你还会加1%吗?很有可能就加2%了。

通过PID三个参数得到一个表达式:△PWM=a *△V1+b *△V2+c *△V3,a b c是通过PID的那个长长的公式展开
,然后约简后的数字,△V1 ,△V2 ,△V3 此前第一次调整后的速度差,第二次调整后的速度差,第三次。

一句话,PID要使当前速度达到目标速度最快,需要建立如何调整pwm和速度之间的关系。

输入输出是什么:
输入就是前次速度,前前次速度,前前前次速度。

输出就是你的PWM应该增加或减小多少。

PID实际编程的过程的,要注意的东西还是有几点的。

PID这东西可以做得很深。

1 PID的诊定。

凑试法,临界比例法,经验法。

2 T的确定,采样周期应远小于过程的扰动信号的周期,在小车程序中一般是ms级别。

3 目标速度何时赋值问题,如何更新新的目标速度?这个问题一般的人都乎略了。

目标速度肯定不是个恒定的,那么何时改变目标速度呢?
4 改变了目标速度,那么e(k) e(k-1) e(k-2)怎么改变呢?是赋0还是要怎么变?
5 是不是PID要一直开着?
6 error为多少时就可以当速度已达到目标?
7 PID的优先级怎么处理,如果和图像采集有冲突怎么办?
8 PID的输入是速度,输出是PWM,按理说PWM产生速度,但二者不是同一个东西,有没有问题?
9 PID计算如何优化其速度?指针,汇编,移位?都可以试!
//*****************************************************
//定义PID结构体
//*****************************************************
typedef struct PID
{
int SetPoint; //设定目标 Desired Value
double Proportion; //比例常数 Proportional Const
double Integral; //积分常数 Integral Const
double Derivative; //微分常数 Derivative Const
int LastError; //Error[-1]
int PrevError; //Error[-2]
} PID;
//*****************************************************
//定义相关宏
//*****************************************************
#define P_DATA 100
#define I_DATA
0.6
#define D_DATA
1
#define HAVE_NEW_VELOCITY 0X01
//*****************************************************
//声明PID实体
//*****************************************************
static PID sPID;
static PID *sptr = &sPID;
//*****************************************************
//PID参数初始化
//*****************************************************
void IncPIDInit(void)
{
sptr->LastError = 0; //Error[-1]
sptr->PrevError = 0; //Error[-2]
sptr->Proportion = P_DATA; //比例常数 Proportional Const
sptr->Integral = I_DATA; //积分常数Integral Const
sptr->Derivative = D_DATA; //微分常数 Derivative Const
sptr->SetPoint =100;
目标是100
}
//*****************************************************
//增量式PID控制设计
//*****************************************************
int IncPIDCalc(int NextPoint)
{
int iError, iIncpid; //当前误差
iError = sptr->SetPoint - NextPoint; //增量计算
iIncpid = sptr->Proportion * iError //E[k]项
- sptr->Integral * sptr->LastError //E[k-1]项
+ sptr->Derivative * sptr->PrevError; //E[k-2]项
sptr->PrevError = sptr->LastError;
//存储误差,用于下次计算
sptr->LastError = iError;
return(iIncpid);
//返回增量值
Int g_CurrentVelocity;
Int g_Flag;
void main(void)
{
DisableInterrupt
InitMCu();
IncPIDInit();
g_CurrentVelocity=0; //全局变量也初始化
g_Flag=0;
//全局变量也初始化
EnableInterrupt;
While(1)
{
if (g_Flag& HAVE_NEW_VELOCITY)
{
PWMOUT+= IncPIDCalc(CurrentVelocity);
g_Flag&=~ HAVE_NEW_VELOCITY;
}
}
}
//****************************************
//采样周期T
//****************************************
Interrrupt TIME void
{
CurrentVelocity =GetCurrentVelocity;
g_Flag|= HAVE_NEW_VELOCITY;
}。

相关文档
最新文档