日本老熟妇一二三区-麻豆视频精品一区-人妻中文字幕xx-一区二区美女少妇-日本成人一级在线

Honeywell TDC3000 CL/AM程序設(shè)計(jì)在罐區(qū)計(jì)量中的應(yīng)用
中國(guó)石化廣州分公司信息儀控中心 王雨辰

摘要:
  Honeywell TDC3000系統(tǒng)的CL/AM程序設(shè)計(jì)在復(fù)雜運(yùn)算方面能力突出,在罐區(qū)儲(chǔ)量計(jì)量中能力卓越,本文在這方面有詳細(xì)闡述并且提供另一種近似計(jì)算方法和程序源碼,并且利用到了面向?qū)ο蟪绦蛟O(shè)計(jì)方法的設(shè)計(jì)思想。

關(guān)鍵詞:
  CL/AM,程序設(shè)計(jì),罐區(qū)、儲(chǔ)量、計(jì)算、程序源碼、面向?qū)ο?br />
引言:
  CL/AM程序設(shè)計(jì)是Honeywell TDC3000 DCS系統(tǒng)中一個(gè)運(yùn)算功能強(qiáng)大的工具。在DCS系統(tǒng)中有一部分復(fù)雜算法是標(biāo)準(zhǔn)測(cè)量算法無(wú)法實(shí)現(xiàn)的,這是就要借助CL/AM程序設(shè)計(jì)語(yǔ)言來(lái)實(shí)現(xiàn)?;^(qū)乙烯罐區(qū)乙烯丙烯的儲(chǔ)量計(jì)算就是應(yīng)用此法。

1、 CL語(yǔ)言的分類(lèi)
CL語(yǔ)言可分為CL/MC、CL/PM、CL/AM三種設(shè)計(jì)方法:
(1)、CL/MC既是應(yīng)用于多功能控制器(Multifunction control)的控制語(yǔ)言;
(2 )、CL/PM既是應(yīng)用于過(guò)程管理器(Process Managers)的控制語(yǔ)言;
(3 )、CL/AM既是應(yīng)用于應(yīng)用模塊(Application Module)的控制語(yǔ)言,其主要參與連續(xù)控制的應(yīng)用。
而本文主要涉及CL/AM的應(yīng)用。

2、 CL/AM的功能及方法
  基于AM的CL程序適用于較大規(guī)模程序及大量數(shù)據(jù)支持的應(yīng)用。由于這一點(diǎn),就需要得到數(shù)據(jù)庫(kù)的支持,而這個(gè)數(shù)據(jù)庫(kù)就包含了DCS系統(tǒng)中所有的數(shù)據(jù)點(diǎn)。
在DCS系統(tǒng)中,如果標(biāo)準(zhǔn)數(shù)據(jù)點(diǎn)處理功能或者標(biāo)準(zhǔn)PV或控制算法不能提供所需求的有效算法,即:
(1)、標(biāo)準(zhǔn)PV算法不能提供所需求的足夠的算法和邏輯,那么在建立數(shù)據(jù)點(diǎn)時(shí)設(shè)定PVALGID= CL并將CL/AM程序連接來(lái)代替標(biāo)準(zhǔn)PV算法;
(2)、標(biāo)準(zhǔn)控制算法不能滿(mǎn)足所需求的控制動(dòng)作,那么在建立該數(shù)據(jù)點(diǎn)時(shí),設(shè)參數(shù)CTLALGID=CL并將相應(yīng)CL/AM程序連接來(lái)代替標(biāo)準(zhǔn)控制算法;
(3)、CL/AM程序也能被連接到,例如Regulatory Control、Custom或Switch類(lèi)型的數(shù)據(jù)點(diǎn)上來(lái)擴(kuò)大數(shù)據(jù)點(diǎn)的處理功能。
3、 CL/AM程序的結(jié)構(gòu)
一個(gè)完整的CL/AM結(jié)構(gòu)如下:
PACKAGE
CUSTOM — —參數(shù)聲明區(qū)
----------------------------------------
----------------------------------------
END CUSTOM
BLOCK 塊名 (作用范圍;AT 代替算法)
---------------------------------------- — —程序代碼區(qū)
---------------------------------------
END 塊名
END PACKAGE

4、 CL/AM程序在乙烯罐區(qū)儲(chǔ)量計(jì)算中的應(yīng)用
4.1、設(shè)計(jì)思路:
  因?yàn)樵诠迏^(qū)的儲(chǔ)罐為非完全標(biāo)準(zhǔn)球罐,很難在數(shù)據(jù)點(diǎn)的標(biāo)準(zhǔn)PV算法中計(jì)算出其實(shí)時(shí)的儲(chǔ)量,即根據(jù)球罐的實(shí)時(shí)液位及密度等參數(shù)來(lái)計(jì)算出罐內(nèi)液體的質(zhì)量。所以在實(shí)際的運(yùn)用中DCS采用了CL/AM程序來(lái)代替AM Regulatory點(diǎn)的PVALGID算法。乙烯罐區(qū)9501A、9501B兩罐的罐內(nèi)液體質(zhì)量計(jì)算即用CL/AM程序來(lái)實(shí)現(xiàn)。在這里,罐內(nèi)液體的密度是0.442。程序設(shè)計(jì)思路如下,在積分學(xué)中為了計(jì)算某一不規(guī)則圖形的面積或體積時(shí)會(huì)將其細(xì)分為若干個(gè)近似規(guī)則的有可遵循計(jì)算方法的小圖形來(lái)計(jì)算,之后再集合成該圖形的面積或體積,當(dāng)然分的越細(xì)則越精確。設(shè)下圖為不規(guī)則圖形:



  我們可以將其劃分為n個(gè)高為h,寬為dn的方形來(lái)計(jì)算,n決定其精度。而9501A、B罐的CL/AM計(jì)算質(zhì)量程序就采用此思路。將球罐等高度劃分為143段,計(jì)算出每個(gè)高度所對(duì)應(yīng)的體積并將其放入數(shù)組中。實(shí)時(shí)的液位高度將在143段的某兩段之間或等于某一段,然后根據(jù)該段的體積數(shù)Vn加兩段之間按比例計(jì)算的V` 得出總的體積,繼而根據(jù)密度計(jì)算出罐的儲(chǔ)量。

4.2程序結(jié)構(gòu)圖:



4.3 程序部分源代碼及代碼注釋?zhuān)?br />   本例是DCS中9501A、B兩罐的儲(chǔ)量計(jì)算公式。兩罐的規(guī)格相同,則在同一個(gè)CL/AM程序中一起計(jì)算,結(jié)果外送到數(shù)據(jù)點(diǎn)MI9501A.PV和MI9501B.PV。部分程序源代碼如下:
PACKAGE CUSTOM(NOT BLD_VISIBLE) ——數(shù)據(jù)段聲明開(kāi)始;
PARAMETER MIN:ARRAY(1..144) —— 包含143段體積數(shù)的數(shù)組;
VALUE (0.0,0.224,. . . ,1531.115) —— 每一層對(duì)應(yīng)的體積,略去141個(gè)數(shù)組值;PARAMETER LI:ARRAY(1.. 10) — —中間數(shù)組,保存臨時(shí)用到的高度;
PARAMETER MI:ARRAY(1..10) — —中間數(shù)組,保存用到的儲(chǔ)量和密度;
END CUSTOM— —數(shù)據(jù)段聲明結(jié)束;

BLOCK MC302(POINT MC302;AT PV_ALG) — —程序塊開(kāi)始,綁定在MC302上;
EXTERNAL LI9501A_30, LI9501B_30 — —輸入點(diǎn)液位接口;
EXTERNAL MI9501A, MI9501B — —輸出點(diǎn)儲(chǔ)量接口;
LOCAL I,J,K — —臨時(shí)變量;
SET J=2 — — 罐的數(shù)量,即A、B罐;
SET MI(6)=0.442 — — 罐內(nèi)液體的密度;
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 — —儲(chǔ)量的計(jì)算過(guò)程,A、B兩罐;
IF LI(I)=0.0 THEN GOTO A3 — —如果沒(méi)有液位則跳轉(zhuǎn),按體積為零計(jì)算;
IF LI(I)>=14.30 THEN SET LI(I)=14.30 — —如果超滿(mǎn)液位則按體積為滿(mǎn)計(jì)算;
SET K=INT(LI(I)*10) — — 用取整函數(shù)取液位達(dá)到或超過(guò)的最近的層數(shù);
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) — — 計(jì)算出當(dāng)前液位所對(duì)應(yīng)的體積數(shù);
A3: REPEAT A1 — —LOOP A1循環(huán)結(jié)束;
SET MI9501A.PV=MI(1)*MI(6) — —A罐儲(chǔ)量=A罐體積*密度;
SET MI9501B.PV=MI(2)*MI(6) — —B罐儲(chǔ)量=B罐體積*密度;

SET K=MI(1) — —A罐體積交給K;
CALL ALLOW_BAD(PVCALC,K) — —如果K值有錯(cuò)誤,同樣可以賦值,不忽略;
— —下一句K為BAD值時(shí),綁定點(diǎn)的PVAUTOST模式為BAD,其他則正常模式;
SET PVAUTOST=(WHEN BADVAL(K):BAD;WHEN OTHERS:NORMAL)
END MC302
END PACKAGE


4.4 以上思路的優(yōu)缺點(diǎn):
  從以上思路可以看出來(lái)CUSTOM數(shù)據(jù)段是一個(gè)長(zhǎng)為144的數(shù)組數(shù)值,是通過(guò)人工測(cè)量計(jì)算后得到的球罐143個(gè)平均高度層每層所對(duì)應(yīng)的體積數(shù),然后在寫(xiě)入程序時(shí)編碼到源代碼中。其優(yōu)點(diǎn)是對(duì)于同一種規(guī)格的球罐來(lái)說(shuō)數(shù)組值不會(huì)有變化,從而一個(gè)程序能計(jì)算多個(gè)球罐體積(但擴(kuò)展時(shí)需要重新編碼)。

優(yōu)缺點(diǎn)是:
(1)、計(jì)算量大:
對(duì)于每一個(gè)分層所對(duì)應(yīng)的體積數(shù)都要計(jì)算而得,這在設(shè)計(jì)階段的計(jì)算量太大;
(2)、可維護(hù)性差:
因本例中9501A、B罐儲(chǔ)量在一個(gè)程序中計(jì)算,且31系列的乙烯A、B、C、D和丙烯A、B、C罐也在另一個(gè)程序中一起計(jì)算(原理相同),若要對(duì)數(shù)據(jù)段數(shù)據(jù)或密度等進(jìn)行維護(hù)修改,則會(huì)引起通程序中其他的儲(chǔ)量計(jì)算出現(xiàn)問(wèn)題;
(3)、通用性差:
因?yàn)閿?shù)據(jù)段的體積數(shù)是具體的數(shù)據(jù),所以每一種直徑的罐都是不同的,那么每一種罐都需要一個(gè)單獨(dú)的邨CL/AM程序來(lái)計(jì)算,增大了工作量也增加了HM的存儲(chǔ)壓力,更不利于改造時(shí)的擴(kuò)展。

5、CL/AM程序在乙烯罐區(qū)中應(yīng)用的面向?qū)ο蟪绦蛟O(shè)計(jì)優(yōu)化思路
5.1.1 CL/AM程序GENERIC應(yīng)用:
  這種應(yīng)用適合于一批情況相似的計(jì)算應(yīng)用,不必對(duì)每一個(gè)都設(shè)計(jì)出CL/AM程序,而是對(duì)相似的計(jì)算設(shè)計(jì)出一個(gè)程序來(lái)讓所有其它的相似計(jì)算共同引用。不同的是在CUSTOM數(shù)據(jù)段中引用的GENERIC INPUT是不同的數(shù)據(jù)源。其中ENENRIC INPUT是在被綁定點(diǎn)PED端口設(shè)置NOGINPTS的值為引用的數(shù)據(jù)源的個(gè)數(shù),這也是面向?qū)ο蟪绦蛟O(shè)計(jì)方法,如對(duì)9501A罐儲(chǔ)量計(jì)算時(shí)被綁定點(diǎn)的部分組態(tài)如下:



5.1.2 CUSTOM數(shù)據(jù)段的應(yīng)用:
  該思路中還用到密度和半徑,應(yīng)該也包括在CUSTOM數(shù)據(jù)段中。對(duì)于不同的半徑球罐和罐內(nèi)液體,可以在綁定點(diǎn)得PED組態(tài)時(shí)更改為相應(yīng)的半徑和密度。



5.1.3 計(jì)算公式: 所用到的公式如下
V = 3.1415926*LEVEL*LEVEL*(3*RADIUS-LEVEL)/3 ……….①M(fèi)=V*DENSITY ………………………………………………………②
5.2 程序流程圖: