shi7025159
級別: 略有小成
|
管路A和管路B要同時從0升壓到10Bar,并且在升壓過程中管路A和管路B的壓差不能超過0.1Bar。升壓過程是階梯式升壓,每隔10秒左右上升一個階梯0.2Bar,在升壓過程比如發現A管道壓力比B管道的壓差超過0.1Bar了就要暫停A管道升壓,把B管道壓力先拉上來。實現這個過程有沒有好的算法思路嗎? |
---|---|
|
夢雨天涯
微信hui530527 &
級別: 網絡英雄
|
那你就需要模擬量輸入和輸出了,先要測出模擬量輸入值,然后根據0.2算出對應模擬輸出需要增加多少,然后比較模擬量輸入值,不能差大于0.1的絕對值,誰大就要等 |
|
---|---|---|
|
gxtmdb82164
級別: 論壇先鋒
|
用增量式PID,即只控制輸出的變化量,當達到條件或者不滿足啟動條件的時候輸出增量為0,增量命令同時給到A和B,不用管A和B當前的狀態,往目標值奔就行了 然后兩個管道的壓力取最接近目標值的壓力作為主命令變量(ABS(誤差)),另外一個跟隨,當跟隨誤差過大時直接切掉上面PID的輸出,即用兩管的壓力差作為PID運行的條件,當切掉輸出后,因為是增量式的,增量命令為0但是目標值還在,會等到A和B都跟上來了,且滿足條件的情況下,繼續運行。 如果是氣體的壓力控制,上面這種做法有個好處就是可以忍受超調,因為大概率在接近目標值附近的時候A和B會來回震蕩,而且這個過程是非線性的,不容易找到規律,但是因為不關注具體哪個超調了,只有一套規則,會更容易調試到穩定的狀態。 |
---|---|
|
shi7025159
級別: 略有小成
|
嗯,好的,我試試這種方法,謝謝 |
---|---|
|