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

看板Mechanical (機械)作者 (一起迷路)時間11年前 (2015/01/27 11:52), 11年前編輯推噓0(005)
留言5則, 3人參與, 最新討論串3/4 (看更多)
謝謝你的資訊,用處很大. 我的問題剛剛解掉了!! 我補充一下實際上面可能會遇到的問題. 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 ※ 引述《rant (...)》之銘言: : ※ 引述《kingzero (一起迷路)》之銘言: : : 我是EE計算機 的 : : 以前沒有碰過PID控制器,看到相關的資料也覺得很簡單. : : 但是自己做的時候就覺得問題重重了.老是達不到想到要的要求. : : P.I.D各各參數所代表的意義是什麼? : : 我試過了傳統的硬調方式 把P由0慢慢加到系統有點不穩 : : 再慢慢把I往上加 : : 最後再加D : : 但是P.I.D各決定什麼? : : 版上有大大可以解說一下嗎? : 僅回答P、I、D 的意義,基礎名詞就不解釋了。 : P是等比例補償控制,誤差越大就補償愈多。舉例來說,你控制一台汽車, : 目標車速100,當你車速只有95,那你油門該踩多一點,補點油,把速度加上去; : 當你車速只有90,那你油門要踩更多,才能加速更多, : 當你車速只有80,那你最好大腳踩下去。 : 這種『誤差愈大,補償愈多』的控制,就是P控制 : P控制根據你每一個當下誤差大小,計算補償量。 : 設定P值的大小,就是設定補償比例。P值大表示補償量多,也表示容易過度反應。 : 開車比較緩和的人,需要加速時,他油門也是慢慢加 : 減速時,就油門放開,輕輕踩煞車 這就是P值設定小 : 相對的 有些人急性子 加速就大腳踩下去 超速再緊急煞車 : 這就是P值設定大 : 文中提到,你P值設定到系統有點不穩了,代表你P值設定過大。 : 試想,假設你車速98,誤差沒有很大,卻猛踩油門, : 接著車速一瞬間衝到102,你又激烈煞車,以致車速瞬間掉到100以下 : 又回到重新加速的狀況,如此往復循環。 : 這樣激烈的設定並不是一個好的設定 : Ziegler & Nichols 參數調整法則 是把 P值設定在震盪值的一半。 : 其目的就是要減少震盪 : 即使開車過程中,你努力把車速控制在100公里附近, : 但當你這樣加速、減速、加速、減速 開了一段時間之後, : 誤差就慢慢累積出來了。 : I 控制器就是補償累積誤差 : 他不是根據『當下』的誤差多少來設定補償。 : 而是過去一段時間,你累積了多少誤差來設定補償。 : 舉例說,你目標是控制時速100公里,但過去一陣子的平均時速是98, : 那也許你就要考慮把多踩一點油門, : 至於你要踩到101,102,還是103,就看經驗決定。 : 如果要補多一點,I就設定大一點(或是時間常數短一點) : 反之亦然。 : D 控制關注的是誤差的變化趨勢,這不好解釋。 : 假設你車子穩穩地開在路上,突然車速往下掉 : (可能是沒油,可能是電路出問題),你下意識就是踩油門。 : 你是根據『車速下掉』這個概念補油門, : 而不是『目前車速差多少』來決定補油門。 : 或者,你從0加速到100,當你車速不到80,你可以盡情的踩油門 : 當車速到80時的時候,你已經接近目標了,就把油門放開一些, : 到90時,油門再放開一些, : 甚至當你車速到達95公里時,你可能還會預先煞車, : 避免最後速度超過100。 : 這就是D控制。 : PID可以做到大部分的控制,但是單單一個PID控制器很難做到精密的控制。 : 你應該思考,你是否真的需要PID控制, : 就一般控制而言,P或PI就可以達到很好的控制效果。 : 如果你需要響應快,又需要精密控制,那你可能需要兩組參數。 : 另外,PID控制不理想,有時不是參數設定的問題。 : 致動器與負載是否匹配也是重點。 : 如果致動器不夠力,參數調再大,也推不動。 -- 我一個學長,昨天晚上和6歲的小外甥逛夜市,偶遇他前女友她現男友。 前女友大方笑著介紹道:「這是我老公,你們認識一下吧」。 學長有那麼點小尷尬,心想那女人怎麼那麼不識抬舉。 重點來了,他小外甥突然大吼道:「爸爸,我要吃好多魚哦!」 然後跑去對前女友說:「媽媽你也來夜市了啊,不是說好星期一來才看我嗎?」 結果旁邊那個男的一巴掌打在他前女友臉上,頭也不回的走了! 作者:notepad67 (我一個機靈就餓醒了) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.196.54.12 ※ 文章網址: https://www.ptt.cc/bbs/Mechanical/M.1422330720.A.236.html

01/27 13:09, , 1F
如果發生這樣 應該是要更改設計吧
01/27 13:09, 1F
我的CPU只有16bit阿.只有40Mhz ※ 編輯: kingzero (113.196.54.12), 01/27/2015 13:38:06

01/27 20:27, , 2F
你要確保 UpdatedPeriod 不會 overflow
01/27 20:27, 2F

01/27 20:42, , 3F

01/27 20:43, , 4F
運算之前要先檢查有沒有 overflow 的可能
01/27 20:43, 4F

01/28 00:18, , 5F
錯了 應該是限制UpdatedPeriod 最後在輸出PTPER
01/28 00:18, 5F
文章代碼(AID): #1KnmjW8s (Mechanical)
文章代碼(AID): #1KnmjW8s (Mechanical)