S7-300 PLC中自主设计程序控温PID算法
Self-Design of Programming Temperature Control PID
Algorithm in S7-300 PLC
南阳理工学院 殷华文
[摘 要]本设计采用位置型算法思想,用梯形图语言在西门子S7-300 PLC中自主编写程序控温PID算法程序,实现对夹套锅炉的升温—保温—降温双极性控制。算法中加入控制带、偏差死区、输出死区、输出限幅、积分清零等多种控制手段。在温度曲线拐点处,为了避免控制的延迟及超调,采用提前控制、变控制参数的方法。监控结果显示,本PID程序对夹套锅炉水温控制超调量较小,稳态误差小于0.2℃。 [关键词]自主设计、位置式PID算法、程序控温 Abstract:The design of PID programming module independently to control electric heating boiler and cooling bipolar based on Siemens S7-300 PLC. The bipolar PID algorithm has used position type algorithm, and a structured programming. it can operate PID algorithm only when it ranges the deviation in the control , so as to avoid integral saturation phenomenon. it has applied dead-time processing to the deviation. Then in order to avoid the control delay and the overshoot, it has used advanced control and variable parameter control method during the cooling process.The control algorithm has introduced some control means,such as,the output dead, the output limiting, the integral reset and so on. Monitoring results show that the PID program modules have targeted control to the temperature object , smaller overshoot and the steady-state error is less than 0.2 DEG c.
Key words:self-design,position type PID algorithm,programming temperature control
1引言
在自动化领域,大多数PLC、DCS控制器中都有PID算法程序,但是由于算法思想和源程序不公开,给用户正确使用带来困难。另外一般的PID算法程序不具备程序控温功能,无法直接对夹套锅炉这样的对象进行控制。本设计就是在S7-300 PLC中自主设计程序控温PID算法程序,实现了夹套锅炉加热冷却双极性控制。自主设计算法程序,由于算法思想和源程序是自知的,为算法研究和改造提供了技术基础和方便条件。
2控制对象和控制系统硬件配置
本控制系统中被控对象是夹套锅炉,锅炉体高大约500mm,内胆和夹套容积均约为25升,内胆装有三组电加热丝,功率为3×1.5 KW,由可控硅控制。控制系统选用西门子S7-300 PLC做控制器,以夹套锅炉内胆水温为被控变量,进行升温—保温—降温曲线控制。控制系统硬件配置和控制信息流程图见图1所示。
上位机设定值u(k)>0触发时间0-50*T/s输出等效电压0-380VAC加热功率0-4.5KWn模拟量输出通道1电流0-20mA可控硅触发器可控硅加热丝外部扰动ysp(k)+e(k)锅炉内胆T(t)-PLC内CPU运算模拟量输出通道2电流0-20mA变频器电压频率0-50HZ磁力驱动泵供水流量0-900L/min锅炉夹套u(k)<0ym(k)模拟量输入通道A/D转换电阻100Ω可变温度传感器Pt100温度0-100?c
图1 控制系统硬件配置和控制信息流程图
3控制算法程序设计
3.1 温度控制算法设计思想
温度对象具有大滞后、非线性和时变的特点,而且锅炉水温的加热与冷却又是两个特点不同的控制过程,单纯的PID控制很难达到控制要求,所以对升温、保温、降温的不同阶段要做相应的控制设计。
本设计的双极性PID算法程序采用位置式算法思想。在控制算法中引入了偏差死区、
1
输出死区、输出限幅、积分分离、积分清零、控制带等多种控制手段。对于设定值温度控制采用固定PID参数,而程序曲线温度控制采用变PID参数的方式,以达到相应的控制效果。
本算法在STEP 7中采用梯形图(LAD)编程语言实现。图2为双极性PID功能块FB2控制算法流程图。FB2使用时需要背景数据块DB2配合。
3.2 双极性温控程序设计
FB2作为连续控制器只有在以固定时间间隔调用时,在控制块中PID运算的值才是正确的。具体控制时应该在周期性中断组织块OB35中调用FB 2功能块,并在CYCLE参数中输入采样时间。同时在OB35中编写FB2的外部辅助控制程序,主要包括: ① 信号采集程序:分别使用模拟量输入规范化块FC105采集模拟通道PIW288和PIW290的A/D数值,并转换成锅炉内胆液位和锅炉内胆水温的工程值。
② 积分分离程序:设定控制带亦即积分分离带为-3℃~3℃,只有偏差在控制带内时才启动积分控制,防止积分
过早饱和。 图2 自主设计位置式PID算法程序流程图
③ 积分清零程序:设定积分清零条件,当积分清零条件满足时I_ITL_ON置位,积分分量被设定为I_ITLVAL(设计中积分分量初始化值为0)值,实现积分分量清零,防止由于积分的延时效应造成控制的滞后和超调。
④ 加热、冷却辅助控制程序:在恒温控制阶段,当PID控制程序的输出为0时,仍以最大加热功率的5%输出,使锅炉的整体散热速率与加热速率尽量持平,维持水温稳定。在冷却输出小于最大冷却输出的25%时,冷却输出按25%输出,防止冷却水倒流。
⑤ 输出操作程序:PID运算输出为LMN。如果LMN值在0~100之间,则加热回路工作,加热功率为LMN%×最大加热功率;如果LMN在-100~0之间,则冷却回路工作,磁力驱动泵供水流量为|LMN|*%最大供水流量。
⑥ 加热、冷却保护程序:在停止控制、现场报警等条件出现时,加热、冷却输出值设定为0,使加热、冷却回路停止工作。 3.3 温度控制系统的主控程序设计
温度控制系统的主控程序放在主循环组织块OB1中,主要实现的功能包括:启停PID温控程序、温度设定值设置方式的切换、防按键抖动等。
温度设定值设置方式的切换是实现设定值控制和温度曲线控制模式的切换。当启动温度曲线控制模式时,在OB1中调用温度曲线设定值自动发生程序功能块FB1,根据OB1的执行周期,周期性的刷新温度设定值T_SP,并把数值送到FB2的SP_INT端,实现温度曲线自动设定。
FB1主要参数是六个温度点设定坐标,在温控PID程序运行前只需设定六个温度点对应的六组参数即可,即时间坐标轴的六个参数和温度坐标轴的六个参数,如图3所示,在程序执行期间根据时间的推移自动勾勒出一条温度设定值曲线,如图4所示。
FB2温度PID程序入口偏差计算:ER=SP-PV是死区判断 |ER|<=DEADB_W否ER=0ER=ER比例作用打开?否积分作用打开?是否微分作用打开?否是积分作用保持?是否输出限幅吗?是否是LMN_P=GAIN*ERLMN_I=LMN_ILMN_I=LMN_ILMN_I=LMN_I+KI*ER1*0.5LMN_D=a*LMN_D+KD*(1-a)*ΔER积分作用初始化?是否LMN_P=0LMN_I=ITLVALLMN_I=LMN_ILMN_I=0LMN_D=0LMN=LMN_P+LMN_I+LMN_D手动值打开?否是LMN=MANLMN=LMNLMN<=LMN_LLM否是LMN=LMN_LLMLMN>=LMN_HLM否是LMN=LMN_HLMLMN=LMNLMN<=LMN_DZ?否是其中:KI=CYCLE/TI KD=TD/CYCLE ΔER=ER(n)-ER(n-1)LMN=LMNLMN=0 ER1=ER(n)+ER(n-1) a=LAG/(LAG+CLCLE)结束 2
温度设定值的计算方法如公式1所示
tT_SP?*(Tn?Tn?1)?Tn?1;n?1、2、3、4、5、6 (1)
tn?tn?1
图3 温度点坐标设定 图4 温度设定曲线
4温度双极性PID控制的监控及运行结果分析
(1)设定值温度控制:锅炉内胆水的初始水温40.1℃,第一阶段水温设定为40.0℃,第二阶段设定为70.0℃,第三阶段设定为60.0℃。控制过程中,PID参数一直设定为20、100、5,设定值温控响应曲线如图6所示。
从监控曲线上可以看出,在温度设定值阶跃为+30.0℃的情况下,其控制的结果能稳定在69.8℃~70.4℃左右,超调量为0.5℃,没有大的波动,稳态误差为0.1℃,而且响应速度较快。在温度设定值阶跃为-10.0℃的情况下,滞后时间为2min,其控制的结果能稳定在58.8℃~60.2℃左右,
超调量为3.0℃,稳态误差为0.03℃。 图6 自主设计PID算法温度设定值响应曲线
(2)程序曲线温度控制:
温度曲线控制模式时,设置升温段初始温度 40 ℃,目标温度 85 ℃,升温时间 30分钟;保温时间 20分钟,降温目标温度 55 ℃,降温时间 20 分钟。则升温斜率为 1.5 ℃/min,降温斜率也为1.5℃/min。由于加热冷却滞后和惯性不一样,所以不同控制阶段PID参数是不同的。PID参数设置如表1所示。程序温控响应曲线如图7所示。
表1程序控温时PID参数设置
控制过程 升温阶段 恒温阶段 降温阶段 图7 程序控温响应曲线 由程序曲线温度控制响应曲线可以看出各个阶段的控制效果:
升温阶段:系统的滞后时间为45s,升温曲线和设定值曲线之间拟合度较好,几乎没有穿越现象,温度偏差在±0.2℃内。
恒温阶段:几乎没有超调,稳态误差在0.2℃内。
降温阶段:开始降温曲线和设定值曲线之间有3次穿越,但是温度偏差在1.2℃内,最终保持在0.2℃的范围内。
在1号温度曲线拐点处,提前1min对加热功率输出限制不低于10%,以保证加热丝能
3
控制周期 1s 1s 1s Kp 50 50 50 Ti(s) Td(s) 100 100 150 5 5 15 够得到预热,使得升温滞后减小,实现了曲线拐点的拟合。
在2号温度曲线拐点处,提前1min启动限幅输出带,降低加热丝输出功率。当温度偏差在1-2℃范围时,输出功率<70%,当温度偏差在0.5-1℃范围时,输出功率<50%,当温度偏差在0.1-0.5℃时,输出功率<30%。这样阶梯减少输出功率,实现了2号曲线拐点的钝化。
在3号温度曲线拐点处,提前5min对冷却输出限制不低于40%,以保证提前打开冷却泵,避免了冷却水注入滞后,实现了曲线拐点的拟合。
在4号温度曲线拐点处
5结论
本算法设计实现了在西门子S7-300 PLC自编PID算法程序实现对夹套锅炉水温的双极性控制,控制超调量小,稳态误差在0.2℃以内。在程序曲线温度控制的升降温阶段,锅炉水温能很好的跟随设定值变化,调节值的稳定性得到很大改善。但是升降温的曲线拐点拟合控制时是靠经验来提前加热或提前冷却的,没能达到最好的效果,降温阶段由于冷却水的注入时间延迟影响了控制效果。在升降温阶段主要采用PD控制规律,结合弱积分控制实现了曲线的较好拟合。 参考文献
[1] 王树青,戴连奎,于 玲.过程控制工程.化学业出版社,2011;5-6,30-58 [2] 于海生.计算机控制系统.机械工业出版社.1010,101.
[3]涂植英,陈今润.自动控制原理,第二版.重庆大学出版社,2009;1-11,22-49
设置升温段初始温度 30 ℃,目标温度 75 ℃,升温时间 30分钟;保温时间 15分钟,降温目标温度 55 ℃,降温时间 20 分钟。则升温斜率为 1.5 ℃/min,而降温斜率为 1 ℃/min。
不同控制阶段PID参数设置如表1所示
表1 程序控温PID参数设置
控制过程 升温阶段 恒温阶段 降温阶段
程序温控响应曲线
由程序曲线温度控制响应曲线可以看出各阶段的控制效果:
升温阶段:升温阶段最大偏差为0.5℃,调节值的波动幅度很小,输出基本稳定,控制精度在0.1℃以内。
恒温阶段:系统最大超调量为-0.2℃,稳态误差在0.1℃内。
降温阶段:最大偏差为-0.8℃,降温曲线能快速跟随设定曲线的变化而变化,并最终保持在0.2℃的范围内。
为防止加热滞后和冷却滞后导致的控制滞后及大偏差出现,在程序中加入升温提前预热控制和冷却提前控制,通过调节加热、冷却控制时间参数及加热冷却供水功率及Kp、Ti(s)、
4
Kp 80 80 60 Ti(s) 100 100 150 Td(s) 15 15 25 Td(s)各参数最终实现了夹套锅炉双极性水温控制的目的。
5