Re: [學術] 問題 PID 各各參數代表什麼意思

看板Mechanical作者 (((((*)))))時間9年前 (2015/03/01 00:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
我把你的變數帶入下圖,並假設這個系統是要做速度控制。 http://sofun.tw-dvd.us/jpg/PID_PPT.jpg
所以你的系統,UpdatedPeriod不是大於MAXPERIOD,不然就是小於MINPERIOD,所以才會 有900或100的狀態出現。 這個原因很多,常見的情況,有以下兩種: 1.你的PID參數設定不合理,導致計算出來的UpdatedPeriod過大, 超過上下限制(MAXPERIOD,MINPERIOD)。可以試著重新調整PID參數,或是將積  分器在某個穩態時停止,以防止過積分的情況。 2.程式的MAXPERIOD及MINPERIOD限制的範圍太小,控制器的UpdatedPeriod被其限制住,  這個時候,可以先使用開迴路來測定系統Plant的極限狀態。  舉例來說,您開迴路丟測試訊號,PEPER最大到多少時,Plant的輸出Speed可以  到多少,此時可以決定您的MAXPERIOD~     反之,PEPER最小多少時,Plant的輸出Speed可以到多少,再決定您的MINPERIOD~  如果以上兩個方法都測試過,計算出來的UpdatedPeriod還是非常大,那麼有可能  是該系統的Actual_Value 與 Set_Value的誤差一直很大,系統無法追上,那麼  就要重新設計系統,或是檢查一下Actual_Value和Set_Value的物理量轉換是否有問題  最後,UpdatedPeriod超過後是否會重0開始,一般Overflow就會掛掉,不會從0開始。    你也可以寫個測試程式,如果UpdatedPeriod為0時,寫回一個BOOL就可以知道了. 以上淺見,希望對你有幫助。 ※ 引述《kingzero (一起迷路)》之銘言: : 謝謝你的資訊,用處很大. : 我的問題剛剛解掉了!! : 我補充一下實際上面可能會遇到的問題. : PID的控制會設定控制變數的上下限 : 例如: : if(UpdatedPeriod >= MAXPERIOD) : { : PTPER = MAXPERIOD; : } : else if(UpdatedPeriod <= MINPERIOD) : { : PTPER = MINPERIOD; : } : 但是下次取入的控制項目 UpdatedPeriod不是最後的 : 舉例來說 MAXPERIOD 是900 , MINPERIOD是 100 : UpdatedPeriod 這次是1000 : PTPER是900 : 但是下次PID的計算值 UpdatedPeriod 是1099 : PTPER還是900 : 這樣子看起來沒有問題. : 但是有沒有可能 UpdatedPeriod會超過可以使用用的範圍 : UpdatedPeriod 超過之後 UpdatedPeriod會變成從0開始計算 : 所以雖然實際的情況是 你應該把PTPER控制在 900 : 會後確會在某一個周期之後PTPER變成100 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.18.144 ※ 文章網址: https://www.ptt.cc/bbs/Mechanical/M.1425139585.A.2B3.html
文章代碼(AID): #1KyUU1Ap (Mechanical)
討論串 (同標題文章)
文章代碼(AID): #1KyUU1Ap (Mechanical)