Application of Dynamic Matrix Algorithm in Level Control of Water Tank
葉 昊 侯 艷 馬 光
(北華航天工業學院電子工程系,河北 廊坊 065000)
動態矩陣算法在水箱液位控制中的應用
Application of Dynamic Matrix Algorithm in Level Control of Water Tank
葉昊侯艷馬光
(北華航天工業學院電子工程系,河北 廊坊065000)
摘要:針對先進控制技術在下位控制系統中的應用問題,采用水箱模擬工業控制中常見的一階被控對象。通過S7-300控制器,采用SCL語言編寫矩陣運算功能塊,實現了動態矩陣控制算法。水箱液位定值試驗表明,在正常及擾動狀態下,動態矩陣控制算法都取得了良好的控制效果。對于動態品質要求較高的控制系統,動態矩陣控制的實現效果明顯優于傳統PID控制。
關鍵詞:下位機結構化控制語言慣性環節水箱液位控制動態矩陣控制(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引言
系統成本、通信的可靠性及控制精度一直是衡量一個控制系統優劣的重要指標。數據采集與監視控制系統[1](supervisory control and data acquisition,SCADA)通常采用上位、下位的監控模式,通過各種總線進行通信。總線系統的建設在硬件方面、安全性方面均需增加成本,同時,通信系統的實時性也面臨考驗。
預測控制基于模型預測的啟發式控制算法,采用輸入/輸出的非參數階躍響應或脈沖響應模型作為預測模型。該模型通過測試比較容易得到,并且算法本身對模型精度的要求并不高。但由于算法實現時涉及大量的數學運算,因此預測控制通常運行于上位監控系統中。動態矩陣控制(dynamic matrix control,DMC)是預測控制的一種。對于可編程控制器,可否有效完成這些矩陣運算,可運算矩陣的階數是多少,控制算法的實現效果如何,這些都是本文要探討的問題。
1試驗硬件的組成
試驗系統現場設備中,采用水作為試驗介質,整個管路由上海凱士比水泵供水,通過西門子MM440變頻器實現對水泵的變頻控制。試驗管道上安裝有大禹閥門,通過SIPART PS2智能電氣閥門定位器控制閥門開度的大小,從而決定水箱液位的高低;水箱液位高度采用SITRANS P系列壓力變送器(帶有PA功能)測量,并將測得的壓力數據轉換成液位值。
控制柜中,采用S7-300控制器作為下位機,連接有DP/PA耦合器,實現與現場PA儀表的通信。控制器與上位機的通信采用CP343-1IT以太網模塊,實現數據在上位系統中的實時顯示。上位機中安裝有WinCC監控軟件,并制作相應的監控畫面。
2控制方案的實現
控制方案實現時,可采用固定閥門開度,通過變頻調速控制水泵轉速來決定整個系統的供水量,進而決定水箱液位的高度;也可采用恒壓供水,通過改變管道閥門開度的方式決定液位的高度。本設計中采用了后一種方案。
3動態矩陣算法原理及模型測試
動態矩陣控制算法[2]原理部分參見參考文獻[2],在此不再重復敘述。
模型測試部分采用開環階躍響應曲線法[3-4]。測試時,將系統置于手動狀態,將閥門開度從20%變化到30%,得到實測數據,如表1所示,則單位階躍響應數據為其實測數據的1/10。

表1 開環響應實測數據值
在Matlab下采用非線性最小二乘擬合方式,得到傳遞函數為:

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

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

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