• 沒有找到結果。

第四章 模型預測控制器

4.2 架構實現方法

4.2 架構實現方法

由於 MPC 為 model-based 控制器,所以在此我們使用 state-space model 去表 示一 single-input single-output 系統,如下式所示:

𝑥

𝑚

(𝑘 + 1) = 𝐴

𝑚

𝑥

𝑚

(𝑘) + 𝐵

𝑚

𝑢(𝑘) (4-1) 𝑦(𝑘) = 𝐶

𝑚

𝑥

𝑚

(𝑘) (4-2)

其中u 為輸入,y 為輸出,𝑥

𝑚

為 state variable (dimension : 𝑛

1

)。

對(4-1)式兩邊進行微分可得:

𝑥

𝑚

(𝑘 + 1) − 𝑥

𝑚

(𝑘) = 𝐴

𝑚

[𝑥

𝑚

(𝑘) − 𝑥

𝑚

(𝑘 − 1)] + 𝐵

𝑚

[𝑢(𝑘) − 𝑢(𝑘 − 1)]

(4-3) 在此定義∆𝑥

𝑚

(𝑘) = 𝑥

𝑚

(𝑘) − 𝑥

𝑚

(𝑘 − 1) ; ∆u(k) = 𝑢(𝑘) − 𝑢(𝑘 − 1)

上式(4-3)可以表示為:

∆𝑥

𝑚

(𝑘 + 1) = 𝐴

𝑚

∆𝑥

𝑚

(𝑘) + 𝐵

𝑚

∆𝑢(𝑘) (4-4) 此時 state-space model 的表示式之輸入為∆u(k)

由於 MPC 在決定新的 state 時必須將系統輸出納入考慮,所以定義一新的 state 變數 𝑥(𝑘) = [∆𝑥

𝑚

(𝑘)

𝑇

𝑦(𝑘)]

𝑇

,其中上標 T 代表矩陣的轉置(transpose)運算 符號。

接著將式子(4-2)兩邊做相同的微分運算:

y(k + 1) − y(k) = 𝐶

𝑚

(𝑥

𝑚

(𝑘 + 1) − 𝑥

𝑚

(𝑘)) = 𝐶

𝑚

∆𝑥

𝑚

(𝑘 + 1)

= 𝐶

𝑚

𝐴

𝑚

∆𝑥

𝑚

(𝑘) + 𝐶

𝑚

𝐵

𝑚

∆𝑢(𝑘) ( 4 - 5 ) 將(4-4)與(4-5)整理在一起,可以得到系統新的 state-space model 表示式:

[∆𝑥

𝑚

(𝑘 + 1)

𝑦(𝑘 + 1) ] = [ 𝐴

𝑚

𝑜

𝑚 𝑇

𝐶

𝑚

𝐴

𝑚

1] [∆𝑥

𝑚

(𝑘)

𝑦(𝑘) ] + [ 𝐵

𝑚

𝐶

𝑚

𝐵

𝑚

] ∆𝑢(𝑘) = 𝑨𝑥(𝑘) + 𝑩∆𝑢(𝑘)

43

y(k) = [𝑜

𝑚

1] [∆𝑥

𝑚

(𝑘) 𝑦(𝑘) ]

= 𝑪𝑥(𝑘) ( 4 - 6 ) 其中𝑜

𝑚

= [0 0 0 . . . 0⏞

𝑛

1

]

將系統的 state-space model 轉換為符合 MPC 需求的表示方法後,現在要做 的是預測出系統未來的輸出響應,要預測出未來的系統響應,首先必須先決定未 來的控制訊號,這些控制訊號即為可調整的變數。由於 MPC 在每個時間點都會 對未來控制訊號與系統響應進行估測,在離散系統中即為每個取樣時間發生的時 刻。在此定義目前取樣的時間點為𝑘

𝑖

, 𝑘

𝑖

> 0,用來進行最佳化運算的響應預測 窗口長度為𝑁

𝑝

,並假設在此刻系統的狀態變數𝑥(𝑘

𝑖

)是可以被量測到的。而我們 期望得到的最佳控制訊號串:

∆𝑢(𝑘

𝑖

), ∆𝑢(𝑘

𝑖

+ 1), … , ∆𝑢(𝑘

𝑖

+ 𝑁

𝑐

− 1) 𝑁

𝑐

為期望預測的控制訊號長度(control horizon)。

而上述提到之𝑁

𝑝

,為由目前狀態𝑥(𝑘

𝑖

)預測未來狀態的訊號長度(prediction horizon),如下式表示 :

𝑥(𝑘

𝑖

+ 1|𝑘

𝑖

), 𝑥(𝑘

𝑖

+ 2|𝑘

𝑖

), 𝑥(𝑘

𝑖

+ 3|𝑘

𝑖

), … , 𝑥(𝑘

𝑖

+ m|𝑘

𝑖

), … , 𝑥(𝑘

𝑖

+ 𝑁

𝑝

|𝑘

𝑖

) 一般而言,𝑁

𝑐

會選擇小於或等於𝑁

𝑝

從系統的 state-space model (A,B,C),可以將未來的狀態一一算出:

x(𝑘

𝑖

+ 1|𝑘

𝑖

) = 𝐴𝑥(𝑘

𝑖

) + 𝐵∆𝑢(𝑘

𝑖

) (4-7) x(𝑘

𝑖

+ 2|𝑘

𝑖

) = 𝐴𝑥(𝑘

𝑖

+ 1|𝑘

𝑖

) + 𝐵∆𝑢(𝑘

𝑖

+ 1)

= 𝐴

2

𝑥(𝑘

𝑖

) + 𝐴𝐵∆𝑢(𝑘

𝑖

) + 𝐵∆𝑢(𝑘

𝑖

+ 1) x(𝑘

𝑖

+ 3|𝑘

𝑖

) = 𝐴𝑥(𝑘

𝑖

+ 2|𝑘

𝑖

) + 𝐵∆𝑢(𝑘

𝑖

+ 2)

= 𝐴

3

𝑥(𝑘

𝑖

) + 𝐴

2

𝐵∆𝑢(𝑘

𝑖

) + 𝐴𝐵∆𝑢(𝑘

𝑖

+ 1) + 𝐵∆𝑢(𝑘

𝑖

+ 2)

44

x(𝑘

𝑖

+ 𝑁

𝑝

|𝑘

𝑖

) = 𝐴

𝑁

𝑝𝑥(𝑘

𝑖

) + 𝐴

𝑁

𝑝

−1

𝐵∆𝑢(𝑘

𝑖

) + 𝐴

𝑁

𝑝

−2

𝐵∆𝑢(𝑘

𝑖

+ 1) + ⋯ + 𝐴

𝑁

𝑝

−𝑁

𝑐𝐵∆𝑢(𝑘

𝑖

+ 𝑁

𝑐

− 1)

(4-8) 有了預測的 state 後,我們就可以得到預測的系統輸出響應:

y(𝑘

𝑖

+ 1|𝑘

𝑖

) = 𝐶𝐴𝑥(𝑘

𝑖

) + 𝐶𝐵∆𝑢(𝑘

𝑖

)

y(𝑘

𝑖

+ 2|𝑘

𝑖

) = 𝐶𝐴

2

𝑥(𝑘

𝑖

) + 𝐶𝐴𝐵∆𝑢(𝑘

𝑖

) + 𝐶𝐵∆𝑢(𝑘

𝑖

+ 1)

y(𝑘

𝑖

+ 3|𝑘

𝑖

) = 𝐶𝐴

3

𝑥(𝑘

𝑖

) + 𝐶𝐴

2

𝐵∆𝑢(𝑘

𝑖

) + 𝐶𝐴𝐵∆𝑢(𝑘

𝑖

+ 1) + 𝐶𝐵∆𝑢(𝑘

𝑖

+ 2)

y(𝑘

𝑖

+ 𝑁

𝑝

|𝑘

𝑖

) = C𝐴

𝑁

𝑝𝑥(𝑘

𝑖

) + 𝐶𝐴

𝑁

𝑝

−1

𝐵∆𝑢(𝑘

𝑖

) + 𝐶𝐴

𝑁

𝑝

−2

𝐵∆𝑢(𝑘

𝑖

+ 1) + ⋯ + C𝐴

𝑁

𝑝

−𝑁

𝑐𝐵∆𝑢(𝑘

𝑖

+ 𝑁

𝑐

− 1)

(4-9)

值得注意的是,式(4-9)中,預測訊號的輸入訊號皆為𝑥(𝑘

𝑖

)與∆𝑢(𝑘

𝑖

),所以在此 我們再定義Y 與∆U:

Y = [𝑦(𝑘

𝑖

+ 1|𝑘

𝑖

) 𝑦(𝑘

𝑖

+ 2|𝑘

𝑖

) 𝑦(𝑘

𝑖

+ 3|𝑘

𝑖

) ⋯ 𝑦(𝑘

𝑖

+ 𝑁

𝑝

|𝑘

𝑖

)]

𝑇

∆U = [∆𝑢(𝑘

𝑖

) ∆𝑢(𝑘

𝑖

+ 1) ∆𝑢(𝑘

𝑖

+ 2) ⋯ ∆𝑢(𝑘

𝑖

+ 𝑁

𝑐

− 1)]

𝑇

此時便可將(4-9)整理如下:

Y = 𝐅 𝑥(k

i

) + 𝚽 ΔU (4-10) 其中:

F = [

CA C𝐴

2

C𝐴

3

⋮ C𝐴

𝑁

𝑝]

Φ = [

CB 0 0 ⋯ 0 𝐶𝐴𝐵 𝐶𝐵 0 ⋯ 0 𝐶𝐴

2

𝐵 𝐶𝐴𝐵 𝐶𝐵 ⋯ 0

𝐶𝐴

𝑁

𝑝

−1

𝐵 𝐶𝐴

𝑁

𝑝

−2

𝐵 𝐶𝐴

𝑁

𝑝

−3

𝐵 ⋯ 𝐶𝐴

𝑁

𝑝

−𝑁

𝑐𝐵]

45

接下來的目標為如何決定最佳控制訊號的方法。考慮一給定輸入訊號,並且 在預測範圍中為保持不變的常數 r(𝑘

𝑖

),而此輸入訊號與系統預測的響應可構成 一差值函數(error function),藉由將此函式最小化(minimizing),可計算出控制訊 號列 ∆U,此時計算出的結果即為在此定義的最佳控制訊號列。

令 𝑅

𝑠 𝑇

為包含著輸入訊號資訊的資料向量 :

𝑅

𝑠 𝑇

= [1 1 ⋯ 1]⏞ 𝑟(𝑘

𝑖

)

𝑁

𝑝

定義系統之成本函數(cost function) J:

J = (𝑅

𝑠

− 𝑌)

𝑇

(𝑅

𝑠

− 𝑌) + ∆𝑈

𝑇

𝑅̅∆𝑈 (4-11) 其中𝑅̅ = 𝑟

𝑤

𝐼

𝑁

𝑐

×𝑁

𝑐(𝑟

𝑤

≥ 0)

顯而易見的,成本函數 J 的前半部(𝑅

𝑠

− 𝑌)

𝑇

(𝑅

𝑠

− 𝑌),為輸入訊號與輸出訊 號的差值;後半部∆𝑈

𝑇

𝑅̅∆𝑈,則反映了是否將∆U的大小納入考慮,藉由調整𝑟

𝑤

, 可改變∆U在成本函數中佔的比重。舉例來說,如果𝑟

𝑤

= 0,則我們要考慮的就是 如何算出控制訊號,讓系統輸出與輸入的差值在最短時間內降至最低;然而當 𝑟

𝑤

> 0時,代表著必須將控制訊號∆U的大小考慮進來,此時的狀況就變成不僅只 要使輸出與輸入響應差值降低,還必須考慮到∆U的變化,感覺就像是我們必須 謹慎地將許多因素考慮進來,以達到期望的目的。關於𝑟

𝑤

的影響在接下來的模擬 與實作中會再次驗證。

接著繼續介紹求出期望控制訊號列∆U之公式推導,將(4-10)代入(4-11)可得:

J = (𝑅

𝑠

− 𝐹𝑥(𝑘

𝑖

))

𝑇

(𝑅

𝑠

− 𝐹𝑥(𝑘

𝑖

)) − 2∆𝑈

𝑇

Φ

𝑇

(𝑅

𝑠

− 𝐹𝑥(𝑘

𝑖

)) + ∆𝑈

𝑇

𝑇

Φ + 𝑅̅)∆𝑈 (4-12) 由成本函數 J 對∆𝑈 做一階微分 :

𝜕𝐽

𝜕∆𝑈

= −2Φ

𝑇

(𝑅

𝑠

− 𝐹𝑥(𝑘

𝑖

)) + ∆𝑈

𝑇

𝑇

Φ + 𝑅̅)∆𝑈 (4-13) 由於我們期望此成本函數降至最低,所以令:

46

𝜕𝐽

𝜕∆𝑈= 0

由此條件與(4-13)式,最後我們可以得到最佳的控制訊號列∆𝑈為:

∆U = (Φ

𝑇

Φ + 𝑅̅)

−1

Φ

𝑇

(𝑅̅

𝑠

𝑟(𝑘

𝑖

) − 𝐹𝑥(𝑘

𝑖

)) (4-14)

其中𝑅̅

𝑠

= [1 1 1 ⋯ 1]⏞

𝑇

𝑁

𝑝

在離散系統中的每個取樣時間時,皆會算出一組∆U,其中包含著𝑁

𝑐

個控制 訊號的變化量(∆𝑢(𝑘

𝑖

) ∆𝑢(𝑘

𝑖

+ 1) ∆𝑢(𝑘

𝑖

+ 2) ⋯ ∆𝑢(𝑘

𝑖

+ 𝑁

𝑐

− 1)),但我們只將 第一個∆𝑢(𝑘

𝑖

)拿來使用,誠如上述計畫工作的案例所敘,每個時間點皆執行第一 個小時的工作後,檢視成果與重新訂定計畫,此方法稱為移動時域控制(receding horizon control)。而由(3-14)式可觀察到,(Φ

𝑇

Φ + 𝑅̅)

−1

Φ

𝑇

𝑅̅

𝑠

𝑟(𝑘

𝑖

) 項中,因為Φ為 只與系統 model 特性(C,A,B)有關之矩陣,所以如果輸入訊號為固定時,此項即 為非時變矩陣;−(Φ

𝑇

Φ + 𝑅̅)

−1

𝐹𝑥(𝑘

𝑖

) 項則因為 F 為只與系統 model (C,A)有關 之矩陣,所以−(Φ

𝑇

Φ + 𝑅̅)

−1

𝐹亦為非時變矩陣,非時變矩陣的好處在於我們可 以先將其結果求出,如此在實作時就不必在每個取樣時間都重新計算一次。

基於移動時域控制法則(RHC),我們只執行第一個控制訊號,所以我們將

∆U 的第一個元素取出 :

∆𝑢(𝑘

𝑖

) = [1 0 0 ⋯ 0]⏞

𝑁

𝑝

𝑇

Φ + 𝑅̅)

−1

Φ

𝑇

(𝑅̅

𝑠

𝑟(𝑘

𝑖

) − 𝐹𝑥(𝑘

𝑖

))

= 𝐾

𝑦

𝑟(𝑘

𝑖

) − 𝐾

𝑚𝑝𝑐

𝑥(𝑘

𝑖

) (4-15) 其中𝐾

𝑦

為(Φ

𝑇

Φ + 𝑅̅)

−1

Φ

𝑇

𝑅̅

𝑠

的第一個元素,𝐾

𝑚𝑝𝑐

為(Φ

𝑇

Φ + 𝑅̅)

−1

𝐹矩陣的第一列。

值得注意的是,式(3-15)其實為一閉迴路控制系統的標準表示式,新的控制訊號 由輸入訊號減去回授訊號得到,而回授訊號之增益為𝐾

𝑚𝑝𝑐

將(4-15)代回(4-7)中,可得:

𝑥(𝑘

𝑖

+ 1|𝑘

𝑖

) = 𝐴𝑥(𝑘

𝑖

) − 𝐵𝐾

𝑚𝑝𝑐

𝑥(𝑘

𝑖

) + 𝐵𝐾

𝑦

𝑟(𝑘

𝑖

)

= (𝐴 − 𝐵𝐾

𝑚𝑝𝑐

)𝑥(𝑘

𝑖

) + 𝐵𝐾

𝑦

𝑟(𝑘

𝑖

)

(4-16)

47

把這個結果演繹到一般的情況中,將𝑘

𝑖

換成 k 可得:

𝑥(𝑘 + 1) = (𝐴 − 𝐵𝐾

𝑚𝑝𝑐

)𝑥(k) + 𝐵𝐾

𝑦

𝑟(k) (4-17) 而由於矩陣 F 的最後一欄與𝑅̅

𝑠

相同,皆為[1 1 1 ⋯ 1]

𝑇

,因此𝐾

𝑦

與𝐾

𝑚𝑝𝑐

的最後 一個元素相同,藉此,我們可以將𝐾

𝑚𝑝𝑐

重新表示為:

𝐾

𝑚𝑝𝑐

= [𝐾

𝑥

𝐾

𝑦

] 𝐾

𝑥

為∆𝑥

𝑚

(k)之回授增益。

最後,由(4-17),閉迴路控制器架構如圖 4-2 所示:

圖 4-2 離散系統中之 MPC 控制架構

其中𝑞

−1

表示延遲一個取樣時間;

1−𝑞 1

−1表示離散系統中之積分控制項,相反的,

1 − 𝑞

−1

表示離散系統中之微分控制項。

實現的流程細節如圖 4-3 所示:

48

圖 4-3 MPC 控制訊號計算方法實現流程圖

① : 首先我們必須得到系統初始之控制訊號 u(k),與狀態量測值

② : 有了目前的狀態後,我們可以得到y(k),由(3-2)反推可得到𝑥

𝑚

(𝑘)

③ : 將𝑥

𝑚

(𝑘)與控制訊號u(k),由式(3-1)可算出新的系統狀態𝑥

𝑚

(𝑘 + 1)

④ : 由前一個 state 與新算出的𝑥

𝑚

(𝑘 + 1),可得∆𝑥

𝑚

(𝑘 + 1)與y(k + 1)

⑤ : 由新的系統狀態,可對新的控制訊號∆U進行一定長度(𝑁

𝑝

)的預估計算

⑥ : 但是我們只拿出第一個控制訊號變量∆u(k + 1|k)

⑦ : 計算出新的控制訊號後,重複此流程

相關文件