基于ST语言的DCS计算一段时间平均值在危险废物处置中的应用

(整期优先)网络出版时间:2022-06-13
/ 2

基于 ST语言的 DCS 计算一段时间平均值在危险废物处置中的应用

王东博 石志刚

中节能(盘锦)清洁技术发展有限公司 辽宁盘锦 124000

摘 要 本文介绍了基于ST语言的DCS,连读计算一段时间内平均值在危险废物处置中烟气在线监测数据中的应用。在危险废物中二燃室出口温度的5分钟均值,所有在线监测指标的小时均值、日均值都是在生产运行中特别重要的指标。而DCS系统中没有预设的相关程序,这就需要我们利用DCS中合适的语言进行编程。

关键词:DCS 均值 ST 自动化 CEMS

0 引言

近年来,政府对环境保护的要求越来越严格,相继出台了各种规范和条例。由于危险废物焚烧处置自身的特点,其处理过程工艺流程技术要求极高,需要化学工程、燃烧工艺、自动化技术和信息技术的密切配合。随着新标准18484-2021的颁布,在危废焚烧烟气净化后的在线监测粉尘和SO2、HC1、NOx等气体的小时均值及24小时均值提出了更严格的要求,为了在烟气排放前去除这些有毒气体,更好的进行烟气净化处理,及时调整工艺条件满足在线监测的要求,这些均值的计算显示就显得尤为重要。

1 程序的编写

1.1 编程思路

危险废物焚烧烟气污染物排放超标会严重污染环境,为了杜绝污染物的超标排放,企业需要对CEMS设备仪表数据显示并上传的NOx及SO2等污染物排放浓度根据公示计算各项数据的瞬时值,在DCS中无小时均值的计算,而CEMS设备无法对其加入小时均值的参数显示。需要找到一种能够将监控数据实时反映在DCS系统中的计算方法,以便运行人员实时监控当前时间段内小时均值的超标情况,及时调整运行方式,确保排放量不超标。

如果使用系统自带的平均值库函数,它只能反应固定时间间隔内变量的平均值,不能反映在任意时刻前单位时间内变量平均值,比如我们采取的是5分钟的平均值,那么这个平均值只会在第2、10、15、20分钟时变量的平均值才会变化一次,其余时间变量不会发生变化,如果是5分钟变化一次就不能满足相关标准的要求,要求计算每一时段的前五分钟均值。基于上述原因,根据工艺要求,需要自己编程建立一个平均值库函数POU,在编程语言的选择上,因为根据工艺需要,程序可能需要上百个或上千个变量累计求和,计算过程需要用到循环处理语句,LD、CFC、SFC语言不能满足编程要求,选择ST文本化编程语言。

为了满足不同算法的要求,编程中数据预先设置为500ms、1秒、2秒等采样周期。假如变量1秒钟采集一次,采用那么求取小时均值的3600个变量能求取前60分钟的平均值,这个算法会占有CPU的存储和处理能力。故选择目前时段前60秒计算平均数,采用栈存储、进栈出栈,通过曲线可以看到过去及现在任意时段前60秒的平均值。根据此理论可以计算目前时间前60分钟的均值及24均值。使数据实时计算,通过曲线可以看到过去任意时段内的均值。

1.2 程序代码如下

(* 适用调度周期为 500ms 的 POU 的小时均值 *)

IF T<99999999 THEN

T:=T+1;

ELSE

T:=0;

END_IF

(*1 秒钟采集一个数, 1 分钟平均值计算 *)

SEC1[60]:=IN;

SECT:= (T MOD 2)<1;

IF SECT THEN

FOR i:=0 TO 59 DO SEC1[i]:=SEC1[i+1];

END_FOR

END_IF

MIN1[60]:=(SEC1[0]+SEC1[1]+SEC1[2]+SEC1[3]+SEC1[4]+SEC1[5]+SEC1[6]+SEC1[7]+SEC1[8]+SEC1[9]+SEC1[10]+SEC1[11]+SEC1[12]+SEC1[13]+SEC1[14]+SEC1[15]+SEC1[16]+SEC1[17]+SEC1[18]+SEC1[19]+SEC1[20]+SEC1[21]+SEC1[22]+SEC1[23]+SEC1[24]+SEC1[25]+SEC1[26]+SEC1[27]+SEC1[28]+SEC1[29]+SEC1[30]+SEC1[31]+SEC1[32]+SEC1[33]+SEC1[34]+SEC1[35]+SEC1[36]+SEC1[37]+SEC1[38]+SEC1[39]+SEC1[40]+SEC1[41]+SEC1[42]+SEC1[43]+SEC1[44]+SEC1[45]+SEC1[46]+SEC1[47]+SEC1[48]+SEC1[49]+SEC1[50]+SEC1[51]+SEC1[52]+SEC1[53]+SEC1[54]+SEC1[55]+SEC1[56]+SEC1[57]+SEC1[58]+SEC1[59])/60;

(*1 分钟采集一个数, 1 小时平均值计算 *)

MINT:=(T MOD 120)<1;

IF MINT THEN

FOR j:=0 TO 59 DO MIN1[j]:=MIN1[j+1];

END_FOR

END_IF

T1HOU_AV:=(MIN1[0]+MIN1[1]+MIN1[2]+MIN1[3]+MIN1[4]+MIN1[5]+MIN1[6]+MIN1[7]+MIN1[8]+MIN1[9]+MIN1[10]+MIN1[11]+MIN1[12]+MIN1[13]+MIN1[14]+MIN1[15]+MIN1[16]+MIN1[17]+MIN1[18]+MIN1[19]+MIN1[20]+MIN1[21]+MIN1[22]+MIN1[23]+MIN1[24]+MIN1[25]+MIN1[26]+MIN1[27]+MIN1[28]+MIN1[29]+MIN1[30]+MIN1[31]+MIN1[32]+MIN1[33]+MIN1[34]+MIN1[35]+MIN1[36]+MIN1[37]+MIN1[38]+MIN1[39]+MIN1[40]+MIN1[41]+MIN1[42]+MIN1[43]+MIN1[44]+MIN1[45]+MIN1[46]+MIN1[47]+MIN1[48]+MIN1[49]+MIN1[50]+MIN1[51]+MIN1[52]+MIN1[53]+MIN1[54]+MIN1[55]+MIN1[56]+MIN1[57]+MIN1[58]+MIN1[59])/60;(变量定义此处不做说明)

1.3 运行分析

运行后,通过观察变量的趋势图,可以得到过去及现在任意时段前1小时的均值,根据此曲线可以对过去的在线监测均值进行显示,从而对后续到达整点时间内的小时均值区间工艺指标及烟气净化设备进行调节,在后续的到达整点时间内严格控制烟气指标。通过此程序能够提前调整运行工况预防烟气在线超标。

2 结束语

这个自定义库函数不仅仅用在工业烟气在线监测的平均值求取上,同时能够用于危险废物处置中二燃室出口温度的5分钟均值上。还可以用在三效蒸发液位及流量波动较大的控制回路中,在实际生产中也进行了应用,并取得了明显的效果。在现场调试时完全满足工艺控制要求,性能稳定可靠,满足各项工艺要求,生产效率和产品质量均有大幅提高。当上述代码加入适当的语句,可以求出单位时间内过程变量的最大值和最小值,也可以去掉的最大值和最小值,单位时间的平均值更能准确的反应一段时间内液位的变化,曲线相对更为平滑,且不影响数据的真实性和准确性,更适合PID的调节。

参考文献

[1] HOLLiAS MACS V6.5 用户手册 5_功能块说明 1.4 版 2016 年 1 月

[ 2 ] HOLLiAS MACS_V6.5 用户手册 3_工程组态1.4 版 2016 年 1 月