系列文章目錄
目錄
系列文章目錄
前言
一、被控對象模型
二、初始控制器設計
三、改進初始設計
五、查看軟約束
七、參考
前言
????????您可以檢查模型預測控制器設計是否存在潛在的穩定性和魯棒性問題。具體操作如下
- ????????在命令行中,使用審查功能。
- 在 MPC Designer 中,在 “調整 ”選項卡的 “分析 ”部分,單擊 “審查設計”。
在這兩種情況下,軟件都會生成一份報告,顯示以下測試結果:
- MPC 對象創建 - 測試控制器規格是否生成有效的 MPC 控制器。如果控制器無效,則不執行其他測試。
- QP 海森矩陣有效性 - 測試控制器的 MPC 二次規劃?(QP) 問題是否有唯一解。您必須選擇成本函數參數(懲罰權重)和水平線,使 QP 海森矩陣為正有限矩陣。
- 閉環內部穩定性 - 從無約束控制器的狀態空間實現中提取 A 矩陣,然后計算其特征值。如果每個特征值的絕對值小于或等于 1 且被控對象穩定,則反饋系統內部穩定。
- 閉環標稱穩定性 - 從閉環系統的離散時間狀態空間實現中提取 A 矩陣,即以反饋配置連接的被控對象和控制器。如果每個特征值的絕對值小于或等于 1,則標稱(無約束)系統是穩定的。
- 閉環穩態增益 - 在無約束條件下,測試控制器是否迫使所有受控輸出變量達到穩態目標。
- 硬 MV 約束 - 測試控制器是否對可控輸入變量及其變化率都有硬約束,如果有,這些約束在運行時是否會發生沖突。
- 其他硬約束 - 測試控制器是否有硬輸出約束或硬輸入/輸出混合約束,如果有,這些約束在運行時是否可能無法滿足。
- 軟約束 - 通過評估約束 ECR 參數,測試控制器是否適當平衡了硬約束和軟約束。
- MPC 數據的內存大小 - 評估運行時控制器所需的內存大小。
?????????您還可以使用審查功能對控制器設計進行編程評估。在這種情況下,通過/未通過的測試結果將以結構形式返回,測試報告將被抑制。
????????下面的示例展示了如何通過命令行審查控制器設計并解決潛在的設計問題。
一、被控對象模型
????????本例中的應用是燃料氣體混合過程。其目的是混合六種氣體以獲得一種燃料氣體,然后將其燃燒以提供工藝加熱。燃料氣必須滿足三項質量標準,才能可靠燃燒并達到預期的熱量輸出。此外,還必須控制燃料氣體頂管的壓力。因此,有四個受控輸出變量。六個可控輸入變量是給氣流速。
????????被控對象為
- 天然氣 (NG)
- 轉化氣 (RG)
- 氫氣 (H2)
- 氮氣 (N2)
- 尾氣 1 (T1)
- 尾氣 2 (T2)
????????被控對象的輸出為
- 高熱值 (HHV)
- 沃貝指數 (WI)
- 火焰速度指數 (FSI)
- 頂管壓力 (P)
????????有關燃料氣混合問題的更多信息,請參見 [1]。
????????使用以下線性被控對象模型作為控制器的預測模型。該狀態空間模型適用于典型的穩態運行點,使用時間單位小時。
A = diag([-28.6120 -28.6822 -28.5134 -0.0281 -23.2191 -23.4266 ...-22.9377 -0.0101 -26.4877 -26.7950 -27.2210 -0.0083 ...-23.0890 -23.0062 -22.9349 -0.0115 -25.8581 -25.6939 ...-27.0793 -0.0117 -22.8975 -22.8233 -21.1142 -0.0065]);
B = zeros(24,6);
B( 1: 4,1) = [4 4 8 32]';
B( 5: 8,2) = [2 2 4 32]';
B( 9:12,3) = [2 2 4 32]';
B(13:16,4) = [4 4 8 32]';
B(17:20,5) = [2 2 4 32]';
B(21:24,6) = [1 2 1 32]';
C = [diag([ 6.1510 7.6785 -5.9312 34.2689]) ...diag([-2.2158 -3.1204 2.6220 35.3561]) ...diag([-2.5223 1.1480 7.8136 35.0376]) ...diag([-3.3187 -7.6067 -6.2755 34.8720]) ...diag([-1.6583 -2.0249 2.5584 34.7881]) ...diag([-1.6807 -1.2217 1.0492 35.0297])];
D = zeros(4,6);
Plant = ss(A,B,C,D);
????????默認情況下,所有被控對象的輸入都是可控變量。
Plant.InputName = {'NG','RG','H2','N2','T1','T2'};
????????默認情況下,所有被控對象的輸出均為可觀測輸出。
Plant.OutputName = {'HHV','WI','FSI','P'};
????????為反映傳感器延遲,請在被控對象輸出中添加傳輸延遲。
Plant.OutputDelay = [0.00556 0.0167 0.00556 0];
二、初始控制器設計
????????根據設計要求構建初始模型預測控制器。首先,為清晰起見,禁用 MPC 命令窗口消息。
MPC_verbosity = mpcverbosity('off');
????????創建一個控制器:
- 采樣時間 Ts 為 20 秒(以小時為單位),與傳感器的采樣時間一致。
- 預測范圍 p,39 個控制間隔,約等于被控對象的沉降時間。
- 控制范圍 m,使用長度分別為 2、6、12 和 19 個控制間隔的四個阻塞動作。
Ts = 20/3600;
p = 39;
m = [2 6 12 19];
Obj = mpc(Plant,Ts,p,m);
????????指定控制器的輸出測量噪聲和非零標稱工作點。
Obj.Model.Noise = ss(0.001*eye(4));
Obj.Model.Nominal.Y = [16.5 25 43.8 2100];
Obj.Model.Nominal.U = [1.4170 0 2 0 0 26.5829];
????????為每個可控輸入變量(MV)指定下限和上限。由于所有可控輸入變量都是氣流的流速,因此其下限均為零。默認情況下,所有 MV 約束都是硬約束(MinECR = 0 和 MaxECR = 0)。
MVmin = zeros(1,6);
MVmax = [15 20 5 5 30 30];
for i = 1:6Obj.MV(i).Min = MVmin(i);Obj.MV(i).Max = MVmax(i);
end
????????為可控輸入變量的增量指定下限和上限。設置的界限要足夠大,以便在一個區間內實現全方位運動。默認情況下,所有 MV 速率約束都是硬約束(RateMinECR = 0 和 RateMaxECR = 0)。
for i = 1:6Obj.MV(i).RateMin = -MVmax(i);Obj.MV(i).RateMax = MVmax(i);
end
????????為每個被控對象的輸出變量 (OV) 指定下限和上限。默認情況下,所有 OV 約束都是軟約束(MinECR = 1 和 MaxECR = 1)。
OVmin = [16.5 25 39 2000];
OVmax = [18.0 27 46 2200];
for i = 1:4Obj.OV(i).Min = OVmin(i);Obj.OV(i).Max = OVmax(i);
end
????????為可控輸入變量指定調整權重。MV 權重是根據每種原料流的已知成本指定的。這樣做可以告訴 MPC 控制器如何移動六個可控輸入變量,以最小化混合燃料氣的成本。權重經過歸一化處理,最大權重約為 1.0。
Obj.Weights.MV = [54.9 20.5 0 5.73 0 0]/55;
????????為可控輸入變量增量指定調整權重。這些權重相對于最大 MV 權重較小,以便 MV 自由變化。
Obj.Weights.MVrate = 0.1*ones(1,6);
????????指定被控對象輸出變量的調整權重。OV 權重用于懲罰偏離指定設定點的情況,通常相對于其他權重較大。在本例中,首先考慮默認值,它等于最大 MV 權重。
Obj.Weights.OV = [1,1,1,1];
三、改進初始設計
審查初始控制器設計。審查功能會在 Web 瀏覽器窗口中生成并打開一份報告。
review(Obj)
????????審核摘要列出了三個警告和一個錯誤。按順序查看警告和錯誤。單擊 QP 海森矩陣有效性并向下滾動到警告,警告顯示被控對象信號大小差異很大。具體來說,壓力響應遠大于其他信號。
????????指定的 OV 邊界指示的 OV 跨度差別很大,壓力跨度比其他跨度大兩個數量級。好的做法是通過指定 MPC 比例因子來考慮信號幅度的預期差異。由于 MV 已根據相對成本加權,因此只需為 OV 指定比例系數。
????????計算 OV 跨度。
OVspan = OVmax - OVmin;
????????使用這些跨度作為比例因子。
for i = 1:4Obj.OV(i).ScaleFactor = OVspan(i);
end
????????要驗證輸出比例因子的設置是否修復了警告,請查看更新后的控制器設計。
review(Obj)
????????下一個警告表示控制器在穩態時未將 OV 推至目標值。要查看非零增益列表,請單擊閉環穩態增益。
????????列表中的第一個條目顯示,假定沒有任何約束,在 HHV 輸出中加入一個單位量級的持續擾動將導致 HHV 輸出偏離其穩態目標約 0.0860 個單位。第二項顯示,WI 的單位擾動將導致 HHV 的穩態偏差或偏移約為 -0.0345,依此類推。
????????由于有 6 個 MV,而只有 4 個 OV,因此自由度過大。因此,您可能希望控制器沒有穩態偏移。然而,為使被控對象的設備處于最經濟的運行狀態而指定的非零中壓權重卻導致了非零穩態偏移。
????????非零穩態偏移通常是不可取的,但在本應用中是可以接受的,因為:
- 主要目標是將混合成本降至最低。氣體質量(HHV 等)可以在指定的 OV 限制范圍內自由變化。
- 偏移增益幅度小,說明干擾影響小。
- OV 限制是軟約束。短期的小幅違規是可以接受的。
????????單擊 “硬 MV 約束 ”查看第二個警告。該警告表示硬約束存在潛在沖突。
????????如果外部事件導致 NG 遠遠低于其指定的最小值,對其增長率的約束可能會使 NG 無法在一個控制區間內恢復到界限內。換句話說,如果您同時指定了 MV.Min 和 MV.RateMax 值,如果最近的 MV 值小于(MV.Min - MV.RateMax),控制器將無法找到最佳解決方案。同樣,當您同時指定 MV.Max 和 MV.RateMin 時,也會出現潛在沖突。
????????在氣體混合應用中,不太可能出現 MV 約束沖突。不過,好的做法是通過軟化兩個約束中的一個來消除這種可能性。由于 MV 最小值和最大值是物理限制,而增量限制不是物理限制,因此應軟化增量限制。
for i = 1:6Obj.MV(i).RateMinECR = 0.1;Obj.MV(i).RateMaxECR = 0.1;
end
????????審查更新后的控制器設計。
review(Obj)
????????MV 約束沖突警告已修復。
????????要查看錯誤信息,請單擊軟約束。
????????WI 輸出的延遲使得在前三個控制區間內無法滿足對該變量的約束。WI 約束是軟約束,但在設計中加入無法實現的約束是很糟糕的做法。因此,應修改 WI 邊界規范,使其在第四個預測水平步之前不受約束。
Obj.OV(2).Min = [-Inf(1,3) OVmin(2)];
Obj.OV(2).Max = [ Inf(1,3) OVmax(2)];
????????如下一步所示,重新運行審核命令可驗證這一更改消除了錯誤信息。
四、評估零輸出權重的影響
????????鑒于設計要求允許 OV 在其限制范圍內自由變化,可考慮取消其懲罰權重。
Obj.Weights.OV = zeros(1,4);
????????審查這一設計變更的影響。
review(Obj)
????????有一個關于 QP 海森矩陣有效性的新警告。要查看警告詳情,請單擊 QP 海森矩陣有效性。
????????審查結果顯示所有四個輸出變量的權重均為零。由于零權重符合設計要求,且其他海森測試表明二次編程問題有唯一解,因此可以忽略此警告。要查看第二個新警告,請單擊閉環穩態增益。該警告顯示了將四個 OV 權重設為零的另一個結果。當 OV 不受權重影響時,控制器會忽略添加到 OV 的任何輸出擾動,并以不衰減的方式通過擾動。
????????既然是設計要求,只要控制器能將所有 OV 控制在指定范圍內,非零穩態偏移是可以接受的。因此,最好檢查一下當干擾存在時,軟 OV 約束是否容易被違反。
五、查看軟約束
????????要查看軟約束列表,請單擊軟約束。在本例中,軟約束是每個 OV 的上下限。
????????影響因子一欄顯示,使用默認的 MinECR 和 MaxECR 值,壓力 (P) 的優先級遠高于其他 OV。要使優先級更具可比性,可增加壓力約束 ECR 值,同時調整其他值。例如
Obj.OV(1).MinECR = 0.5;
Obj.OV(1).MaxECR = 0.5;
Obj.OV(3).MinECR = 3;
Obj.OV(3).MaxECR = 3;
Obj.OV(4).MinECR = 80;
Obj.OV(4).MaxECR = 80;
????????審查這一設計變更的影響。
review(Obj)
????????在靈敏度比一欄中,現在所有的靈敏度比都小于統一,這意味著軟約束受到的關注要小于 MPC 目標函數中的其他項,如 MV 與目標值的偏差。因此,很可能會出現違反輸出約束的情況。
????????要使輸出約束比其他 MPC 目標具有更高的優先級,可將 Weights.ECR 參數從默認值 1e5 增加到更高的值,從而硬化所有軟 OV 約束。
Obj.Weights.ECR = 1e8;
????????審查這一設計變更的影響。
review(Obj)
????????現在,控制器對違反輸出約束的敏感度比對目標跟蹤誤差的敏感度高出 100 倍。
六、查看數據內存大小
????????要查看存儲硬件上使用的 MPC 數據矩陣估計所需的內存大小,請單擊 MPC 數據的內存大小。
????????在本例中,如果控制器使用單精度運行,則需要 250 KB 內存來存儲矩陣。如果控制器內存大小超過了目標系統的可用內存,則應重新設計控制器以降低內存需求。或者,增加目標系統的可用內存。
????????恢復 MPC 冗余級別。
mpcverbosity(MPC_verbosity);
七、參考
[1] Muller C. J., I. K. Craig, and N. L. Ricker. "Modeling, validation, and control of an industrial fuel gas blending system."?Journal of Process Control. Vol. 21, Number 6, 2011, pp. 852-860.