Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 24985|回復: 27

PID控制說明

[複製鏈接]
nichal 該用戶已被刪除
發表於 2008-11-28 14:46:56 | 顯示全部樓層 |閱讀模式
http://www.wretch.cc/blog/chipware/17867649

用實例解說
比較容易理解
提供大家參考看看

有錯誤的地方也請不吝指正唷~~~

[ 本帖最後由 nichal 於 2008-11-28 14:47 編輯 ]
發表於 2008-11-28 15:14:15 | 顯示全部樓層
當servo因為負載變動的關係
讓定位進入一種來回振盪的現象

其實這時後我會選擇pd 而非pi。

我覺得i控制用在穩態誤差時比較明顯
nichal 該用戶已被刪除
 樓主| 發表於 2008-11-28 16:47:40 | 顯示全部樓層
大大您好唷~~
請教一下所謂的穩態誤差
是指因為負載持續加載而使誤差本身一直沒辦法縮小
呈現undershooting的現象嗎?

感謝大大的指教
我文中原本所要表達的負載變動
是指負載本來很重
忽然變輕了之後又慢慢加重回來的情況
而不是驅動過程一直overdamping的現象
所以才使用PI控制
(這種情況會發生在拿起重物後, 忽然放下再重新拿起的時候)

不曉得這樣的說法是否正確?
還是大大您有比較好的解說方式
提供給小弟做參考
感恩呀~~~~


[ 本帖最後由 nichal 於 2008-11-28 16:52 編輯 ]
發表於 2008-11-28 19:40:07 | 顯示全部樓層
大大您好
小弟以為是在指P GAIN太大,一直過阻尼產生的振盪,所以才會說會選擇使用PD CONTROL。
不過要簡單的說明I GAIN的話,可以用速度控制來表達。

p控制
        +---------------------------------------------------         ←速度命令
         |     /-----------------------------------------------        ←實際控制,因為只有P 控制,和命令會有誤差。
         |    /
         |   /
____| /

                  
        +---------------------------------------------------         ←實際馬達速度可以跟上速度命令,且沒有穩態誤差
         |     /
         |    /
         |   /
____| /


可以用速度控制來表達i gain。因為速度控制只有p控制比較容易產生穩態誤差。
其實PID這東西真的很抽像,沒有實際摸過真的很沒有感覺。
不過也期待大大可以用更簡單的言語帶領大家學習PID CONTROL。
謝謝
nichal 該用戶已被刪除
 樓主| 發表於 2008-11-29 07:20:05 | 顯示全部樓層
感謝大大的指點
受教了
m(_._)m

小弟盡力再找看看有沒有更容易理解的範例來說明
謝謝大大的支持唷~~~
發表於 2008-11-30 15:20:23 | 顯示全部樓層
大大您太謙虛了,小弟從您的文章也受教了。
發表於 2008-11-30 16:55:27 | 顯示全部樓層
其實PID控制不難理解喔,  例如P是英文proportional的縮寫,是"比例"的意思, 例如如果要利用油門控制機車的速度, 當你看到速度離目標還差太多時, 你會加比較多的油門,  當速度離目標只差一點時, 就只要加一點油門就可以了,  這就是"比例"的概念,就是控制的值與誤差值呈正比的意思...  當然光靠P控制常常無法快速精準且穩定的控制目標達到設定值,因此還會加上I(積分),D(微分)控制...或者是其他更複雜的控制喔...

[ 本帖最後由 stanley21 於 2008-11-30 17:04 編輯 ]
nichal 該用戶已被刪除
 樓主| 發表於 2008-11-30 19:12:42 | 顯示全部樓層
史丹利大大的說明範例也很讚唷~~~
有沒有微分與積分相關的看法呢?
也提供給大家參考看看~~~


doubletime大大
多多交流吧~~~
發表於 2008-12-1 18:56:19 | 顯示全部樓層
I 控制的話,可以說開車的時後,假設想讓車子開在80KM/HR,車子已經跑到80KM/HR了,但車還是需要踩著油門,如果只有P控制的話,腳會放開,踩著,持續這樣的動作,加入I控制就可以固定的量踩著油門讓車子保持在80KM/HR。
D控制可以說,當遇到紅燈時,需要減速,但會考慮現在的車速,而決定是否要踩煞車或是只要放掉油門就好了。
nichal 該用戶已被刪除
 樓主| 發表於 2008-12-1 23:55:43 | 顯示全部樓層
這個讚!
有講到竅門~~~
不過要讓腳踩著"變動量"的油門可不簡單
也就是說I控制並不好搞.....
發表於 2008-12-2 21:43:25 | 顯示全部樓層
補充一下, 有關P控制的部份,接著上面用油門控制機車速度的例子,
如果設定目標為70公里/hr,目前速度若只有30公里/hr,
就還有40公里/hr的差距,如果加油門的幅度比較大
(也就是比例係數Kp比較大),當然速度達到設定目標的時間會比較快,
相反如果加油門的幅度比較小,達到目標的時間會比較慢,
但是調整的幅度一下子太大,也會造成速度的不正常震盪,
甚至有失控的危險..

這個時候可以加上微分控制(D),它能時時計算誤差的變化量,
並且利用此訊息來進行調整,例如當速度超過目標時(參考表1),
速度誤差+7和+10時,速度誤差變化量為+7和+3,
這時P控制會減油門,同時D控制也會減油門,
這樣一來D控制會幫助降低速度超過目標太多(也就是Overshoot),
而速度誤差+5和+0時,速度誤差變化量為-5和-5,
這時P控制會減油門,同時D控制卻會加油門,
這樣可以讓速度從超過目標回到目標時不要一下子衝太快,
所以D控制的作用就可以讓速度震盪減少了.

表1.
速度誤差(公里/hr): -40 -30  -20  -10    0   +7  +10  +5  0
速度誤差變化量:      +10  +10  +10  +10   +7  +3   -5  -5


另外單憑P控制有時候會讓速度仍然無法精準的達到設定值,
仍然會有一定的偏差,當這個狀況發生時,就可以加上積分控制(I)解決,

顧名思義,積分控制會時時將誤差積分加起來,
當仍有誤差時他就會一直告訴控制器調整油門,
直到機車速度不再有誤差時才停止...

以上只是很初淺說明,如果大家有興趣的話可以去書店翻一下自動控制的書,
裡頭學問不小啊~~不過千萬別被嚇到了,因為自動控制是很生活化的,
我們每天在騎機車,開車,轉方向盤的時候就會用到了喔~~
   
nichal 該用戶已被刪除
 樓主| 發表於 2008-12-3 06:52:26 | 顯示全部樓層
看來小弟的文章有拋磚引玉的效果
引起這樣的迴響真叫人開心

科技是很令人著迷的
只是有時我們不得其門而入
希望藉由這樣的方式
讓大家更喜歡也更瞭解
謝謝上面幾位大大的回覆呀!!

如果有興趣加入討論的大大們
也請繼續指教唷!!
真理是越講越明滴~~~


[ 本帖最後由 nichal 於 2008-12-3 06:57 編輯 ]
發表於 2008-12-5 07:44:42 | 顯示全部樓層
各位大大~~~有圖有真相,來看圖吧!!
控制常用到的步階響應如下圖,
在歸向的過程,看起來像波浪的圖,簡單可以分為四個區塊
         
其中  e=目標值-回授值=誤差
     △e=目前e-前次e=誤差變化率
     (目標就是整條延伸的藍色線條)
    其中
    目標值_0-回授值_0=e_0 ---(1)前次e
    目標值-回授值=e ------(2)目前e

    而目標值基本上不變動,故 目標值_0=目標值
    所以(2)-(1)得
誤差變化率△e為"回授值_0-回授值",△e正負關係由此對照圖片便可明瞭


在第II區塊及第IV區塊,因為e跟△e正負號相同,所以都是全力往目標值歸向,
                                     物理意義上就是軌跡離開交會點時會做最大的歸向修正動作
在第I區塊及第III區塊,因為e跟△e正負號不相同,所以都是帶有煞車往目標值歸向,
                                    物理意義上就是軌跡衝向交會點帶減速才能及時在交會點停住,
                                    一般控制系統都帶有負載的慣性作用,所以會在交會點(目標)
                                     來回擺盪修正~~直到進入致動器(馬達)進入死區(不敏感帶),
                                     才會停止擺盪修正~~~~~

其它就如同各位大大說的,
步階響應的開始用PD的修正效果強
步階響應的結束用PI的修正效果強
以上~~~~








[ 本帖最後由 marbol 於 2008-12-5 22:50 編輯 ]
步階響應與控制物理意義.GIF
nichal 該用戶已被刪除
 樓主| 發表於 2008-12-5 08:49:05 | 顯示全部樓層
真的是有圖有真相
讚啦~~~

這樣就一目瞭然囉!!!


感謝marbol大大寶貴的資料呀~~~

不過
可以請大大再補一條速度線嗎?
這樣比較容易理解誤差變化△e的部分唷~~~
感恩啦~~~

ps.
小弟本來想用小畫家要補
可是一直補不好
所以只好請大大用原圖再補一下囉~~~
藍色線一樣是參考線
加一條紅色的誤差變化線
所以誤差變化線應該會差個90度相位吧?!
(好像不能這樣說.....但是又不曉得該怎麼比喻較好.....)


[ 本帖最後由 nichal 於 2008-12-5 09:37 編輯 ]
發表於 2008-12-5 21:20:05 | 顯示全部樓層
小畫家真的是大家的好朋友~~~
只是誤差變化線應該補在哪??

小弟是想把I跟II的斜率作切線,斜率是負的,
                III跟IV的斜率作切線,斜率是正的,
斜率應該可以比擬作誤差變化率吧~~~
nichal 該用戶已被刪除
 樓主| 發表於 2008-12-5 21:55:45 | 顯示全部樓層
如果大家不嫌醜的話
我畫的這一張就參考看看囉~~~

紅色線是速度線
也就是誤差變化線
剛開始位置在0沒有動作
所以速度0(藍色線就是速度0)
開始驅動後是正速度
一直到經過位置0的時候是速度最快的時候

過了位置0速度就變慢了
所以看到速度線往下掉
一直衝到速度0的時候剛好離期望位置最遠

不過
微分控制的概念
看的是加速度的效果
就像比例控制一樣
看的是速度效果
而期望位置與實際位置的相對關係
是我們用來分析控制結果的參考圖

最好的控制
是第二張圖
沒有四個步階
就是直接到位
不過應該很難
pid.JPG
pid2.JPG
發表於 2008-12-5 22:36:08 | 顯示全部樓層
nichal大大~~~~
畫的不錯啊~~~簡單明瞭   不用改了~~~ 原來誤差變化線是這個樣子~~~ 是有領先90度的相位的樣子~~~ 話說微分器的效果是讓電流領先電壓90度的相位, 而微分器就是作用在步階響應的初始階段,有領先的電流出現,才會有快速的馬達扭力隨之而來!!提前反應修正行為,不曉得這樣兜不兜的起來??

[ 本帖最後由 marbol 於 2008-12-5 22:38 編輯 ]
nichal 該用戶已被刪除
 樓主| 發表於 2008-12-6 00:01:31 | 顯示全部樓層
提前反應修正行為
就靠Kp與Kd常數的設定經驗了
真要用公式推導
應該會先暈倒.....
發表於 2008-12-6 08:48:56 | 顯示全部樓層
有圖真的比較好懂! 

我比較直觀的想因為微分得到的誤差變化量代表的是一種趨勢,
因此可以藉此預測未來,也就是說D控制可以更早一步動作,不知道是不是這樣呢??

而相反的,積分(I)控制會慢一步才動作...
nichal 該用戶已被刪除
 樓主| 發表於 2008-12-6 16:40:58 | 顯示全部樓層
史丹利大大說得沒錯
微分可以預測反應
而積分是屬於事後補救
簡單說就是這樣囉~~~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-3-29 21:45 , Processed in 0.188023 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表