簡體   English   中英

Python GEKKO 用於 PID 調整

[英]Python GEKKO for PID Tuning

我正在學習 apmonitor.com 的(非常棒!過程動力學和控制課程,並且有一個關於使用 GEKKO 模擬(和優化)PID 控制參數的問題。

從示例14 開始。PID_Control_Tuning我想知道如何處理物理上受限的 output (OP) 范圍的進程。 (以 TCLab 加熱器為例,它限制為滿量程 output 的 0-100%。)

如果示例中的“step”變量更改為:

step[40:]  = 15.0 # Increase Step Size from 5.0 to 15.0

那么(無量綱的)output(OP)值在 time=40 是 150。

GEKKO Python PID 過程控制 Plot

如果我使用以下方法將 LOWER 和 UPPER 邊界添加到 OP 變量:

#OP = m.Var(value=0.0) # Original
OP = m.Var(value=0.0, lb=0.0, ub=100.0)

model 無法解決並導致Exception: @error: Solution Not Found

在 GEKKO 中模擬受硬限制(如 0%-100%)限制的過程的正確方法是什么?

與 MPC 不同,PID controller 不是基於優化的算法。 如果您模擬 PID controller,則 OP 不是可以受“lb”和“ub”限制的決策變量。
在模擬 PID controller 時,您可能還想使用 Gekko 模擬模式(imode=4 或 7)。

OP 值是 PID 計算的結果。 因此,您需要讓 PID 計算 OP 值,而不考慮物理限制。 然后,您添加附加條件來處理物理限制,如下所示。 您還需要添加防飽和(重置積分)邏輯。

if OP[i]>=100: # upper limit
    OP[i] = 100.0
    I[i] = I[i-1] # reset integral
if OP[i]<=0: # lower limit
    OP[i] = 0.0
    I[i] = I[i-1] # reset integral

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM