国产农村一国产农村无码毛片,国产又粗又大又硬一区二区,亚洲无码av在线免费,中文字幕av一区中文字幕天堂

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

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

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

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

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

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



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

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



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

BLOCK MC302(POINT MC302;AT PV_ALG) — —程序塊開始,綁定在MC302上;
EXTERNAL LI9501A_30, LI9501B_30 — —輸入點(diǎn)液位接口;
EXTERNAL MI9501A, MI9501B — —輸出點(diǎn)儲量接口;
LOCAL I,J,K — —臨時變量;
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 — —儲量的計算過程,A、B兩罐;
IF LI(I)=0.0 THEN GOTO A3 — —如果沒有液位則跳轉(zhuǎn),按體積為零計算;
IF LI(I)>=14.30 THEN SET LI(I)=14.30 — —如果超滿液位則按體積為滿計算;
SET K=INT(LI(I)*10) — — 用取整函數(shù)取液位達(dá)到或超過的最近的層數(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) — — 計算出當(dāng)前液位所對應(yīng)的體積數(shù);
A3: REPEAT A1 — —LOOP A1循環(huán)結(jié)束;
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值時,綁定點(diǎn)的PVAUTOST模式為BAD,其他則正常模式;
SET PVAUTOST=(WHEN BADVAL(K):BAD;WHEN OTHERS:NORMAL)
END MC302
END PACKAGE


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

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

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



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



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