防喘振控制方案研究
一、程序移植的歷史背景及現實意義
大慶煉化公司180萬噸/年ARGG裝置三機組(軸流風機、煙機、主電機)控制系統是TRICONEX公司的TS3000控制系統,如圖1,自1998年投運以來運行平穩,但自2002年控制系統頻繁出現燒卡的現象(參見附表),已更換各類卡件18塊,嚴重地威脅裝置的安全生產。對此,煉化公司領導非常重視,曾多次組織召開專業技術分析會,組織儀錶及電氣等技術人員對整個系統詳細檢查,同時聯繫了北京設計院 、陝鼓、美國TRICONEX公司、ELLIOTT公司,及施工單位中油一公司,於2000年6月召開三天專業分析會,分析故障原因。各單位一致認為對接地系統及電源系統要進行檢查、測試和整改。並於2002年裝置停工檢修期間進行了徹底整改,耗資約30余萬元。為保證生產,公司成立技術攻關組,利用富士智能調節器及西門子S7-200PLC創建一套應急系統,保證在徹底整改前事故情況下緊急啟動備機系統。
藉此機會,儀錶專業對防喘振的源程序進行了認真的解讀,發現在TPS系統中完全可以實現該功能,與源程序相比,技術上更可靠,功能上更豐富,控制精度更高。在此,筆者對自動化專業應用程序的轉化和移植的思路及方案做以詳盡的闡述,旨在促進專業技術的交流與應用。
1、防喘振控制方案分析
就目前國內外煉化企業來看,防喘振控制通常用兩種方法:一是早期專用的
防喘振控制器,如WORDWARD公司的505C控制器、ELLIOT公司的ASCC控制器等;二是目前常用的PLC專用軟體包。如GE公司的9070系列PLC(用Logic Master或Field Control編的軟體包)、TRICONEX公司的TS3000(用MSW311或TS1131軟體包)等。但每個廠家出於對知識產權的保護,均不會公開其防喘振控制的演算法。專用的控制器只給用戶提供介面參數,專用的軟體包是用高級語言編寫的軟體包(如C語言)。用戶無法打開,只能在程序中調用。這些技術封索直接影響用戶對防喘振控制方案的深入理解,給程序的移植帶來了相當大的難度。筆者通過對多套機組喘振方案的研究,發現只有TS3000系統中的源程序對用戶是相對開放的,於是對其進行了反覆實驗,最終弄清了其演算法。這種演算法僅僅是不同廠家、不同設備中眾多演算法中常用的,也是相對減化的演算法。
1、防喘振控制的主要功能
● 喉部差壓低選、出口壓力高選
● 喉部差壓溫度補償演算法
● 喉部差壓和比例增益參數的折線運算
● 防喘振線下移功能
● 可遠程給定的PID運算
● 實現放空閥的快開慢關功能
● 實現兩個放空閥的分程式控制制
● 實現聯鎖停機放空閥自動打開控制
● 實現防喘振曲線圖
2、防喘振控制技術方案
根據測量壓縮機的喉部差壓、出口壓力、入口溫度這三量,TRICONEX有一套完整的喘振技術,該演算法中氣體分子量變化不會影響機組的防喘振控制。當風機正常運行時,它的工作點應該在圖2防喘振線的下方,此時偏差e=PV-SP<0,調節器的作用方式為反作用。當工作點越過防喘振線
並在其上方時,即偏差e>=0時,則要求防喘振閥快速打開。由於防喘振閥的打開,使工作點開始回到防喘振線以下時,閥的動作又應減慢,即要求防喘振閥在開關時,是以變速動作的。在偏差e>=0時,放空閥打開的快速取決於PID參數比例增益K的自適應能力(自動增大或減小),如果K值不變,放空閥則以正常的速度打開(一般要求在3秒鐘之內); 而當喘振發生的趨勢得以控制時,即偏差e=<0時,放空閥則以0.1%漸進式緩慢關閉。 防喘振控制演算法,是通過溫度補償后的喉部差壓值(防喘振曲線的橫坐標X軸)經過折線運算得出的出口壓力作為PID控制的設定值SP(防喘振曲線的縱坐標Y軸),來控制測量值出口壓力PV。防喘振控制的偏差e=PV-SP即為出口壓力的控制偏差。防喘振PID作用為反作用,正常狀況下偏差e<0,當e>=0時發生喘振。 當偏差e大於2%時系統發出喘振報警,當偏差e大於7%並且逆流報警存在,則防喘振線下移1%。為了保證風機的功效,最多下移5次,還設置了手動複位功能。當防喘振線下移時,此時的設定值SP為折線算出的SP'減去移動次數N乘以下移量1%。即: SP= SP'-N×1%。 PID參數比例增益K自整定功能是通過折線運算實現的,共11點坐標形成3段斜坡折線得出K'。在沒有發生喘振情況下,當偏差e大於0.1%時(即喘振條件具備)發生喘振,K值自動置為初始值90,然後K通過和折線運算后的K'計算逐漸減小。計算公式: K=(90×25.0)÷(K'+25.0) 當偏差e 小於0.1%時,K值值保持不變。在比例增益K值自動變化過程,積分T1值始終為4,微分T2值始終為0 功能模塊是TPS系統商提供的系統應用程序,用戶可根據需要進行選擇,然後將結構參數(功能參數和結構參數)設置好就可以調用,實現特定功能。 如高選模塊:功能是輸出等於輸入中最大的一個輸入。 其數學方程式是: M=X1 (當X1≥X2時) M=X2 (當X1≤X2時) 風機的兩個出口壓力採用高選控制,即選擇HILOAVG(HI)演算法;同樣兩個喉部差壓採用低選控制,即選擇HILOAVG(LO)演算法。 筆者針對圖3的防喘振控制框圖,在ARGG中央控制室TPS系統中,逐個功能反覆實驗最終確立新的演算法方框圖,如圖5所示。 結合圖5的框圖功能創建了一些功能點,如表1所示。 本控制演算法最大的技術難點,也是核心技術是: l 防喘振線的形成 l 比例增益K自整定運算 l 放空閥的快開慢關功能 l 防喘振曲線工作點的動態干預 下面就作以詳細的闡述。 一、溫壓補償演算法 在TPS系統中Regulatory PV溫壓補償演算法有固定的計算公式。 在這裡,筆者選擇了公式EQB演算法。下面是公式中的變數說明。 P = Measured actual gage pressure. T = Measured actual temperature. RP = Design pressure, converted to an absolute value (Default value = 1.0). RT = Design temperature, converted to an absolute value (Default value =1.0). P0 = Factor to convert gauge pressure to an absolute value. Typically 14.696 psia or 101.325 kPa. Enter the absolute value of the number.Default value = 0. If the measured pressure is already an absolute value, enter 0. T0 = Factor to convert Celsius and Fahrenheit temperatures to an absolute value. Typically 459.69°F or 273.15°C (use the absolute value of the number when entering a value in T0). 備機防喘振控制參考溫度為T0 = 25°C。 二、防喘振線的確定 原方案採用折線運算得出,這種控制演算法在DCS理論上稱之為預測控制,它採用工業過程中較易得到的對象階躍響應曲線,把它們在採樣時刻的一系列參數作為控制對象的設定值,從而使在未來一段時間內使測量值與經過“柔化”后的設定值之間的偏差最小。不同時刻採樣的設定值連成的曲線是經過在線“柔化”后的一條所期望的平緩曲線,通常稱為參考軌跡。 原控制方案中的防喘振線既是由11點坐標構成的一條參考軌跡。在TPS 系統中的Regulatory PV運算類模塊中就有專門的折線函數運算General Linearization(GENLIN)。 其中: IN0 = 0.0 IN1 = 30.0 Beginning of 1st segment IN2 = 55.0 IN3 = 85.0 End of 1st segment OUT0 = 0.0 OUT1 = 20.0 End of 2nd segment OUT2 = 45.0 OUT3 = 100.0 End of 3rd segment Solution A (P1 = IN2): PVCALC = OUT2 = 45.0 Solution B (P1 > IN1): 說明: Each time this algorithm is processed the input value P1 is compared with each segment,starting with the first and continuing until a segment is found that intersects with the input.When that segment is found, PVCALC is calculated as follows: If the P1 value is exactly equal to the input value at the beginning of any segment (P1 =IN i , for i in a range from 0 to the value in SEGTOT), 其中變數: PVCALC = The output of this algorithm. It is selected as the PV for this data point when the PV source is AUTOmatic. P1 = The input value. IN(i) = Input value at the beginning of the intersecting segment. IN (i+1) = Input value at the end of the intersecting segment. OUT (i) = Output value at the beginning of the intersecting segment. OUT (i+1) = Output value at the end of the intersecting segment. segtot = A subscript indicating the user-entered value in SEGTOT. 1、喉部差壓的折線函數 不同的靜葉角度對應的喘振點是不同的,而靜葉角度和喉部差壓有關。因此,根據補償后的喉部差壓作為坐標的橫坐標,計算出對應的出口壓力作為縱坐標,縱坐標即為PID控制的設定值SP。為安全起見,通常將坐標點向下偏移7%的裕度來確定一點,將若干點相連,就形成了防喘振線。在新控制方案中,防喘振線仍採用原11點10段的折線演算法,確定了近似於理論防喘振線。選用GENLIN折線函數,輸入坐標值即可。具體坐標值見表2。 2、防喘振線的下移 當偏差e大於7%(即42)並且逆流報警存在,則防喘振線下移1%(即7)。為了保證風機的功效,最多下移5次,還設置了手動複位功能,即NN(3)=0。當防喘振線下移時,此時的設定值SP為折線算出的SP'減去移動次數N乘以下移量1%(即7)。即: SP= SP'-7*N 詳細程序如下: SEQUENCE XY(HPM;POINT XY1840) EXTERNAL PI1841,PDZ1840 PHASE AA STEP BB SET NN(2)=PDZ1840.PV Q: SET NN(1)=PI1841.PV-NN(2) IF NN(1)>=42 AND NN(3)<5 THEN(SET NN(2)=NN(2)-7; & SET NN(3)=NN(3)+1;GOTO Q) IF NN(3)>=5 THEN SET NN(3)=5 IF NN(1)>=42 AND NN(3)<=5 THEN(SET NN(2)=PDZ1840.PV-NN(3)*7 GOTO STEP BB END XY 3、比例增益K自整定運算 自整定控制是調節器的參數需要根據被控對象的特性調整。原控制方案中採用折線運算,得出一條反應曲線的方法,再作以計算,得出比例增益K,送給PID調節器。根據這個要求,在TPS系統中可仍選用GENLIN折線運算塊即可實現。其中公式Regulatory PV中的Calculator模塊即可。具體坐標值見表2。 當偏差e大於0時(即喘振條件具備)發生喘振,K值自動置為初始值90,然後K通過和折線運算后的K'計算得出。 計算公式: K=(90×25.0)÷(K'+25.0) 筆者研究發現可採用兩種方式:一是採用CL語言可實現;二是運用Logic塊實現。但經分析后決定採用Logic塊方案,因為邏輯塊在系統中運行比CL語言佔用空間和PU都少,安全可靠,負載小。邏輯功能框圖如圖7所示。 4、放空閥的快開慢關 放空閥的快開慢關的特性對壓縮機而言尤為重要,是工藝及設備的特性所決定的。原方案在Tricon系統中實現很容易,它根據PID的輸出趨勢作成正常打開,緩慢關閉,而關閉是以0.1%遞加而得的。即當PID的輸出是開(減小)的趨勢時閥正常打開;反之,即當PID的輸出是關(增大)的趨勢時閥的輸出是以0.1%遞加關閉。 但在TPS系統中,由於受各功能點的參數屬性的限制,實現PID的輸出快開慢關相當困難,原因是: (1)、在同一UCN網中PID的輸出連接只有以下幾種情況: A、 AO點(半點)的 .OP參數(單迴路) B、 RC點的 . X1(X2、X3、X4)參數(連手操器或選擇開關) C、 RC點的 .SP參數(串級迴路) D、 DO點的 .SO參數(脈寬調製) E、 RC點的 .Ratio參數(比值控制) F、 無輸出 (2)、在TPS系統中PID的輸出不能與下列點參數連接: A、 Logic.NN(i) B、 PM.NN(i) C、 RV點參數 D、 Array.NN(i) 第(1)種情況滿足不了輸出快開慢關的要求,因為這幾個連接點參數都達不到要求,即不能將PID輸出作成動態的加減變速運動。而第(2)種情況可以滿足控制要求,但卻無法連接。於是問題的關鍵便浮出水面,即如何找到一個能將PID的輸出與AO點的.OP參數相連,實現快開慢關的功能。筆者經過反覆實驗,最終得出結論:只有通過CL語言才能實現這種參數的連接,但只是兩個PID模塊之間的參數連接,否則將無法實現。這就要求: A:主PID的輸出連接置空(無連接) B:副PID的輸入用Pull關係連入主PID的輸出,但不參與控制,只用於顯示。副PID的輸出完全由CL語言控制,其始終處於P-MAN 控制方式。 C:副PID的輸出連接AO點的.OP參數。 D:CL語言要根據主PID的輸出變化趨勢來控制副PID的輸出,實現快開慢關功能。 以上四點若能實現,則此方案完全可行。但在實際測試中發現D項中的如何判斷主PID的輸出變化趨勢是關鍵、更是難點,其於三項很容易實現。為此,筆者通過AI點的上一個周期採樣值LastPV可推斷PID的輸出很可能也有此參數。在查找了所有資料后筆者發現只有三個參數可以試運。 OPCMD=0 IDLE(Output is not being affected by Output Command) OPCMD=1 Lower(Output is being lowered) OPCMD=2 Raise(Output is being raised) 但在實際中發現三個參數均不行,還是達不到控制要求。 在經過反覆實驗后,最終不得不採用了下述方法,即在CL語言中每隔1秒鐘對主PID(ASC1840)的輸出作一次採樣。根據二次採樣的差值來判斷主PID的輸出是增大還是減小,來控制副PID(SENT1840)的輸出,進而得到完美解決。在整個控制過程中,副PID只是起到信號傳遞作用。完整的程序如下: SEQUENCE PID(HPM;POINT PM1840) EXTERNAL ASC1840,SENT1840 PHASE AA STEP BB SET SENT1840.MODATTR=PROGRAM SET SENT1840.MODE=MAN SET SENT1840.OP=ASC1840.OP SET NN(1)=ASC1840.OP WAIT 1 SECS SET NN(2)=ASC1840.OP Q: IF NN(2)>NN(1) THEN SET SENT1840.OP=SENT1840.OP+1 IF SENT1840.OP<ASC1840.OP THEN (SET SENT1840.OP=SENT1840.OP+1;GOTO Q) IF NN(2)<NN(1) THEN SET SENT1840.OP=SENT1840.OP-5 IF SENT1840.OP> ASC1840.OP THEN(SET SENT1840.OP=SENT1840.OP-5;GOTO Q) IF SENT1840.OP=ASC1840.OP THEN (SET SENT1840.OP=SENT1840.OP; GOTO Q) GOTO STEP BB END PID 程序中可以看出,關閉時是以1%的遞加式,打開時是以5%的遞減式。 為安全起見,輔PID后連接了兩個手操器,手操器再和AO點相連。分程式控制制在AO點中實現,信號分割點是44.9%。。 5、聯鎖停機時的喘振處理 當聯鎖停機時,二放空閥自動全開,程序如下: SEQUENCE ESD(HPM;POINT PMESD) EXTERNAL ESD,ASC1840 PHASE AA STEP BB IF ESD.PVFL=OFF THEN (SET ASC1840.MODATTR=OPERATOR;GOTO Q) SET ASC1840.MODATTR=PROGRAM SET ASC1840.MODE=MAN SET ASC1840.OP=0 Q:GOTO STEP BB END ESD 防喘振曲線圖動態監控 在Display Builder繪圖軟體中,提供了基於Microsoft VB功能強大的Script語言,用於完成GUS流程圖對過程變化的實時顯示及過程操作。常規的動態顯示很容易變化,但對某個對象而言,根據事件的動態變化而變化,則很難實現。 防喘振曲線中最關鍵、最難的技術是工作點和設定點的實時動態變化。這種變化是上下左右全方位的變化,而不是單方向的變化。 一、防喘振曲線繪製 筆者曾採用“抽點隱現法”實現,但效果不是很好,且很麻煩。在通篇翻閱了TPS的系統資料和做了大量實驗后,最終採用了函數TRANSX和TRANSY得以實現。分別為橫坐標和縱坐標,坐標值為像素值。防喘振曲線圖如圖8和圖9所示。同時自製了控制面板,以便於操作。 其中: l 藍色●代表工作點 l 綠色+代表設定點 l 紅線代表喘振線 l 黃線代表防喘振線 l 紅線左側代表喘振區 l 黃線右側代表防喘振區 l 紅黃兩線之間為安全裕度 l Reset為防喘振偏差複位鍵 l MODE為調節器控制方式選擇:MAN AUTO CAS 點擊信號可進入該點的細目(Native Window)畫面。 設定點的Script語言: Sub OnDataChange() ME.TRANSX=LCN.PDC1840.PV*320/25 ME.TRANSY=-LCN.ASC1840.SP*320/300 End Sub 工作點的Script語言: Sub OnDataChange() ME.TRANSX=LCN.PDC1840.PV*320/25 ME.TRANSY=-LCN.PI1841.PV*320/300 End Sub 防喘振線下移次數: LCN.XY1840.NN(3) 下移複位: Sub OnLButtonClick() LCN.XY1840.NN(3)=0 End Sub 喘振偏差: LCN.PI1841.pv-LCN.XY1840.NN(2) 二、模擬實驗 在線模擬現場實際情況,筆者本著科學負責的態度對所做的方案進行了嚴細認真的測試,對第一部分介紹的防喘振的十大功能逐個核實,結果全部實現,非常成功。 圖8和圖9對比可發現,曲線圖直觀的反映出喘振前後各個參數的變化情況。尤其是設定點和工作點的變化特點。在正常狀況下,設定點應始終延防喘振線波動,工作點應始終在設定點的下方。但在喘振時,圖9的防喘振線已經下移了5次(防喘振偏差已超過42),設定點“+”已遠離防喘振線一段距離,工作點“●”到達了喘振區。防喘振的輸出最小(放空閥全開)。 操作注意事項: (1)ASCC1840正常時處於CAS方式,因為SP值遠程控制。 (2)HIC1840AB正常時處於CAS方式,處於MAN時可以手動開閥。 (3)聯鎖停機后,ASC1840的控制方式自動置為P-MAN程序控制。停機信號解除后,由程序控制自動轉化操作員控制(置成MAN),再次啟機時需操作員將ASC1840投為CAS方式。 由於TPS系統可靠性高,易操作性強,組態靈活,功能強大而豐富,因此便於組態各種複雜控制。本論文所闡述的壓縮機防喘振功能在DCS上的實現,是化工自動化領域程序移植的突破性嘗試,在科技功關方面邁出了重要一步!