日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PID:我应该何时计算积分项?

發(fā)布時間:2024/7/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PID:我应该何时计算积分项? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近看到了Brett Beauregard發(fā)表的有關PID的系列文章,感覺對于理解PID算法很有幫助,于是將系列文章翻譯過來!在自我提高的過程中,也希望對同道中人有所幫助。作者Brett Beauregard的原文網(wǎng)址:http://brettbeauregard.com/blog/2011/07/pid-when-should-i-compute-the-integral-term/

?

最近有一個建議張貼到初學者的PID系列。爭議的焦點是,如果您解決拉普拉斯域中的問題,它指定了執(zhí)行積分項的不同方式。評論人士建議,與其看某一點的誤差總和,不如看最后一個點的總和。

因此,當前的代碼是這樣的:

/*Compute all the working error variables*/ double input = *myInput; double error = *mySetpoint - input; ITerm+= (ki * error); if(ITerm > outMax) ITerm= outMax; else if(ITerm < outMin) ITerm= outMin; double dInput = (input - lastInput);/*Compute PID Output*/ double output = kp * error + ITerm- kd * dInput;

建議是這樣的:
?

/*Compute all the working error variables*/ double input = *myInput; double error = *mySetpoint - input;double dInput = (input - lastInput);/*Compute PID Output*/ double output = kp * error + ITerm- kd * dInput;ITerm+= (ki * error); if(ITerm > outMax) ITerm= outMax; else if(ITerm < outMin) ITerm= outMin;

我從未見過這樣做,但我想我應該試一試。我設計的測試是一個簡單的設定值階躍,然后是一個斜坡下降。

當控制器設置為默認的采樣時間時,差異是無法察覺的。為了突出這兩種方法之間的差異,我決定將PID采樣時間從默認值100mS提高到5秒。

這里我們可以看到一個明顯的贏家。現(xiàn)有的PID代碼的性能比建議的要好,這可能是因為積分項對進程更改的響應要早5秒。但是為了確保我沒有遺漏任何東西,我決定再做一次測試。我沒有改變設定值,而是在系統(tǒng)中引入了負載變化。

同樣,現(xiàn)有的 PID 代碼性能更好,處理負載變化更快。

那么判決呢?雖然這是一個有趣的鍛煉,但我認為結(jié)果很清楚。我會保持原來的代碼。

歡迎關注:

?

總結(jié)

以上是生活随笔為你收集整理的PID:我应该何时计算积分项?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。