PID控制算法的C語言實現一 PID算法原理


   本系列是轉載。。。。。。。。。。。。。

  全部的程序有一個共同點:就是我沒認真去調pid的參數

 

   在工業應用中PID及其衍生算法是應用最廣泛的算法之一,是當之無愧的萬能算法,如果能夠熟練掌握PID算法的設計與實現過程,對於一般的研發人員來講,應該是足夠應對一般研發問題了,而難能可貴的是,在我所接觸的控制算法當中,PID控制算法又是最簡單,最能體現反饋思想的控制算法,可謂經典中的經典。經典的未必是復雜的,經典的東西常常是簡單的,而且是最簡單的,想想牛頓的力學三大定律吧,想想愛因斯坦的質能方程吧,何等的簡單!簡單的不是原始的,簡單的也不是落后的,簡單到了美的程度。先看看PID算法的一般形式: 

 

 

通過誤差信號控制被控量

   2.輸入量rin(t)為電機轉速預定值;    

   3.輸出量rout(t)為電機轉速實際值;    

    4.執行器為直流電機

    5.傳感器為光電碼盤,假設碼盤為10

    6.直流電機采用PWM調速 轉速用單位 /min 表示;   

 

不難看出以下結論: 

   

  1.輸入量rint)為電機轉速預定值(轉/min;    

  2 輸出量rout(t)為電機轉速實際值(轉/min;    

    3.偏差量為預定值和實際值之差(轉/min;

 

 

那么以下幾個問題需要弄清楚: 

 

   1.通過PID環節之后的U(t)是什么值呢? 

 

   2.控制執行器(直流電機)轉動轉速應該為電壓值(也就是PWM占空比)。    

 

  3.那么U(t)PWM之間存在怎樣的聯系呢?

 

  

 

http://blog.21ic.com/user1/3407/archives/2006/33541.html(見附錄1)這篇文章上給出了一種方法,即,每個電壓對應一個轉速,電壓和轉速之間呈現線性關系。但是我考慮這種方法的前提是把直流電機的特性理解為線性了,而實際情況下,直流電機的特性絕對不是線性的,或者說在局部上是趨於線性的,這就是為什么說PID調速有個范圍的問題。具體看一下

 

 

 

http://articles.e-works.net.cn/component/article90249.htm(見附錄2)這篇文章就可以了解了。所以在正式進行調速設計之前,需要現有開環系統,測試電機和轉速之間的特性曲線(或者查閱電機的資料說明),然后再進行閉環參數整定。這篇先寫到這,下一篇說明連續系統的離散化問題。並根據離散化后的特點講述位置型PID和增量型PID的用法和C語言實現過程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM