S7-300 PLC中FB41 PID算法程序设计毕业设计

发布时间 : 星期一 文章S7-300 PLC中FB41 PID算法程序设计毕业设计更新完毕开始阅读

S7-300 PLC中 FB41 PID 算法程序设计

PV_PER:可以再外围设备(I/O)中输入过程变量,也可以以浮点数格式输入。CRP_IN函数根据下列公式,将PV_PER的外设值转换成浮点数-100到100%;

100 CRP_IN的输出=PV_PER*27648

PV_NORM的函数根据下列公式规格化CRP_IN的输出; PV_NORM的输出=(CRP_IN的输出)*PV_FAC+PV_OFF ; PV_FAC的缺省值是1,PV_OFF的缺省值位0。 可以使用两种方式输入过程变量(即反馈值);

(1)用PV_IN(过程输入变量)输入浮点数格式的过程变量,此时数字量输入PVPER_ON(外部设备过程变量ON)应为0的状态。

(2)用PV_PER(外部设备过程变量)输入外部设备(I/O)格式的过程变量,即用模拟量输入模块输入输出的数字值作为PID控制的过程变量,此时PVPER_ON的状态应为1。

ER:用浮点数格式设定值SP_INT减去装换成浮点数格式的过程变量PV(即反馈值),便得到负反馈的误差。为了抑制由于控制器输出量的量化造成的连续的较小的振荡,例如FB43的PULSEGEN进行脉冲宽度调制时可能出现的振荡,用死区(Dead Band)非线性误差进行处理。死区的宽度由参数DEADB_W来定义,如果命令DEADB_W为0,死区被关闭。在控制系统中,某些执行器机构如果频繁动作,会导致小幅度的振荡,造成严重的机械磨损。从控制要求来说,很多的系统又允许被控量在一定的范围内存在误差。带死区的PID控制器能防止执行机构的频繁动作。当死区非线性环节的输入量(即误差(ev(n))的绝对值小于设定值B时,死区的非线性输出量(即PID控制器的输入量)为0,这时PID控制器的输出分量中比例和微分部位都为0,积分保持不变,因此PID的输出保持不变,PID控制器不起调节作用,系统处于开环状态。当误差的绝对值超过设定值时,开始正常的PID控制。在FB41中“CONT_C\中,死区宽度DEADB_W相当于死区设定值B。

DISV:可以实现前馈控制,一般设置为0。

P_SEL(比例作用ON)为1时激活比例作用,反之禁止比例作用,默认值为1。 I_SEL(积分作用ON)为1时激活积分作用,反之禁止积分作用,默认值为1。 D_SEL(微分作用ON)为1时激活微分作用,反之禁止微分作用,默认值为0,默认的控制方式为PI控制。

LMN_P、LMN_I、LMN_D分别是PID控制器输出量的比例分量、积分分量和微分分量,供调试时使用。

INTVAL:FB41“CONT_C\有一个初始化过程中,如果I_INT_ON(积分作用初始化)为1的状态,将输入变量INTVAL作为积分器的初始值。如果在一个循环中断优先级调用它,它将从该数值开始继续执行,所有其他的输出都被设置为其默认值。INT_HOLD时积分操

7

S7-300 PLC中 FB41 PID 算法程序设计

作保持,积分输出被冻结,一般不冻结积分输出。

2.6控制器输出值的处理

手动模式

BOOL变量MAN_ON为1时为手动模式,为0时为自动模式。在手动模式,控制的输出被手动输入值MAN代替。

在手动模式,控制器输出中的积分分量自动设置为LMN-LMN_P-DISV(其中—为减号)。而微分量自动设置为0 。这样可以保证手动到自动的无忧切换,即切换前后PID控制器的输出值LMN不会突变。

输出限幅

LMNLIMIT(输出量限幅)方框用于将控制器输出值(MV)限幅。

LMNLIMIT的输入量超出控制器输出值的上极限LMN_HLM时,信号位QLMN_HLM(输出超出上限)变为1的状态;小于下限值LMN_LLM时,信号位QLMN_LLM(输出超出下限)变为1的状态。LMN_HLM和LMN_LLM的默认值分别为100%和0.0%。

输出量的格式规格化处理

LMN_NORM(输出量规格化)方框用于下述公式来讲功能LMNLIMIT的输出量LMN_LIM格式化:

LMN=LMN_LIM × LMN_FAC+LMN_OFF

式中,LMN时格式化后浮点数格式的控制器的输出值;LMN_FAC为输出量的系数,默认值为1.0。LMN_OFF为输出量的偏移量,默认值为0.0;LMN_FAC和LMN_OFF用来调节控制器输出量的范围。

输出量转换为外部设备(I/0)格式

控制器输出值如果要送给模拟量输出没款中D/A转换器,需要用“CRP_OUT\方框图转换为外部设备(I/O)格式的变量LMN_PER 。转换公式为

27648 LMN_PER=LMN ×

100

2.7 完全重启动

FB41“CONT_C\有一个完全重启动例行程序,当职位输入参数COM_RST=TURE时执行。 在启动期间,积分器内部被设置成初始值I_ITVAL。当在周期中断优先级中调用积分器,它便从这个数值开始,继续工作。

所用其他输出值都被设置成各自的缺省值。

8

S7-300 PLC中 FB41 PID 算法程序设计

3 FB41模块算法分析

3.1 PID控制器在连续控制系统中的表达式

PID控制器的传递函数为

MV(s)EV(s)?1

k(1?pT1s1?TDs) (1)

dev(t)dt模拟量PID控制器的输出表达式为:

mv(t)?

K[ev(t)?PT?1ev(t)dt?TD]?M (2)

分别

式中,控制器的输入量(误差信号)ev(t)=sp(t)-pv(t);sp(t)为设定值;PV(t)为过程变量(反馈值);mv(t)是控制器的输出信号;是比例系数K、T和TpiiD是积分时间常数和微分时间常数;M是积分部分的初始值。

式中等号右边的前3项分别是比例、积分、微分部分,他们分别与误差ev(t)、误差的积分和误差的微分成正比。如果取其中的一项或者两项,可以组成P、PI或PD调节器。需要较好的动态品质和较高的稳态精度时,可以选用PI控制方式;控制对象的惯性滞后较大时,应该选择PID控制方式。

3.2 死区特性在FB41中的应用

在控制系统中,某些执行机构如果频繁动作,会导致小幅震荡,造成严重的机械磨损。从控制要求来说,很多系统又允许被控量在一定范围内存在误差。带死区的PID控制器(如图2所示)能够防止执行机构的频繁动作。当死区非线性环节的输入量(即误差ev(n))的绝对值小于死区设定值时,死区非线性的输出量(即PID控制器的输入量)为0,这时FB41控制器的输出分量中,比例部分和微分部分为0,积分部分保持不变,因此PID输出保持不变,PID控制不起调节作用,系统处于开环状态。当误差的绝对值超过设定值时,开始正常的PID控制。在FB41\中,死区宽度DEADB_W相当于图2中的死区设定值

图2 死区说明图

9

S7-300 PLC中 FB41 PID 算法程序设计

3.3 积分部分的近似部分

设执行PID控制功能块的时间间隔(即PID控制的采样周期)为T,第n次PID

s运算时的时间为Ts,因为PID程序运行时为Ts常数,可以将t=Tsn,时PID控制器的输入量ev(Tsn)简写为ev(n),输出量mv(Tsn)简写为mv(n)。

式(1)中的积分对应于图中曲线ev(t)与坐标轴包围的面积,一般用矩形积分来近似精确积分,每块矩形的面积为ev(jTs)Ts。为了书写方便,将ev(jTs)简写

n为ev(j),各块矩形的总面积为Ts?ev(j)。当Ts较小时候,积分的误差不大。

j?1 根据资料分析所得,FB41中的积分算法是在矩形积分基础上进行改进而得到的梯形积分算法。运用梯形积分,可以减少残差,提高积分项的运算精度。其计算公式为:

k?t0edt??i?1e(i)?e(i?1)2 (3)

在自主设计的算法中,积分作用投入时首先判断是否使用积分初始值,然后判断是否使用手动输出,手动输出时候积分值 := Last_Lmn - Panteil - DISV 。Diff积分增量:= ( rCycle / rTi积分时间浮点值 ) * ( ErKp 本周期比例偏差值+ Last_P 上周期比例偏差值) * 0.5。积分值Ianteil=Diff积分增量+Last_I上周期积分量。 此外FB41积分算法中还运用到了抗积分饱和。因为长时间出现偏差或偏差较大,计算出的控制量有可能溢出,或小于零。所谓溢出就是PLC运算得出的控制量mv(t)超出D/A转换器所能表示的数值范围。例如西门子常用的D/A转换模块SM332的数据范围为0000H至6000H(H表示十六进制)。一般执行机构有两个极限位置,如调节阀全开或者全关。设mv(t)为6000H时,调节阀全开;反之,mv(t)为0000H时,调节阀全关。为了提高运算精度,通常采用双字节或浮点数计算PID差分方程式。如果执行机构已到极限位置,仍然不能消除偏差时,由于积分作用,尽管计算PID差分方程式所得的运算结果继续增大或减少,但执行机构已无相应的动作,这就称为积分饱和。当出现积分饱和时,势必使超调量增加,控制品质变坏。作为防止积分饱和的办法之一,可以对计算出的控制量mv(t)限幅,同时把积分作用切除。在FB41中,则有: 当mv(t)<0000H时,取mv(t)=0,积分增量为0 当mv(t)>6000H时,取mv(t)=6000H,且积分增量为0

3.4微分部分的近似部分

式(1)中的微分用差分来近似,即令

dev(t)dt?ev(t)t?ev(n)?ev(n?1)

T10

s (4)

联系合同范文客服:xxxxx#qq.com(#替换为@)