Application of Dynamic Matrix Algorithm in Level Control of Water Tank
葉 昊 侯 艷 馬 光
(北華航天工業(yè)學(xué)院電子工程系,河北 廊坊 065000)
動態(tài)矩陣算法在水箱液位控制中的應(yīng)用
Application of Dynamic Matrix Algorithm in Level Control of Water Tank
葉昊侯艷馬光
(北華航天工業(yè)學(xué)院電子工程系,河北 廊坊065000)
摘要:針對先進控制技術(shù)在下位控制系統(tǒng)中的應(yīng)用問題,采用水箱模擬工業(yè)控制中常見的一階被控對象。通過S7-300控制器,采用SCL語言編寫矩陣運算功能塊,實現(xiàn)了動態(tài)矩陣控制算法。水箱液位定值試驗表明,在正常及擾動狀態(tài)下,動態(tài)矩陣控制算法都取得了良好的控制效果。對于動態(tài)品質(zhì)要求較高的控制系統(tǒng),動態(tài)矩陣控制的實現(xiàn)效果明顯優(yōu)于傳統(tǒng)PID控制。
關(guān)鍵詞:下位機結(jié)構(gòu)化控制語言慣性環(huán)節(jié)水箱液位控制動態(tài)矩陣控制(DMC)
Abstract:Be aimed at the issue of applying advanced control technology in subordinate control systems, the water tank is adopted to emulate the commonly seen 1st order controlled object in industrial control. Through S7-300 controller, the matrix operation functional block is programmed by using SCL language to implement dynamic matrix control algorithm. The test of water tank level indicates that in normal and disturbed condition, excellent control effects are obtained. For control systems requesting high dynamic quality, the effect of dynamic matrix control is obviously better than traditional PID control.
Keywords:Hypogynous machineStructured control languageInertial linkLevel controlDynamic matrix control(DMC)
0引言
系統(tǒng)成本、通信的可靠性及控制精度一直是衡量一個控制系統(tǒng)優(yōu)劣的重要指標(biāo)。數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)[1](supervisory control and data acquisition,SCADA)通常采用上位、下位的監(jiān)控模式,通過各種總線進行通信。總線系統(tǒng)的建設(shè)在硬件方面、安全性方面均需增加成本,同時,通信系統(tǒng)的實時性也面臨考驗。
預(yù)測控制基于模型預(yù)測的啟發(fā)式控制算法,采用輸入/輸出的非參數(shù)階躍響應(yīng)或脈沖響應(yīng)模型作為預(yù)測模型。該模型通過測試比較容易得到,并且算法本身對模型精度的要求并不高。但由于算法實現(xiàn)時涉及大量的數(shù)學(xué)運算,因此預(yù)測控制通常運行于上位監(jiān)控系統(tǒng)中。動態(tài)矩陣控制(dynamic matrix control,DMC)是預(yù)測控制的一種。對于可編程控制器,可否有效完成這些矩陣運算,可運算矩陣的階數(shù)是多少,控制算法的實現(xiàn)效果如何,這些都是本文要探討的問題。
1試驗硬件的組成
試驗系統(tǒng)現(xiàn)場設(shè)備中,采用水作為試驗介質(zhì),整個管路由上海凱士比水泵供水,通過西門子MM440變頻器實現(xiàn)對水泵的變頻控制。試驗管道上安裝有大禹閥門,通過SIPART PS2智能電氣閥門定位器控制閥門開度的大小,從而決定水箱液位的高低;水箱液位高度采用SITRANS P系列壓力變送器(帶有PA功能)測量,并將測得的壓力數(shù)據(jù)轉(zhuǎn)換成液位值。
控制柜中,采用S7-300控制器作為下位機,連接有DP/PA耦合器,實現(xiàn)與現(xiàn)場PA儀表的通信。控制器與上位機的通信采用CP343-1IT以太網(wǎng)模塊,實現(xiàn)數(shù)據(jù)在上位系統(tǒng)中的實時顯示。上位機中安裝有WinCC監(jiān)控軟件,并制作相應(yīng)的監(jiān)控畫面。
2控制方案的實現(xiàn)
控制方案實現(xiàn)時,可采用固定閥門開度,通過變頻調(diào)速控制水泵轉(zhuǎn)速來決定整個系統(tǒng)的供水量,進而決定水箱液位的高度;也可采用恒壓供水,通過改變管道閥門開度的方式?jīng)Q定液位的高度。本設(shè)計中采用了后一種方案。
3動態(tài)矩陣算法原理及模型測試
動態(tài)矩陣控制算法[2]原理部分參見參考文獻[2],在此不再重復(fù)敘述。
模型測試部分采用開環(huán)階躍響應(yīng)曲線法[3-4]。測試時,將系統(tǒng)置于手動狀態(tài),將閥門開度從20%變化到30%,得到實測數(shù)據(jù),如表1所示,則單位階躍響應(yīng)數(shù)據(jù)為其實測數(shù)據(jù)的1/10。

表1 開環(huán)響應(yīng)實測數(shù)據(jù)值
在Matlab下采用非線性最小二乘擬合方式,得到傳遞函數(shù)為:

(1)
求得合誤差為0.134 5。
將式(1)在時域中展開,可計算得到單位階躍函數(shù)下的響應(yīng)數(shù)據(jù),如表2所示。

表2 單位階躍響應(yīng)數(shù)據(jù)
表2中僅列出了前27 s的計算數(shù)據(jù),后段階躍響應(yīng)的數(shù)據(jù)可按照相同方法計算得到。
4算法實現(xiàn)部分
矩陣運算部分采用SCL語言,所以需在Step7環(huán)境下安裝S7_SCL軟件包。
矩陣數(shù)據(jù)類型定義如下。
TYPE MATRIX
STRUCT
hang: INT := 0;
lie: INT := 0;
elemente: ARRAY[1..20,1..20] OF REAL;
END_STRUCT
END_TYPE
實現(xiàn)時,需在Sources文件夾下建立SCL Source,進行算法設(shè)計,如加法運算。
(1) FC功能的建立
建立FC功能的目的是實現(xiàn)矩陣的加法運算功能。
FUNCTION Add : VOID
VAR_INPUT
MxA: MATRIX;
MxB: MATRIX;
END_VAR
VAR_OUTPUT
MxC: MATRIX;
END_VAR
VAR_TEMP
line, list: INT;
END_VAR
BEGIN
IF (MxA.hang= MxB.hang) AND (MxA.lie =MxB.lie) THEN MxC.hang:= MxA.hang; MxC. lie:= MxA. lie;
FOR line:=1 TO MxA.hang DO
FOR list:= 1 TO MxA.lie DO
MxC.elemente[line,list]:= MxA.elemente[line,list]+MxB.elemente[line,list];
END_FOR;
END_FOR;
ELSE
MxC.hang:=0;
MxC.lie:= 0;
END_IF;
END_FUNCTION
在Symbols中,將用SCL編寫的函數(shù)名稱與FB或FC聯(lián)系起來,其中Symbol為編寫的SCL函數(shù)名稱,如Add;Address為FB/FC名稱,如FC8。在SCL編寫環(huán)境下進行編譯,這樣在Blocks下即生成了相對應(yīng)的FB/FC功能塊。每次修改Sources文件夾下的SCL Source源代碼后,需重新進行編譯。本設(shè)計中將上述SCL代碼生成了一個FC。
(2) 加法運算功能塊的實現(xiàn)
定義一個FB功能塊,通過在OB組織塊中的調(diào)用,以此實現(xiàn)具體的數(shù)學(xué)運算功能。
FUNCTION_BLOCK MxAdd
VAR
n:int;
m:int;
END_VAR
VAR
Am, Bm, Cm : MATRIX;
END_VAR
Am.hang := n;
Am.lie:= m;
Bm.hang:= n;
Bm.lie:= m;
Add( MxA:= Am, MxB:= Bm, MxC:= Cm);
END_FUNCTION_BLOCK
DATA_BLOCK DIMxAdd MxAdd
BEGIN
END_DATA_BLOCK
編譯生成一個FB功能塊及對應(yīng)的DB背景塊。其中FB及其對應(yīng)的DB均需在Symbols中進行連接,如MxAdd功能塊的Address為FB8,DIMxAdd背景數(shù)據(jù)塊的Address為DB8。
進行數(shù)據(jù)運算時,可在DB塊中直接修改DB8.DBB0及DB8.DBB2中的數(shù)據(jù),以此來定義矩陣的維數(shù)。通過使用SFC20“BLKMOV”,將擬運算的數(shù)據(jù)寫入DB8的Am元素和Bm元素。
考慮到DMC運算中的階躍響應(yīng)系數(shù)ai需包括階躍響應(yīng)曲線的主要動態(tài)部分[5-7],如果采樣周期過小,則向量ai的長度較長,這會造成矩陣A階數(shù)較大。對于S7-300這樣的控制單元,可能無法完成矩陣的運算,所以在此取采樣時間為5 s。
A為階躍響應(yīng)系數(shù)ai組成的P×M矩陣。P大小取決于ai的長度,實際取值時應(yīng)小于10,否則矩陣過大,控制器無法完成運算。
當(dāng)P=3時,ai=[0.054 76,0.098 11,0.132 42];P=7時,ai=[0.054 76,0.098 11,0.132 42,0.159 57,0.181 07,0.198 08,0.211 55];
誤差權(quán)矩陣Q=diag(1,1,1,…,1)P×P;
控制時域M=2或3;
控制權(quán)矩陣R為一個M×M的方陣;
校正參數(shù)hi為全1的N維向量。
在計算dT時,由于涉及逆運算的問題,會消耗大量的PLC系統(tǒng)資源,在實際PLC控制器中無法完成,可在S7-300編程環(huán)境下自帶的仿真軟件S7-PLCSI或Matlab軟件下進行離線計算。
dT矩陣與R值有很大的關(guān)系。當(dāng)其他參數(shù)均設(shè)計完成后,R值成為控制算法唯一的對外接口。修改R值可以限制控制器的輸出量,防止控制器的運算結(jié)果超出執(zhí)行機構(gòu)可執(zhí)行的有效數(shù)據(jù)范圍。
5試驗效果分析
試驗過程中[8-10],通過改變孔板開度的方法來模擬用水量的擾動(用水量增加或減少)。
(1) 運算矩陣為3階,P=3,M=2
取R=0.01,計算得到dT=[2.168 462 2.124 94 2.090 193]。考慮到試驗開始時,由于液位設(shè)定值與液位當(dāng)前值之間的偏差過大,通過一定算法得到的輸出數(shù)據(jù)可能超出執(zhí)行機構(gòu)的數(shù)據(jù)執(zhí)行范圍,從而使DMC算法的模式失配,所以在控制初始段仍采用PID控制規(guī)律,在兩個控制周期后切換到DMC控制算法模式。水箱液位實際監(jiān)控曲線,如圖1所示。

圖1 水箱液位跟蹤變化曲線1
(2) 運算矩陣為7階,P=7,M=3
取R=0.03,計算得到dT=[0.933 057 61.057 863
0.776 636 60.553 902 80.377 8750.238 348 60.128 032],試驗過程同(1)。水箱液位實際監(jiān)控曲線2如圖2所示。

圖2 水箱液位跟蹤變化曲線2
分析上述兩個試驗結(jié)果可以看出,對于不同階數(shù)的矩陣,需修改R的取值,并重新計算dT矩陣。通過大量的試驗可以看出,當(dāng)擾動出現(xiàn)時,液位跟蹤設(shè)定值的程度取決于擾動量的大小。總體上,當(dāng)用水量增加時,液位振蕩的中心線幅值低于設(shè)定值;當(dāng)用水量減少時,液位振蕩的中心線幅值高于設(shè)定值。在擾動消失后,被控量僅需要很短的周期即可跟蹤設(shè)定值,并且振蕩的幅度較小。
6結(jié)束語
本文將DMC算法應(yīng)用于下位系統(tǒng)中,試驗證明了算法的有效性。所采用的被控對象符合一般工業(yè)控制對象的特性。從試驗?zāi)P蛿?shù)據(jù)看,DMC算法獲取數(shù)學(xué)模型的方式較為簡便,且對模型的精度要求不高。系統(tǒng)的動態(tài)控制效果優(yōu)于傳統(tǒng)的PID控制。
參考文獻
[1] 徐學(xué)紅,馮冬青.電站鍋爐燃燒系統(tǒng)先進控制策略研究[J].自動化儀表,2014,35(2):16-19.
[2] 錢積新,趙均,徐祖華.預(yù)測控制[M].北京:化學(xué)工業(yè)出版社,2007:49-58.
[3] 李俊紅,楊馬英,穆秀春.基于PLC的大時滯溫度對象的動態(tài)矩陣控制[J].浙江工業(yè)大學(xué)學(xué)報,2005,33(1):56-59.
[4] 張偉偉,余岳峰,羅永浩,等.基于階躍響應(yīng)曲線擬合的鏈條鍋爐快速建模方法[J].工業(yè)鍋爐,2007(2):1-4.
[5] 楊俊,馬姝姝.基于PLC的動態(tài)矩陣控制算法實現(xiàn)[J].工業(yè)儀表與自動化裝置,2008(4):67-70.
[6] 郭偉,溫敬紅,周旺平.基于時域的分數(shù)階PID動態(tài)矩陣控制算法改進[J].儀器儀表學(xué)報,2010,31(5):968-973.
[7] 鄒濤,劉紅波,李少遠.鍋爐汽包水位非自衡系統(tǒng)的預(yù)測控制[J].控制理論與應(yīng)用,2004,21(3):386-390.
[8] 張喜萍,譚一川,程玉龍.煤礦排水自動控制系統(tǒng)的設(shè)計與研究[J].自動化儀表,2013,34(6):45-47.
[9] 廖常初.中型PLC應(yīng)用教程[M].北京:機械工業(yè)出版社,2006:94-105,172-205.
[10]姜建芳.西門子S7-300/400 PLC工程應(yīng)用技術(shù)[M].北京:機械工業(yè)出版社,2012:735-790.------------------------------------------------------------------------------------------------
中圖分類號:TP273
文獻標(biāo)志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201503009
河北省科技廳科技支撐計劃基金資助項目(編號:12211602)。
修改稿收到日期:2014-09-10。
第一作者葉昊(1972-),男,2009年畢業(yè)于河北工業(yè)大學(xué)電子與通信工程專業(yè),獲碩士學(xué)位,副教授;主要從事過程控制及智能信息處理方面的研究。