Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 25110|回復: 27
打印 上一主題 下一主題

PID控制說明

[複製鏈接]
nichal 該用戶已被刪除
跳轉到指定樓層
1#
發表於 2008-11-28 14:46:56 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
http://www.wretch.cc/blog/chipware/17867649

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

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

[ 本帖最後由 nichal 於 2008-11-28 14:47 編輯 ]
28#
發表於 2012-5-30 19:26:19 | 只看該作者
error = setpoint - actual_position;

if(error > 0.01 || error < -0.01)
        {
                integral = integral + error*dt;
        }

derivative = (error - pre_error)/dt;

output = (Kp*error) + (Ki*integral) + (Kd*derivative);

if(output > 30000)
        {
                output = 30000;
        }
        else if(output < -30000)
        {
                output = -30000;
        }

return output;

請問公式是這樣嗎
我想要把它轉成c檔
我已經把輸出+給pwm了
可是誤差還是有10啪ㄟ怎麼回事= =
條kp kd ki 直看不太出來= =
nichal 該用戶已被刪除
27#
 樓主| 發表於 2008-12-8 16:02:18 | 只看該作者
別放在心上
大家都是在討論而已啦~~~
因為這裡叫"討論區"呀!!!
26#
發表於 2008-12-7 22:40:50 | 只看該作者
一切都是誤會啊~~ 

各位大大想的可能太複雜了,我理解的對象也並不是像股市那樣複雜的系統啦!!doubletime可能有點誤解我的意思了,應該都是我沒說清楚的關係,實在很抱歉!!

微分控制本質上是預測控制,這個是沒什麼爭議的,
de(t)/dt是e(t)的斜率,
利用誤差的斜率,可以預測誤差的方向
在線性系統步階輸入下,誤差斜率越大,
就會有較大的超越量
微分控制就是利用瞬間的誤差斜率,
事先就預測出會有較高的超越量,
並且在過大的超越量實際發生前就加以控制矯正~~

而積分控制主要是對穩態誤差加以矯正,
感覺就像過了暫態響應,到穩態時才去動作去控制,
這就是我說"慢一步"的意思...

如果要講更深的控制我就不會了吧,
學校念的自動控制大概都還回去了~~
要再去翻書才行啊!!
25#
發表於 2008-12-7 21:39:18 | 只看該作者
小弟也還在學習,因為PID真的很抽像
我也還在學習如何可以用最簡單的文來表達這抽像的理論。
nichal 該用戶已被刪除
24#
 樓主| 發表於 2008-12-7 20:31:47 | 只看該作者
感謝大大提出修正~~~
再一次感受到大大精湛的分析能力

確實
含有"人性參數"的比喻
多半是不太恰當的~~~
23#
發表於 2008-12-7 12:25:29 | 只看該作者
這個比方好像不太對- -
這樣說好了,假設我是投資者,投顧老師說明年可以到200元/股
那我也買了股票了。
但下個月因為大環境不好,投顧老師卻和我說,只能到100元/股
好像和投資者的我當初的原意不屬。投顧老師應該是不管怎樣一直要大家買,且會告知未來會達到200元才對。

所以拿股票來說明似乎不對,因為命令假設是步階的話,是不會因為大環境改變而改變。
呵呵,會不會被新聞局盯上?

因為在位置控制上好像是這樣,但在速度控制上PD 和PI 似乎又不太一樣。所以對這未來估測有很大的疑惑。
nichal 該用戶已被刪除
22#
 樓主| 發表於 2008-12-6 20:30:58 | 只看該作者
doubletime大大
或許您誤解史丹利大大所要表達的意思
史丹利大大的原意是說
微分項可以看出比例變化的趨勢
提早預防比例控制失控的情況
跟大大您所說的壓抑P控制意思是一樣的

而積分控制在進入穩態前
因為誤差一直呈現大幅度的增減情況
所以反倒沒辦法有效壓抑誤差的縮小
反倒是進入穩態範圍了
才開始發生作用
史丹利大大才說積分項是後知後覺

然而就公式來看
就像大大您所說的一樣
公式都是針對過去發生的值進行處理跟運算
跟是不是預知無關
然而對現象的修正來說
卻會讓人有這樣的感覺


打個比方好了
股票分析師都會在開市前
建議買家如何選購
這就是一種預測
然而預測的根據
是過去股價漲跌的曲線與大環境現象分析運算後的結果
這種舉動
就像微分控制一樣

而當日股票開市後
分析師會再告知今日預測是否吻合
並對股價的漲跌做出立即的回應與分析
調整接下來要進行的買賣
這樣的動作
就像積分控制一樣

大致上是這樣囉~~~~
有說錯請不吝指教~~~~


[ 本帖最後由 nichal 於 2008-12-6 20:32 編輯 ]
21#
發表於 2008-12-6 17:48:54 | 只看該作者
怎麼覺得那裡怪怪的。
微分會早一步知道嗎?
積分會慢一步知道嗎?

照公式來講好了,微分是(現在-過去)。照理來說是不會有未來的。
而積分則是累積誤差。

微分的目的壓抑p控制,而積分的目的是為了減少穩態誤差。好像都和預知沒有關係。
nichal 該用戶已被刪除
20#
 樓主| 發表於 2008-12-6 16:40:58 | 只看該作者
史丹利大大說得沒錯
微分可以預測反應
而積分是屬於事後補救
簡單說就是這樣囉~~~
19#
發表於 2008-12-6 08:48:56 | 只看該作者
有圖真的比較好懂! 

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

而相反的,積分(I)控制會慢一步才動作...
nichal 該用戶已被刪除
18#
 樓主| 發表於 2008-12-6 00:01:31 | 只看該作者
提前反應修正行為
就靠Kp與Kd常數的設定經驗了
真要用公式推導
應該會先暈倒.....
17#
發表於 2008-12-5 22:36:08 | 只看該作者
nichal大大~~~~
畫的不錯啊~~~簡單明瞭   不用改了~~~ 原來誤差變化線是這個樣子~~~ 是有領先90度的相位的樣子~~~ 話說微分器的效果是讓電流領先電壓90度的相位, 而微分器就是作用在步階響應的初始階段,有領先的電流出現,才會有快速的馬達扭力隨之而來!!提前反應修正行為,不曉得這樣兜不兜的起來??

[ 本帖最後由 marbol 於 2008-12-5 22:38 編輯 ]
nichal 該用戶已被刪除
16#
 樓主| 發表於 2008-12-5 21:55:45 | 只看該作者
如果大家不嫌醜的話
我畫的這一張就參考看看囉~~~

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

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

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

最好的控制
是第二張圖
沒有四個步階
就是直接到位
不過應該很難

pid.JPG (8.13 KB, 下載次數: 543)

pid.JPG

pid2.JPG (4.12 KB, 下載次數: 555)

pid2.JPG
15#
發表於 2008-12-5 21:20:05 | 只看該作者
小畫家真的是大家的好朋友~~~
只是誤差變化線應該補在哪??

小弟是想把I跟II的斜率作切線,斜率是負的,
                III跟IV的斜率作切線,斜率是正的,
斜率應該可以比擬作誤差變化率吧~~~
nichal 該用戶已被刪除
14#
 樓主| 發表於 2008-12-5 08:49:05 | 只看該作者
真的是有圖有真相
讚啦~~~

這樣就一目瞭然囉!!!


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

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

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


[ 本帖最後由 nichal 於 2008-12-5 09:37 編輯 ]
13#
發表於 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 (3.41 KB, 下載次數: 608)

步階響應與控制物理意義.GIF
nichal 該用戶已被刪除
12#
 樓主| 發表於 2008-12-3 06:52:26 | 只看該作者
看來小弟的文章有拋磚引玉的效果
引起這樣的迴響真叫人開心

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

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


[ 本帖最後由 nichal 於 2008-12-3 06:57 編輯 ]
11#
發表於 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 該用戶已被刪除
10#
 樓主| 發表於 2008-12-1 23:55:43 | 只看該作者
這個讚!
有講到竅門~~~
不過要讓腳踩著"變動量"的油門可不簡單
也就是說I控制並不好搞.....
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-2 18:34 , Processed in 0.254811 second(s), 11 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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