PID算法。。对输出进行了限幅 积分部分要限吗怎么在PID部分限积分

PID算法。。对输出进行了限幅 积分部分要限吗怎么在PID部分限积分,第1张

在编写程序的时候,积分部分是要限幅度的。

其实积分部分就是每次误差的累积值。若每次都是正误差,则该值增大;若每次都是负误差,则该值减小。因此,记录误差的累积值的变量存在数据溢出的问题。限幅吗,就是当超过某值的时候,就赋值等于某个值就行了。

PID指比例积分微分,Proportion比例,Integration积分,Differentiation微分\x0d\西门子PLC编程软件中有PID向导,程序中的PID程序块可利用s7-Micro/win程序中的“工具”→“指令向导”生成。根据向导的提示可以对死区、报警、手动等功能进行选择,可以对设定范围、P、I、D等参数进行设定(完成后还可以利用向导进行更改)。根据提示完成设定后会自动生成一个子程序和一个中断程序,在主程序或其他程序中调用PID子程序就可以实现PID调节功能。需要更详细的说明可以直接察看编程软件的帮助文档,那里说明的还是比较详细的。\x0d\

一、什么是PID:

PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。顾名思义,PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法,该控制算法出现于20世纪30至40年代,适用于对被控对象模型了解不清楚的场合。 ---百度百科

二、PID是否难学:

在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在我所接触的控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧,何等的简单!简单的不是原始的,简单的也不是落后的,简单到了美的程度。 ---1

三、PID算法的C语言源码:

PID 控制算法可以分为位置式 PID 和增量式 PID 控制算法

详细见参考12

参考:

1PID算法

2简易PID算法的快速扫盲(超详细+过程推导+C语言程序)

基本的PID可以用运放+电容组成比例积分-比例微分电路即可,可以自己计算,计算误差不大。缺点是不方便改变参数。

现代新的方案一般采用单片机用数字化方式实现PID,这可以增加很多新功能,例如积分限幅/积分分离/自整定/人工智能等等

PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写PID调节实际上是由比例、积分、微分三种调节方式组成,它们各自的作用如下:

比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定

积分调节作用:是使系统消除稳态误差,提高无差度因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢积分作用常与另两种调节规律结合,组成PI调节器或PID调节器

微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除因此,可以改善系统的动态性能在微分时间选择合适情况下,可以减少超调,减少调节时间微分作用对噪声干扰有放大作用,因此过强 的加微分调节,对系统抗干扰不利此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器

三菱PLC的PID指令如下:

1、对于温度系统:P(%)20--60,I(分)3--10,D(分)05--3

2、对于流量系统:P(%)40--100,I(分)01--1

3、对于压力系统:P(%)30--70,I(分)04--3

4、对于液位系统:P(%)20--80,I(分)1--5

PID *** 作系统里指进程识别号,也就是进程标识符。 *** 作系统里每打开一个程序都会创建一个进程ID,即PID。

在运行时PID是不会改变标识符的,但是进程终止后PID标识符就会被系统回收,就可能会被继续分配给新运行的程序。只要运行一程序,系统会自动分配一个标识。

是暂时唯一:进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。只要没有成功运行其他程序,这个PID会继续分配给当前要运行的程序。

如果成功运行一个程序,然后再运行别的程序时,系统会自动分配另一个PID。

扩展资料

在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它 以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。

当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的 其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。

即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、 积分、微分计算出控制量进行控制的。

参考资料来源:百度百科—PID

这是C语言的程序用的的积分分离,增量式算法你可以看看~在我用的片子是89C52

//

/ 名称: float PIDprocess1 /

/ 功能: PID adjust /

/ 说明: /

/ 调用: /

/ 输入: float xdata Yn, float xdata Rn /

/ 返回值: deltaPn /

//

float PIDprocess1()

{

int data E_0;

float data deltaPn,deltaPi,deltaPp,deltaPd,PsumCopy;

E_0=SetTemperature1-CurrentTemperature1;

if(abs(E_0)>Emax)

{

deltaPp=(float)Kp(E_0-E_11);

deltaPd=(float)Kd(E_0-2E_11+E_21);

// if(deltaPd>=dPdmax) deltaPd=0;

deltaPn=deltaPp+deltaPd;

}

else

{

if(abs(E_0)>E0)

{

deltaPi=(float)KiE_0(Emax-abs(E_0))/(Emax-E0);

}

else

{ //小误差时的处理

deltaPi=(float)KiE_0;

// if(fabs(deltaPi)<dPimin) deltaPi=0;

}

deltaPp=(float)Kp(E_0-E_11);

deltaPd=(float)Kd(E_0-2E_11+E_21);

// if(deltaPd>=dPdmax) deltaPd=0;

deltaPn=deltaPp+deltaPi+deltaPd;

}

/ if(fabs(deltaPn)>dPmax)

{

if(deltaPn>0) deltaPn=dPmax;

else deltaPn=-dPmax;

} /

Psum1+=deltaPn;

PsumCopy=Psum1;

if(PsumCopy>Pmax) PsumCopy=Pmax;

if(PsumCopy<Pmin) PsumCopy=Pmin;

E_21=E_11;

E_11=E_0;

return(PsumCopy);

}

//

/ 名称: float PIDprocess2 /

/ 功能: PID adjust /

/ 说明: /

/ 调用: /

/ 输入: float xdata Yn, float xdata Rn /

/ 返回值: Psum2 /

//

float PIDprocess2()

{

int data E_0;

float data deltaPn,deltaPi,PsumCopy;

E_0=SetTemperature2-CurrentTemperature2;

if(abs(E_0)>Emax)

{

deltaPn=(float)Kp(E_0-E_12)+(float)Kd(E_0-2E_12+E_22);

}

else

{

if(abs(E_0)>E0)

{

deltaPi=(float)KiE_0(Emax-abs(E_0))/(Emax-E0);

}

else

{ //小误差时的处理

deltaPi=(float)KiE_0;

}

deltaPn=(float)Kp(E_0-E_12)+deltaPi+(float)Kd(E_0-2E_12+E_22);

}

/ if(fabs(deltaPn)>dPmax)

{

if(deltaPn>0) deltaPn=dPmax;

else deltaPn=-dPmax;

}/

Psum2+=deltaPn;

PsumCopy=Psum2;

if(PsumCopy>Pmax) PsumCopy=Pmax;

if(PsumCopy<Pmin) PsumCopy=Pmin;

E_22=E_12;

E_12=E_0;

return(PsumCopy);

}

以上就是关于PID算法。。对输出进行了限幅 积分部分要限吗怎么在PID部分限积分全部的内容,包括:PID算法。。对输出进行了限幅 积分部分要限吗怎么在PID部分限积分、西门子plc中pid是什么、什么是pid算法,难学吗,用C语言,plc怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9856787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存