分享好友 方案首页 频道列表

Honeywell TDC3000 CL/AM程序设计在罐区计量中的应用

2012-04-16中国石化广州分公司信息仪控中心 王雨辰

摘要:
  Honeywell TDC3000系统的CL/AM程序设计在复杂运算方面能力突出,在罐区储量计量中能力卓越,本文在这方面有详细阐述并且提供另一种近似计算方法和程序源码,并且利用到了面向对象程序设计方法的设计思想。

关键词:
  CL/AM,程序设计,罐区、储量、计算、程序源码、面向对象

引言:
  CL/AM程序设计是Honeywell TDC3000 DCS系统中一个运算功能强大的工具。在DCS系统中有一部分复杂算法是标准测量算法无法实现的,这是就要借助CL/AM程序设计语言来实现。化工区乙烯罐区乙烯丙烯的储量计算就是应用此法。

1、 CL语言的分类
CL语言可分为CL/MC、CL/PM、CL/AM三种设计方法:
(1)、CL/MC既是应用于多功能控制器(Multifunction control)的控制语言;
(2 )、CL/PM既是应用于过程管理器(Process Managers)的控制语言;
(3 )、CL/AM既是应用于应用模块(Application Module)的控制语言,其主要参与连续控制的应用。
而本文主要涉及CL/AM的应用。

2、 CL/AM的功能及方法
  基于AM的CL程序适用于较大规模程序及大量数据支持的应用。由于这一点,就需要得到数据库的支持,而这个数据库就包含了DCS系统中所有的数据点。
在DCS系统中,如果标准数据点处理功能或者标准PV或控制算法不能提供所需求的有效算法,即:
(1)、标准PV算法不能提供所需求的足够的算法和逻辑,那么在建立数据点时设定PVALGID= CL并将CL/AM程序连接来代替标准PV算法;
(2)、标准控制算法不能满足所需求的控制动作,那么在建立该数据点时,设参数CTLALGID=CL并将相应CL/AM程序连接来代替标准控制算法;
(3)、CL/AM程序也能被连接到,例如Regulatory Control、Custom或Switch类型的数据点上来扩大数据点的处理功能。
3、 CL/AM程序的结构
一个完整的CL/AM结构如下:
PACKAGE
CUSTOM — —参数声明区
----------------------------------------
----------------------------------------
END CUSTOM
BLOCK 块名 (作用范围;AT 代替算法)
---------------------------------------- — —程序代码区
---------------------------------------
END 块名
END PACKAGE

4、 CL/AM程序在乙烯罐区储量计算中的应用
4.1、设计思路:
  因为在罐区的储罐为非完全标准球罐,很难在数据点的标准PV算法中计算出其实时的储量,即根据球罐的实时液位及密度等参数来计算出罐内液体的质量。所以在实际的运用中DCS采用了CL/AM程序来代替AM Regulatory点的PVALGID算法。乙烯罐区9501A、9501B两罐的罐内液体质量计算即用CL/AM程序来实现。在这里,罐内液体的密度是0.442。程序设计思路如下,在积分学中为了计算某一不规则图形的面积或体积时会将其细分为若干个近似规则的有可遵循计算方法的小图形来计算,之后再集合成该图形的面积或体积,当然分的越细则越精确。设下图为不规则图形:



  我们可以将其划分为n个高为h,宽为dn的方形来计算,n决定其精度。而9501A、B罐的CL/AM计算质量程序就采用此思路。将球罐等高度划分为143段,计算出每个高度所对应的体积并将其放入数组中。实时的液位高度将在143段的某两段之间或等于某一段,然后根据该段的体积数Vn加两段之间按比例计算的V` 得出总的体积,继而根据密度计算出罐的储量。

4.2程序结构图:



4.3 程序部分源代码及代码注释:
  本例是DCS中9501A、B两罐的储量计算公式。两罐的规格相同,则在同一个CL/AM程序中一起计算,结果外送到数据点MI9501A.PV和MI9501B.PV。部分程序源代码如下:
PACKAGE CUSTOM(NOT BLD_VISIBLE) ——数据段声明开始;
PARAMETER MIN:ARRAY(1..144) —— 包含143段体积数的数组;
VALUE (0.0,0.224,. . . ,1531.115) —— 每一层对应的体积,略去141个数组值;PARAMETER LI:ARRAY(1.. 10) — —中间数组,保存临时用到的高度;
PARAMETER MI:ARRAY(1..10) — —中间数组,保存用到的储量和密度;
END CUSTOM— —数据段声明结束;

BLOCK MC302(POINT MC302;AT PV_ALG) — —程序块开始,绑定在MC302上;
EXTERNAL LI9501A_30, LI9501B_30 — —输入点液位接口;
EXTERNAL MI9501A, MI9501B — —输出点储量接口;
LOCAL I,J,K — —临时变量;
SET J=2 — — 罐的数量,即A、B罐;
SET MI(6)=0.442 — — 罐内液体的密度;
A2: LOOP FOR I IN 1 . . 5 — —变量初始化;
SET LI (I)=0.0
MI (I)=0.0
REPEAT A2
IF LI9501A_30.PV>0.0 THEN SET LI(1)=LI9501A_30.PV — —如果有液位,赋值;
IF LI9501B_30.PV>0.0 THEN SET LI(2)=LI9501B_30.PV — —同上;
A1: LOOP FOR I IN 1 . . J — —储量的计算过程,A、B两罐;
IF LI(I)=0.0 THEN GOTO A3 — —如果没有液位则跳转,按体积为零计算;
IF LI(I)>=14.30 THEN SET LI(I)=14.30 — —如果超满液位则按体积为满计算;
SET K=INT(LI(I)*10) — — 用取整函数取液位达到或超过的最近的层数;
SET LI(8)=MIN(K+2) -MIN(K+1) — — 取液位所在两层之间的体积差;
SET LI(9)=LI(I)*10 -K — — 取液位K+1和K+2层之间部分高度;
SET MI(I)=MIN(K+1)+LI(8)*LI(9) — — 计算出当前液位所对应的体积数;
A3: REPEAT A1 — —LOOP A1循环结束;
SET MI9501A.PV=MI(1)*MI(6) — —A罐储量=A罐体积*密度;
SET MI9501B.PV=MI(2)*MI(6) — —B罐储量=B罐体积*密度;

SET K=MI(1) — —A罐体积交给K;
CALL ALLOW_BAD(PVCALC,K) — —如果K值有错误,同样可以赋值,不忽略;
— —下一句K为BAD值时,绑定点的PVAUTOST模式为BAD,其他则正常模式;
SET PVAUTOST=(WHEN BADVAL(K):BAD;WHEN OTHERS:NORMAL)
END MC302
END PACKAGE


4.4 以上思路的优缺点:
  从以上思路可以看出来CUSTOM数据段是一个长为144的数组数值,是通过人工测量计算后得到的球罐143个平均高度层每层所对应的体积数,然后在写入程序时编码到源代码中。其优点是对于同一种规格的球罐来说数组值不会有变化,从而一个程序能计算多个球罐体积(但扩展时需要重新编码)。

优缺点是:
(1)、计算量大:
对于每一个分层所对应的体积数都要计算而得,这在设计阶段的计算量太大;
(2)、可维护性差:
因本例中9501A、B罐储量在一个程序中计算,且31系列的乙烯A、B、C、D和丙烯A、B、C罐也在另一个程序中一起计算(原理相同),若要对数据段数据或密度等进行维护修改,则会引起通程序中其他的储量计算出现问题;
(3)、通用性差:
因为数据段的体积数是具体的数据,所以每一种直径的罐都是不同的,那么每一种罐都需要一个单独的邨CL/AM程序来计算,增大了工作量也增加了HM的存储压力,更不利于改造时的扩展。

5、CL/AM程序在乙烯罐区中应用的面向对象程序设计优化思路
5.1.1 CL/AM程序GENERIC应用:
  这种应用适合于一批情况相似的计算应用,不必对每一个都设计出CL/AM程序,而是对相似的计算设计出一个程序来让所有其它的相似计算共同引用。不同的是在CUSTOM数据段中引用的GENERIC INPUT是不同的数据源。其中ENENRIC INPUT是在被绑定点PED端口设置NOGINPTS的值为引用的数据源的个数,这也是面向对象程序设计方法,如对9501A罐储量计算时被绑定点的部分组态如下:



5.1.2 CUSTOM数据段的应用:
  该思路中还用到密度和半径,应该也包括在CUSTOM数据段中。对于不同的半径球罐和罐内液体,可以在绑定点得PED组态时更改为相应的半径和密度。



5.1.3 计算公式: 所用到的公式如下
V = 3.1415926*LEVEL*LEVEL*(3*RADIUS-LEVEL)/3 ……….①M=V*DENSITY ………………………………………………………②
5.2 程序流程图:

收藏
神州普惠试验检验管理解决方案
试验检验管理系统TCM紧紧围绕产品生产试验检验的全过程进行系统规范的监控和管理,有力的监管了整个试验检验过程、协调组织了试验检验工作的开展、规范了试验检验过程的管理,同时还以方便高效的手段,整理和收集了全部试验检验过程的信息数据。

0评论2014-03-24

宏电工业级TD无线路由器应用于交警局电子警察项目
“电子警察”是高科技的交通管理手段,也是道路交通技术监控系统的重要环节,是智能交通系统建设的重要组成部分。它以其无人值守、自动记录、容量大、无需当场处罚、便于管理等优点成为交通管理工作中必不可少的装备。

0评论2013-02-27

领邦公布新型全自动检测方案:弹丸尺寸的快速检测
近日,北京领邦仪器技术有限公司(后文简称“领邦”)公布了一套新型的全自动检测方案——弹丸尺寸检测系统。该系统是一套在线全自动终检设备,采用激光扫描的方式,在计算机中还原炮弹外形,能够实现炮弹外形尺寸和形位公差的快速检测,满足大批量产品的在线自动化检测,避免人为检测造成的误差,同时保证数据的可靠性以及提高数据管理方便性。

0评论2012-08-31

仪器总线技术的回顾与展望
在测试测量领域,仪器总线技术的发展历来是工程师和科学家们最为关心的部分。从上世纪60年代推出的专用于仪器控制的GPIB总线,到现在被广泛使用的 USB、VXI、PXI和最新推出的LXI、PXI Express,不断涌现的新型总线技术在帮助我们的工程师更快捷高效的完成测量任务的同时,也引起了行业内专家们的广泛争论,究竟哪一种总线将会主宰未 来的测试测量领域呢?

0评论2012-05-28

加固电源典型应用方案
美国北大西洋(NAII)公司为军工和航空领域的嵌入式市场所提供的加固电源,类型齐全,无论是标准型产品还是定制型产品,都应有尽有。在国内外航空、航海、舰船等应用中占有及其重要的地位。

0评论2012-05-03

倾角传感器在无人机上的应用
无人驾驶飞机简称无人机,是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。机上无驾驶舱,但安装有自动驾驶仪、程

0评论2012-04-13

倾角传感器在移动通讯车平衡系统上的应用
移动通信基站车是移动通信领域中用于应急通信信道建立的系统集成车辆。主要的功能一般包括GSM、CDMA、3G基站信道的建立、无线计

0评论2012-04-13

倾角传感器在水平平台测量上的应用
在仪器仪表、精密工具、机械制件的检验等行业经常会使用到水平平台,而大理石平台可以作为一个理想的选择,因为大理石的平台是一

0评论2012-04-13

SST倾角传感器在阳光追踪系统上的应用
随着能源的匮乏,人类越来越注重利用新型能源来代替现有的煤、石油原料,利用太阳能获得能源就是一个非常好的办法。阳光追踪器

0评论2012-04-13