<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高速PID控制器設(shè)計(jì)與仿真

          基于FPGA的高速PID控制器設(shè)計(jì)與仿真

          作者:付學(xué)志 姚旺生 茍偉 譚斌 海軍工程大學(xué) 電子工程學(xué)院計(jì)算機(jī)工程系 時(shí)間:2008-05-07 來源:電子技術(shù)應(yīng)用 收藏

            在CNC(電腦數(shù)控)加工、激光切割、自動(dòng)化磨輥弧焊系統(tǒng)、步進(jìn)/伺服電機(jī)控制及其他由電機(jī)控制的機(jī)械組裝定位運(yùn)動(dòng)控制系統(tǒng)中,應(yīng)用得非常廣泛。其設(shè)計(jì)技術(shù)成熟,長期以來形成了典型的結(jié)構(gòu),參數(shù)整定方便,結(jié)構(gòu)更改靈活,能滿足一般控制的要求。

          本文引用地址:http://www.ex-cimer.com/article/82229.htm

            此類運(yùn)動(dòng)控制系統(tǒng)的被控量常為速度、角度等模擬量,被控量與設(shè)定值之間的誤差值經(jīng)離散化處理后,可由數(shù)字實(shí)現(xiàn)的控制算法加以運(yùn)算,最后再轉(zhuǎn)換為模擬量反饋給被控對象,這就是PID控制中常用的近似逼近原理。

            采用這種結(jié)構(gòu)設(shè)計(jì)的控制系統(tǒng),其性能只能與原連續(xù)控制系統(tǒng)性能接近而不會(huì)超過,逼近的精度與被變換的連續(xù)數(shù)學(xué)模型大小及采樣周期長短有關(guān)[1]。特別是在高速運(yùn)動(dòng)控制的情況下,采樣周期的影響更大,采樣周期相對較長時(shí),逼近程度才較好,但是對PID控制算法的運(yùn)算速度及回路的調(diào)節(jié)時(shí)間等也提出了更高的要求。

            可編程邏輯器件的邏輯門數(shù)為5000~200萬個(gè),屬于大規(guī)模甚至超大規(guī)模邏輯器件,其工作頻率最高可達(dá)250MHz。因此,無論從編程規(guī)模還是工作速度上,完全可以用來實(shí)現(xiàn)高速。本設(shè)計(jì)使用Altera公司的Cyclone系列器件EP1C3作為硬件開發(fā)平臺(tái),對運(yùn)動(dòng)控制中常用的增量式數(shù)字PID控制算法進(jìn)行優(yōu)化處理,提高了運(yùn)算速度和回路的調(diào)節(jié)時(shí)間。
           
            1 增量式數(shù)字PID控制算法的實(shí)現(xiàn)

            經(jīng)典PID控制方程為:

                  

            式中,KP為比例放大系數(shù);K1為積分時(shí)間常數(shù);KD為微分時(shí)間常數(shù)。數(shù)字PID控制算法的實(shí)現(xiàn),必須用數(shù)值逼近的方法。當(dāng)采樣周期相當(dāng)短時(shí),用求和代替積分,用差商代替微商,使PID算法離散化,將描述連續(xù)一時(shí)間PID算法的微分方程離散化、差分、歸并處理后可得:

                 

                  

            從(2)式可以看出,增量式數(shù)字PID算法,只要儲(chǔ)存最近的三個(gè)誤差采樣值e(k)、e(k-1)、e(k-2)就足夠了。實(shí)現(xiàn)此增量式數(shù)字PID控制算法的結(jié)構(gòu)圖如圖1所示。

                 

            圖1中虛線框以內(nèi)的結(jié)構(gòu)是三個(gè)具有移位功能的乘法器,可以使用Altera公司提供的經(jīng)過嚴(yán)格測試和優(yōu)化處理的宏功能模塊LPM_MULT(M0~M2)實(shí)現(xiàn)。LPM_MULT是一個(gè)可定制位寬的加法/乘法器,在此,定制誤差輸入值e(k)的位寬為8bit,另一常量乘數(shù)q0、q1、q2為整定后的PID控制器的控制參數(shù),位寬為6bit,乘法器輸出結(jié)果位寬為14bit。QuartusII中的原理圖如圖2所示。

                  

            LPM_MULT宏功能模塊還可以定制運(yùn)算結(jié)果輸出時(shí)等待同步脈沖(clock)的個(gè)數(shù),這就是LPM_MULT的流水線輸出功能。圖2中指定lpm_mult0、lpm_multl、:lpm_mult2的等待時(shí)間依次為1、2、3個(gè)同步脈沖,這種設(shè)計(jì)自然地實(shí)現(xiàn)了移位相乘操作;同時(shí)利用乘法器的流水線功能,提高了乘法運(yùn)算的速度。優(yōu)化后的功能仿真波形如圖3所示。

                  

            由圖2、圖3可見,在第K個(gè)流水線推進(jìn)時(shí)鐘信號(hào)clk的上跳沿,lpm_mult0輸出當(dāng)前時(shí)刻下的乘積運(yùn)算結(jié)果steplout,lpm_multl輸出K一1時(shí)刻下的乘積結(jié)果step2out,lpm_mult2輸出K-2時(shí)刻下的乘積結(jié)果step3out,并行加法運(yùn)算部件parallel_add的輸出值為result=steplout+step2out+step3out。

            2 通用模/數(shù)、數(shù)/模轉(zhuǎn)換器的設(shè)計(jì)與仿真

            為了不失系統(tǒng)的通用性和可擴(kuò)展性,參照ADI公司8bit、半閃爍型A/D轉(zhuǎn)換器AD7822的時(shí)序圖,設(shè)計(jì)了通用A/D轉(zhuǎn)換部件typical_ADC實(shí)現(xiàn)系統(tǒng)的模/數(shù)轉(zhuǎn)換仿真功能。typical_adc部件是一個(gè)理想化的A/D轉(zhuǎn)換芯片,主要由一個(gè)8位地址計(jì)數(shù)器和一個(gè)存放正弦數(shù)據(jù)的ROM構(gòu)成,它模擬正弦信號(hào)的采樣、量化過程,采樣周期只與系統(tǒng)的工作時(shí)鐘有關(guān)[2]。

            相對于模/數(shù)轉(zhuǎn)換而言,數(shù)/模轉(zhuǎn)換的控制信號(hào)要少一些,時(shí)序要求更簡單。參照TI公司14位D/A轉(zhuǎn)換芯片DAC8806的功能表,設(shè)計(jì)了一個(gè)通用D/A轉(zhuǎn)換部件typical_dac實(shí)現(xiàn)系統(tǒng)的數(shù)/模轉(zhuǎn)換仿真功能。為了形式化地表示系統(tǒng)的D/A轉(zhuǎn)換過程,typical_dac只是對PID算法的輸出量△u(k)做了一個(gè)奇偶校驗(yàn)運(yùn)算,VHDL語言描述如下:

            ARCHITECTURE behav OF typical_dac IS

            BEGIN-當(dāng)轉(zhuǎn)換控制信號(hào)wr為低電平時(shí)輸出各位異或值,否則輸出高阻態(tài)

            uout<=(datain(0)XOR datain(1)XOR datain(2)XOR datain(3)XOR datain(4)XOR datain(5)XORdatain(6) XOR datain(7)X0R datain(8)XOR datain(9):XOR datain(10)XOR datain(11)XOR datain(12)XOR datain (13)XOR`1`)WHEN wr=`0`ELSE`z`;END behav;;

            3 工作控制狀態(tài)機(jī)的設(shè)計(jì)

            典型的數(shù)字PID控制系統(tǒng)由A/D轉(zhuǎn)換、PID控制算法和D/A轉(zhuǎn)換三個(gè)關(guān)鍵環(huán)節(jié)構(gòu)成。為了協(xié)調(diào)三個(gè)環(huán)節(jié)之間的工作流程,系統(tǒng)工作控制部件必不可少。純硬件數(shù)字系統(tǒng)的順序控制有多種方案可選,如單片機(jī)輔助控制、嵌入式CPU軟核控制、脈沖計(jì)數(shù)控制等等,但都難以兼顧系統(tǒng)的高速控制和靈活擴(kuò)展。在高速運(yùn)算和控制方面,有限狀態(tài)機(jī)具有以上幾種控制方式難以超越的優(yōu)越性。

            從狀態(tài)機(jī)的信號(hào)輸出方式上分,有Moore型和Mealy型兩類狀態(tài)機(jī)。從輸出時(shí)序上看,前者屬于同步輸出狀態(tài)機(jī),而后者屬于異步輸出狀態(tài)機(jī)。Mealy型狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和所有輸入信號(hào)的函數(shù),它的輸出是在輸入變化后立即發(fā)生的,不依賴于時(shí)鐘的同步[2]。

            Moore型狀態(tài)機(jī)的輸出則僅為當(dāng)前狀態(tài)的函數(shù),這類狀態(tài)機(jī)在輸入發(fā)生變化時(shí)還必須等待時(shí)鐘的到來,時(shí)鐘使?fàn)顟B(tài)發(fā)生變化時(shí)才導(dǎo)致輸出的變化,所以比Mealy機(jī)要多等待一個(gè)時(shí)鐘周期,但是能有效避免毛刺現(xiàn)象。本設(shè)計(jì)所用的狀態(tài)機(jī)為單進(jìn)程Moore型狀態(tài)機(jī)。狀態(tài)轉(zhuǎn)換如圖4所示。

                  

            4 系統(tǒng)實(shí)現(xiàn)與功能仿真

            整個(gè)PID控制器的系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方法和模塊化的設(shè)計(jì)思想,即先由PTD控制器的自然語言描述得到VHDL的系統(tǒng)行為描述,然后對系統(tǒng)分解為誤差部件、PID運(yùn)算部件、控制增量D/A變換以及協(xié)調(diào)三者的控制狀態(tài)機(jī)等四個(gè)主要模塊。

            Altera公司專用軟件QuartusII支持原理圖與VHDL語言混合輸入設(shè)計(jì)方式,除PID運(yùn)算部件采用原理圖輸入設(shè)計(jì)方式以外,其余三個(gè)部件均采用VHDL輸入設(shè)計(jì)方式。系統(tǒng)仿真時(shí),如果將系統(tǒng)的最高工作速率設(shè)定為120MHz,則采樣速率為24MHz。功能仿真波形圖如圖5所示。

                 

            通過對增量式數(shù)字PID控制算法的優(yōu)化處理,顯著提高了系統(tǒng)的工作速度。仿真結(jié)果表明,擁有較低轉(zhuǎn)換速率的技術(shù)成為提高系統(tǒng)運(yùn)行速度的瓶頸。就本設(shè)計(jì)采用的閃爍型A/D器件而言,減少狀態(tài)機(jī)等待A/D轉(zhuǎn)換結(jié)束信號(hào)EOC(見圖4)的時(shí)間,即提高A/D轉(zhuǎn)換的速率是提高系統(tǒng)整體工作速率的關(guān)鍵。

            本設(shè)計(jì)中所采用的增量式數(shù)字PID控制算法的設(shè)計(jì)思想可以應(yīng)用到有限長單位脈沖響應(yīng)(FIR)濾波器和無限長單位脈沖響應(yīng)(ⅡR)濾波器的FPGA設(shè)計(jì)中,并且同樣可以使用流水線優(yōu)化技術(shù)以提高工作速度。同時(shí),由于PLD設(shè)計(jì)和專用ASIC設(shè)計(jì)的通用性,在PLD設(shè)計(jì)平臺(tái)上所完成的設(shè)計(jì)可以很自然地過渡到專用ASIC的設(shè)計(jì)工作中,進(jìn)一步提高了系統(tǒng)的可靠性和集成度。



          關(guān)鍵詞: FPGA PID控制器 A/D變換 EDA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();