S7-300 PLC中 FB41 PID 算法程序设计
5
S7-300 PLC中 FB41 PID 算法程序设计
2.3 CONT_C 的方框图
图1 FB41原理方框图
2.4 输入/输出数据类型
FB41 数据类型主要分为:布尔(BOOL); 实数(REAL); 字(WORD) ;时间(TIME); 其中在数据处理还涉及整数(INT);双整数(DINT)(设计总计70 本个参数变量)
源程序开发设计的过程中以实数(REAL)作为中间变量,所以在程序中数据之间的运算都要转换成为实数。故此,例如CYCLE,PV_PER,TI ,TD ,TM_LAG等还有在程序中涉及的临时变量都要转换成实数的数据类型。
2.5 FB41输入数据参数处理
SP_INT:设定值以浮点数的格式输入到SP_INT输入端。
6
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