當前位置: 首頁 > 工業(yè)控制產(chǎn)品 > 運動控制 > 變頻器
發(fā)布日期:2022-04-18 點擊率:61
摘要:
Honeywell TDC3000系統(tǒng)的CL/AM程序設(shè)計在復雜運算方面能力突出,在罐區(qū)儲量計量中能力卓越,本文在這方面有詳細闡述并且提供另一種近似計算方法和程序源碼,并且利用到了面向?qū)ο蟪绦蛟O(shè)計方法的設(shè)計思想。
關(guān)鍵詞:
CL/AM,程序設(shè)計,罐區(qū)、儲量、計算、程序源碼、面向?qū)ο?br/>
引言:
CL/AM程序設(shè)計是Honeywell TDC3000 DCS系統(tǒng)中一個運算功能強大的工具。在DCS系統(tǒng)中有一部分復雜算法是標準測量算法無法實現(xiàn)的,這是就要借助CL/AM程序設(shè)計語言來實現(xiàn)。化工區(qū)乙烯罐區(qū)乙烯丙烯的儲量計算就是應用此法。
1、 CL語言的分類
CL語言可分為CL/MC、CL/PM、CL/AM三種設(shè)計方法:
(1)、CL/MC既是應用于多功能控制器(Multifunction control)的控制語言;
(2 )、CL/PM既是應用于過程管理器(Process Managers)的控制語言;
(3 )、CL/AM既是應用于應用模塊(Application Module)的控制語言,其主要參與連續(xù)控制的應用。
而本文主要涉及CL/AM的應用。
2、 CL/AM的功能及方法
基于AM的CL程序適用于較大規(guī)模程序及大量數(shù)據(jù)支持的應用。由于這一點,就需要得到數(shù)據(jù)庫的支持,而這個數(shù)據(jù)庫就包含了DCS系統(tǒng)中所有的數(shù)據(jù)點。
在DCS系統(tǒng)中,如果標準數(shù)據(jù)點處理功能或者標準PV或控制算法不能提供所需求的有效算法,即:
(1)、標準PV算法不能提供所需求的足夠的算法和邏輯,那么在建立數(shù)據(jù)點時設(shè)定PVALGID= CL并將CL/AM程序連接來代替標準PV算法;
(2)、標準控制算法不能滿足所需求的控制動作,那么在建立該數(shù)據(jù)點時,設(shè)參數(shù)CTLALGID=CL并將相應CL/AM程序連接來代替標準控制算法;
(3)、CL/AM程序也能被連接到,例如Regulatory Control、Custom或Switch類型的數(shù)據(jù)點上來擴大數(shù)據(jù)點的處理功能。
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ū)儲量計算中的應用
4.1、設(shè)計思路:
因為在罐區(qū)的儲罐為非完全標準球罐,很難在數(shù)據(jù)點的標準PV算法中計算出其實時的儲量,即根據(jù)球罐的實時液位及密度等參數(shù)來計算出罐內(nèi)液體的質(zhì)量。所以在實際的運用中DCS采用了CL/AM程序來代替AM Regulatory點的PVALGID算法。乙烯罐區(qū)9501A、9501B兩罐的罐內(nèi)液體質(zhì)量計算即用CL/AM程序來實現(xiàn)。在這里,罐內(nèi)液體的密度是0.442。程序設(shè)計思路如下,在積分學中為了計算某一不規(guī)則圖形的面積或體積時會將其細分為若干個近似規(guī)則的有可遵循計算方法的小圖形來計算,之后再集合成該圖形的面積或體積,當然分的越細則越精確。設(shè)下圖為不規(guī)則圖形:
我們可以將其劃分為n個高為h,寬為dn的方形來計算,n決定其精度。而9501A、B罐的CL/AM計算質(zhì)量程序就采用此思路。將球罐等高度劃分為143段,計算出每個高度所對應的體積并將其放入數(shù)組中。實時的液位高度將在143段的某兩段之間或等于某一段,然后根據(jù)該段的體積數(shù)Vn加兩段之間按比例計算的V` 得出總的體積,繼而根據(jù)密度計算出罐的儲量。
4.2程序結(jié)構(gòu)圖:
4.3 程序部分源代碼及代碼注釋:
本例是DCS中9501A、B兩罐的儲量計算公式。兩罐的規(guī)格相同,則在同一個CL/AM程序中一起計算,結(jié)果外送到數(shù)據(jù)點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) —— 每一層對應的體積,略去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 — —輸入點液位接口;
EXTERNAL MI9501A, MI9501B — —輸出點儲量接口;
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ù)取液位達到或超過的最近的層數(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) — — 計算出當前液位所對應的體積數(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值時,綁定點的PVAUTOST模式為BAD,其他則正常模式;
SET PVAUTOST=(WHEN BADVAL(K):BAD;WHEN OTHERS:NORMAL)
END MC302
END PACKAGE
4.4 以上思路的優(yōu)缺點:
從以上思路可以看出來CUSTOM數(shù)據(jù)段是一個長為144的數(shù)組數(shù)值,是通過人工測量計算后得到的球罐143個平均高度層每層所對應的體積數(shù),然后在寫入程序時編碼到源代碼中。其優(yōu)點是對于同一種規(guī)格的球罐來說數(shù)組值不會有變化,從而一個程序能計算多個球罐體積(但擴展時需要重新編碼)。
優(yōu)缺點是:
(1)、計算量大:
對于每一個分層所對應的體積數(shù)都要計算而得,這在設(shè)計階段的計算量太大;
(2)、可維護性差:
因本例中9501A、B罐儲量在一個程序中計算,且31系列的乙烯A、B、C、D和丙烯A、B、C罐也在另一個程序中一起計算(原理相同),若要對數(shù)據(jù)段數(shù)據(jù)或密度等進行維護修改,則會引起通程序中其他的儲量計算出現(xiàn)問題;
(3)、通用性差:
因為數(shù)據(jù)段的體積數(shù)是具體的數(shù)據(jù),所以每一種直徑的罐都是不同的,那么每一種罐都需要一個單獨的邨CL/AM程序來計算,增大了工作量也增加了HM的存儲壓力,更不利于改造時的擴展。
5、CL/AM程序在乙烯罐區(qū)中應用的面向?qū)ο蟪绦蛟O(shè)計優(yōu)化思路
5.1.1 CL/AM程序GENERIC應用:
這種應用適合于一批情況相似的計算應用,不必對每一個都設(shè)計出CL/AM程序,而是對相似的計算設(shè)計出一個程序來讓所有其它的相似計算共同引用。不同的是在CUSTOM數(shù)據(jù)段中引用的GENERIC INPUT是不同的數(shù)據(jù)源。其中ENENRIC INPUT是在被綁定點PED端口設(shè)置NOGINPTS的值為引用的數(shù)據(jù)源的個數(shù),這也是面向?qū)ο蟪绦蛟O(shè)計方法,如對9501A罐儲量計算時被綁定點的部分組態(tài)如下:
5.1.2 CUSTOM數(shù)據(jù)段的應用:
該思路中還用到密度和半徑,應該也包括在CUSTOM數(shù)據(jù)段中。對于不同的半徑球罐和罐內(nèi)液體,可以在綁定點得PED組態(tài)時更改為相應的半徑和密度。
5.1.3 計算公式: 所用到的公式如下
V = 3.1415926*LEVEL*LEVEL*(3*RADIUS-LEVEL)/3 ……….①M=V*DENSITY ………………………………………………………②
5.2 程序流程圖:
5.3 設(shè)計代碼及注釋如下:
PACKAGE
CUSTOM - - 數(shù)據(jù)段參數(shù)聲明開始
PARAMETER LEVEL “l(fā)evel of tank” - - 被測球罐實時液位;
PARAMETER DENSITY “density of liquid” - - 罐內(nèi)液體的密度;
PARAMETER RADIUS “radius of tank” - - 球罐的半徑;
END CUSTOM - - 參數(shù)聲名結(jié)束;
BLOCK TANK_CALC(GENERIC; AT PV_ALG) -- 程序塊開始;
LOCAL level1,diameter,V,M - - 臨時變量聲明,液位、直徑、體積、儲量;
PARAMETER PVCALC - - 返回綁定點的測量值接口;
PARAMETER PVAUTOST:PVVALST - - 返回綁定點的測量值模式接口;
SET level1=0.0 - - 臨時液位變量初值;
SET diameter=2*RADIUS - - 臨時直徑(總高)初值;
IF LEVEL<0.0 THEN SET level1=0.0 - - 產(chǎn)生負值液位時,設(shè)沒有液位;
IF LEVEL>diameter THEN SET level1=diameter - - 若超大液位時,設(shè)滿罐;
IF (LEVEL>=0.0) AND (LEVEL<=diameter) THEN SET level1=LEVEL --液位正常;
- - 計算實時液位所達到的液體體積;
SET V=3.1415926*level1*level1*(3*RADIUS – level1)/3
- - 計算儲量;
SET M=V*DENSITY
- -
CALL ALLOW_BAD(PVCALC,M) -- 輸出計算儲量到綁定點測量值,并錯誤處理;
SET PVAUTOST=NORMAL - - 設(shè)定綁定點測量工作模式為正常;
END TANK_C
END PACKAGE
5.4 綁定點的部分組態(tài)值:
綁定點為AM REGULATORY 點:
5.5 本文提供方式與原方式的比較
5.5.1 計算量:
沒有了開發(fā)時的數(shù)組計算量,實時液位所對應的體積在程序公式中得到計算,當然
前提是球罐是標準的球形。而對于非標準的球形誤差也不會比原方法大(原因是原方法在計算兩層之間的體積時是按照平均來分,事實上來說兩層之間也是球體的切層,用平均法有較大的誤差)。
5.5.2 可維護性:
因為沒有程序中具體的量,而是通過綁定點的接口來輸入輸出,所以基本上不需要維護。
5.5.3 通用性:
本程序適用于各種球罐(不同半徑)中各種液體(不同密度)儲量的計算。只需要在綁定點中PED設(shè)定參數(shù)(LEVEL,DENSITY,RADIUS)即可。并且本程序只需要一個拷貝就可以有多個引用,也減少了HM的存儲壓力。
5.6 與PV標準算法的比較:
其實按照這種用球缺體積公式來近似的方法完全可以在PV標準算法中來實現(xiàn),效果應該和本文提供的算法相同,且不用編制程序。但是公式中的計算量較大,因為APMM需要處理數(shù)據(jù)太多,而AM在程序處理方面能力較強,這樣可以解放APMM,而充分發(fā)揮 AM的長處,何樂而不為呢!
5.7 與面向?qū)ο蟪绦蛟O(shè)計方法的比較:
嚴格意義上來說工業(yè)控制與計算機程序設(shè)計是兩個學科,然而隨著科技的發(fā)展其界限已經(jīng)越來越模糊,正如各種程序語言越來越多介入工業(yè)控制(如VB、Delphi等),現(xiàn)代程序設(shè)計的思想也進入到工業(yè)控制。這里我們繼承的就是“面向?qū)ο蟆钡某绦蛟O(shè)計方法,將罐作為一個“對象”,密度、半徑、液位作為“屬性”,儲量的計算作為“方法”。本例就是將其簡單封裝作為所有球罐的類(程序),每一個應用就是將這個類(程序)實例化(應用)一次。所以總體來說,本文的思想就是將“面向?qū)ο蟆背绦蛟O(shè)計方法的思想在工業(yè)控制的程序設(shè)計中做了深化。
6、總結(jié)
CL/AM程序是個很有用的工具,在復雜計算方式替代標準PV算法等方面能力突出。在乙烯罐區(qū)球罐儲量計算的程序設(shè)計中,相比原有方法的可以減少開發(fā)時的計算量、不存在維護問題,并且通用性較強。而與數(shù)據(jù)點的PV標準算法相比可以減少APMM的負擔。本文也提供了源代碼以及對代碼注釋分析。同時對面向?qū)ο蟪绦蛟O(shè)計思想在工業(yè)控制程序設(shè)計中的應用做了部分深化。
參考文獻:
1、 Honeywell TDC3000 系統(tǒng)手冊;
2、 中國石化廣州分公司乙烯DCS系統(tǒng)CL/AM程序MC302.CL源代碼
●Application of the CL/AM program in ethylene tank area
Abstract:
The ability of the CL/AM programming of Honeywell TDC3000 system in the aspect of complex calculation is stand out. At the ethylene tank area, its ability of calculating the capacity of ethylene tank is standout. This paper issues particular and gives other method.
Keys:
CL/AM,programming,tank area,capacity ,calculation,program code.
作者簡介: 王雨辰,中國石化廣州分公司信息儀控中心,電話020-82128389
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV