搞自动化的,永远离不开PID控制这一主题,网上各种PID控制理论满天飞,但实际工程中所使用的PID大多数都不复杂(向锅炉给水联调的这种复杂的除外),调个速,调个压什么的,相对简单,这一篇就够用了。(文章有点长,没办法,一个知识点谁也不能三言两语就讲完,真正想学的希望耐心看完,不想学的请跳过。)
使用FB41进行PID控制详解
一、PID概述
1、PID控制:比例、积分、微分控制,也称PID调解,当被控对象的结构和参数不能被完全掌控或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID最为方便,即当我们不完全了解一个系统和被控对象时,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制。PID控制,实际也有PI控制和PD控制,PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
2、本文中所讨论的功能块(SFB41/FB41,SFB42/FB42,SFB43/FB43)仅仅是使用于S7和C7的CPU中的循环中断程序中。该功能块,定期计算所需要的数据,保存在指定的DB中(背景数据块)。允许多次调用该功能块。CONT_C块与PULSEGEN块组合使用,可以获得一个带有比例执行机构脉冲输出的控制器(例如,加热和冷却装置)。
· SFB41/FB41 (CONT_C), 连续控制方式;
· SFB42/FB42 (CONT_S), 步进控制方式;
· SFB43/FB43 (PULSEGEN), 脉冲宽度调制器;
注意:SFB41/42/43,与FB41/42/43兼容,可以用于CPU 313C、CPU 313C-2 DP/PTP 和CPU 314C-2 DP/PTP中。
二、PID控制系统
1、连续一时间PID控制系统如图3-1所示。图中,D(s)为控制器。在PID控制系统中,D(s)完成PID控制规律,称为PID控制器。 PID控制器是一种线性控制器,用输出量y(t)和给定量r(t)之间的误差的时间函数。e(t)=r(t)-y(t)
PID控制原理图
(3-1)的比例,积分,微分的线性组合,构成控制量u(t)称为比例(Proportional)
积分(Integrating)微分(Differentiation)控制,简称PID控制。实际应用中,可以根据受控对象的特性和控制的性能要求,灵活地采用不同的控制组合,构成
(1)比例(P)控制器
P控制器
(2)比例十积分(PI)控制器
PI控制器
(3)比例十积分十微分(PID)控制器式中 KP——比例放大系数;TI——积分时间; TD——微分时间。
PID控制器
2、模块图(原理图研究明白就成PID的高手了)
PID总图
三、使用FB41进行PID调整的说明
FB41称为连续控制的PID用于控制连续变化的模拟量,与FB42的差别在于后者是离散型的,用于控制开关量,其他二者的使用方法和许多参数都相同或相似。PID的初始化可以通过在OB100中调用一次,将参数COM-RST置位,当然也可在别的地方初始化它,关键的是要控制COM-RST;PID的调用可以在OB35中完成,一般设置时间为200MS,一定要结合帮助文档中的PID框图研究以下的参数,可以起到事半功倍的效果 。以下将重要参数用黑体标明.简单应用只需重点关注黑体字的参数就可以了。其他的可以使用默认参数。
A:所有的输入参数:
COM_RST: BOOL: 重新启动PID:当该位TURE时:PID执行重启动功能,复位PID内部参数到默认值;通常在系统重启动时执行一个扫描周期,或在PID进入饱和状态需要退出时用这个位;
MAN_ON: BOOL:手动值ON;当该位为TURE时,PID功能块直接将MAN的值输出到LMN,这可以在PID框图中看到;当该位为FALSE时则自动,也就是说,这个位是PID的手动/自动切换位;。
PEPER_ON: BOOL:过程变量外围值ON:过程变量即反馈量,此PID可直接使用过程变量PIW(不推荐),也可使用 PIW规格化后的值(常用),因此,这个位为FALSE;
P_SEL: BOOL:比例选择位:该位ON时,选择P(比例)控制有效;一般选择有效;
I_SEL: BOOL:积分选择位;该位ON时,选择I(积分)控制有效;一般选择有效;
INT_HOLD BOOL:积分保持,不去设置它;
I_ITL_ON BOOL:积分初值有效,I-ITLVAL(积分初值)变量和这个位对应,当此位ON时,则使用I-ITLVAL变量积分初值。一般当发现PID功能的积分值增长比较慢或系统反应不够时可以考虑使用积分初值;
D_SEL : BOOL:微分选择位,该位ON时,选择D(微分)控制有效;一般的控制系统不用;
CYCLE : TIME:PID采样周期,一般设为200MS;
SP_INT: REAL:PID的给定值;一般是HMI过来的设定值,real型;
PV_IN : REAL:PID的反馈值(也称过程变量);比如压力,要从piw×××转换为工程量。
PV_PER: WORD:未经规格化的反馈值,由PEPER-ON选择有效,直接使用piw×××;(不推荐)
MAN : REAL:手动值,由MAN-ON选择有效;
GAIN : REAL:比例增益,实际就是Pid的P;
TI : TIME:积分时间,实际就是Pid的I;
TD : TIME:微分时间,实际就是Pid的D;
TM_LAG: TIME:和微分有关,基本不用;
DEADB_W: REAL:死区宽度,就是sp和pv的偏差死区,0-100.0的范围,如果输出在平衡点附近微小幅度振荡,可以考虑用死区来降低灵敏度;
LMN_HLM: REAL:PID上极限,一般是100%;
LMN_LLM: REAL:PID下极限;一般为0%,如果需要双极性调节,则需设置为-100%;(正负10V输出就是典型的双极性输出,此时需要设置-100%);
PV_FAC: REAL:过程变量比例因子
PV_OFF: REAL:过程变量偏置值(OFFSET)
LMN_FAC: REAL:PID输出值比例因子;
LMN_OFF: REAL:PID输出值偏置值(OFFSET);
I_ITLVAL:REAL:PID的积分初值;有I-ITL-ON选择有效;
DISV :REAL:允许的扰动量,前馈控制加入,一般不设置;
B:部分输出参数说明:
LMN :REAL:PID输出;0-100的范围,要先进行规格化,在送出。
LMN_P :REAL:PID输出中P的分量;(可用于在调试过程中观察效果)
LMN_I :REAL:PID输出中I的分量;(可用于在调试过程中观察效果)
LMN_D :REAL:PID输出中D的分量;(可用于在调试过程中观察效果)
C:规格化概念及方法:
PID参数中重要的几个变量,给定值,反馈值和输出值都是用0.0~100.0之间的实数表示,而这几个变量在实际中都是来自与模拟输入,或者输出控制模拟量的因此,需要将模拟输出转换为0.0~100.0的数据,或将0.0~100.0的数据转换为模拟输出,这个过程称为规格化。规格化的方法:(即变量相对所占整个值域范围内的百分比对应与27648数字量范围内的量)
对于输入和反馈,执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT
对于输出变量 ,执行:LMN*27648/100,然后将结果取整传送给PQW即可;
D:PID的调整方法:
一般不用D,除非一些大功率加热控制等惯大的系统;仅使用PI即可,一般先使I等于0,P从0开始往上加,直到系统出现等幅振荡为止,记下此时振荡的周期,然后设置I为振荡周期的0.48倍,应该就可以满足大多数的需求。
四、实际应用举例
1、打开S7,新建OB35并打开,编成语言采用"梯形图",在标准库中把FB41拖入程序中,如下图:
图3 FB41 功能块
在"?"处输入FB41的背景数据块,回车后提示数据块没有被建立,现在是否建立的提示,点击OK即可。调用FB41时需要注意以下几点:(1)在视图中语言最好选择梯形图,如果选语句表,则调用FB41会出现以下界面:
图4语句表形式的PID功能块
当你转换为语句表时他不会转化成图3的形式,但以梯形图编程视图建立的图3的可以转换成图4的形式,并且可以再转化回图3 的形式。(2)背景数据块可以随便起名,他可以在FB41调用的时候建立,也可以提前建立。(3)FB41也可以提前建立。
附录一: SFB 41/FB 41"CONT_C"输入参数的说明:
注:(1)"设定值通道"和"过程变量通道"中的参数,应该有相同的单位。例如,如果使用PV_IN作为"过程物理值"或者"过程物理值百分比",SP_INT必须使用相应相同的单位;如果使用PV_PER作为外围设备的实际数值,SP_INT只能使用"-100.0 至 100.0(%)"作为设定值。如果设定值是SP_INT是0~10Mpa中的8Mpa,那么需要填写0.8,PV_PER填写硬件外设地址IW XXX;(2 )受控量通道中的参数应该有相同的单位。
附录二: SFB 41/FB 41"CONT_C"输出参数的说明:
附录三:PID常用口诀: 参数整定找最佳,从小到大顺序查,先是比例后积分,最后再把微分加,曲线振荡很频繁,比例度盘要放大,曲线漂浮绕大湾,比例度盘往小扳,曲线偏离回复慢,积分时间往下降,曲线波动周期长,积分时间再加长,曲线振荡频率快,先把微分降下来,动差大来波动慢,微分时间应加长,理想曲线两个波,前高后低4比1。
,