許國宏 宋征 王耀磊
摘要:根據(jù)增量式PID控制器的工作原理,設(shè)計了一種基于FPGA的數(shù)字PID控制器,采用FPGA并行結(jié)構(gòu),使用自頂向下的設(shè)計方法完成了控制器的VHDL分層設(shè)計,最終實現(xiàn)了對控制量的精確控制。經(jīng)過仿真測試表明,該設(shè)計方案有效可行,并且具有結(jié)構(gòu)簡單、性能可靠、控制效果良好及實用性強等優(yōu)點。
關(guān)鍵詞:PID控制器;FPGA;數(shù)字鎖相環(huán);
中圖分類號:TN911.23 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)11-0229-02
FPGA Implementation and Simulation of Digital PID Controller
XU Guo-Hong, SONG Zheng, WANG Yao-Lei
(China Research Institude of Radio Wave Propagation, QingDao 266107, China)
Abstract: According to the working principle of incremental PID controller,a kind of Digital PID Controller based on FPGA is designed,and using the FPGA parallel structure,The top-down design methodology is used to complete the controller VHDL layered design,F(xiàn)inally realized the precise control of control quantity。Through simulation tests show that the design scheme is effective and feasible,and has the advantages of simple structure、reliable performance、good control effect and strong practicability etc.
Key words: PID controller; FPGA; DPLL
PID控制算法是一種簡單有效的控制算法,因其有原理簡單、參數(shù)可調(diào)、魯棒性好、可靠性高、適應(yīng)性強等優(yōu)點,而在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用,是目前自動化控制技術(shù)中最穩(wěn)定的控制方法之一[[1]]。實現(xiàn)PID控制算法有很多種方法,本文采用FPGA并行結(jié)構(gòu)來實現(xiàn)PID控制算法,F(xiàn)PGA最明顯的優(yōu)勢在于集成度高,體積小,功耗低,可靠性高和電路設(shè)計比較靈活。
1 PID算法
1.1 PID算法表達(dá)式
PID控制器的核心思想是針對控制對象的控制需求,建立描述對象動態(tài)特性的數(shù)學(xué)模型,通過PID參數(shù)整定實現(xiàn)在比例、微分、積分三個方面參數(shù)調(diào)整的控制策略來達(dá)到最佳系統(tǒng)響應(yīng)和控制效果。完整的PID控制表達(dá)式如下:
[u(t)=kp[e(t)+1Ti0teTdde(t)dt]]
其中,[kp]為比例增益,[Ti]為積分時間常數(shù),[Td]為微分時間常數(shù),[u(t)]為控制量,[e(t)]為偏差??偟膩碚f,比例控制能引起系統(tǒng)迅速反應(yīng),從而減小穩(wěn)態(tài)誤差,但是比例放大系數(shù)的加大,會引起系統(tǒng)的不穩(wěn)定;積分控制的作用是,只要系統(tǒng)有誤差存在,積分控制器就不斷地積累,輸出控制量,以消除誤差,但積分作用太強會使系統(tǒng)超調(diào)加大,甚至使系統(tǒng)出現(xiàn)振蕩,這主要取決與積分系數(shù)的大小;微分控制可以減小超調(diào)量,克服振蕩,使系統(tǒng)的穩(wěn)定性提高,同時加快系統(tǒng)的動態(tài)響應(yīng)速度,減小調(diào)整時間,改善系統(tǒng)的動態(tài)性能[[2]]。
在數(shù)字控制系統(tǒng)中必須對PID濾波算法進(jìn)行離散化。當(dāng)采樣周期足夠短時,可以用求和代替積分、用后向差分代替微分,從而得到數(shù)字PID算法的實現(xiàn)模型[[3]]。數(shù)字增量式PID表達(dá)式如下:
[u(k)=u(k-1)+(kp+ki+kd)e(k)-(kd+2kd)e(k-1)+kde(k-2)];
控制量增量為:
[Δu=u(k)-u(k-1)=Kae(k)+Kbe(k-1)+Kce(k-2)]
從上式可以看出增量式PID算法只與前三次采樣值有關(guān),不需要大量的數(shù)據(jù)存儲和累加,因而不易引起誤差累積,具有計算量小、實時性高的優(yōu)點。
1.2 PID算法應(yīng)用
數(shù)字鎖相環(huán)系統(tǒng)(DPLL)由數(shù)字鑒相器、數(shù)字環(huán)路濾波器和DAC等部分組成,其中數(shù)字環(huán)路濾波器是DPLL最核心的部分,主要實現(xiàn)從相位誤差到控制電壓增量比特字的轉(zhuǎn)換[[4]]。為了使數(shù)字環(huán)路濾波器具有極佳的系統(tǒng)響應(yīng)和控制效果,PID控制算法是較好的選擇,基于PID控制系統(tǒng)的鎖相環(huán)結(jié)構(gòu)如圖1所示。
圖1 基于PID算法的鎖相環(huán)結(jié)構(gòu)
鎖相環(huán)系統(tǒng)中,數(shù)字鑒相器比較輸入頻率與輸出頻率的相位差[e(k)],作為PID控制器的輸入偏差信號,在選定比例-微分-積分系數(shù)[kp]、[ki]、[kd]后經(jīng)PID運算,產(chǎn)生偏差控制信號[u(k)],最后經(jīng)過D/A轉(zhuǎn)換器把數(shù)字相差轉(zhuǎn)換成模擬電壓信號,輸出給被控對象壓控恒溫振蕩器。
2 PID的FPGA實現(xiàn)
2.1 PID的FPGA實現(xiàn)結(jié)構(gòu)
PID算法在FPGA中可以通過串行結(jié)構(gòu)、并行結(jié)構(gòu)等方法實現(xiàn)。串行實現(xiàn)法結(jié)構(gòu)簡單,只用到一個乘法器和加法器,所需要的資源最少但速度也最慢;而并行實現(xiàn)方法的基本思想是以面積換取速度,其特點是擁有較快的運算速度,但所需要的資源比較多。
本次PID控制器要應(yīng)用到數(shù)字鎖相環(huán)系統(tǒng)中,所以筆者設(shè)計采用運算速度快的并行結(jié)構(gòu),用了三個加法器和三個乘法器來實現(xiàn)[[5]]。并行結(jié)構(gòu)如圖2所示,其中寄存器用于鎖存偏差信號或輸出信號的初始值和中間值。
圖2 PID算法并行實現(xiàn)結(jié)構(gòu)
2.2 PID參數(shù)選擇
對于PID控制器來說,如何選擇比例-微分-積分系數(shù)[kp]、[ki]、[kd]是設(shè)計的關(guān)鍵,這三個參數(shù)的選擇對環(huán)路系統(tǒng)的動態(tài)性能、穩(wěn)態(tài)性能以及穩(wěn)定性都起至關(guān)重要的作用。根據(jù)控制系統(tǒng)對環(huán)路帶寬、阻尼系數(shù)等指標(biāo)的要求,以及考慮環(huán)路系統(tǒng)器件本身特性,可以計算選擇適當(dāng)?shù)腜ID濾波器作為粗調(diào)參數(shù),再通過仿真和實際調(diào)試得到進(jìn)一步參數(shù),以獲得比較完善的控制曲線[[6]]。
數(shù)字鎖相環(huán)系統(tǒng)的輸入頻率ui和輸出頻率upf在鑒相功能模塊jianxiang中產(chǎn)生超前–滯后信號up和down,如圖3所示,當(dāng)ui超前upf時,up輸出寬度正比于相位誤差的脈寬高電壓;而當(dāng)ui滯后upf時,down輸出寬度正比于相位誤差的脈寬高電壓。在量化功能模塊lianghua中,計數(shù)時鐘對相位誤差進(jìn)行數(shù)字量化并產(chǎn)生偏差信號[e(k)],偏差及參數(shù)產(chǎn)生如圖4所示。根據(jù)鎖相環(huán)系統(tǒng)對環(huán)路帶寬、阻尼系數(shù)的要求,筆者選擇比例-積分-微分粗調(diào)參數(shù)如下:[kp=29]、[ki=0.97]、[kd=1.07],經(jīng)計算得[Ka=31.04]、[Kb=-31.14]、[Kc=1.04]。
圖3 超前-滯后信號產(chǎn)生圖
圖4 偏差及參數(shù)產(chǎn)生圖
由于FPGA只能進(jìn)行整數(shù)運算,所以運算時需要將實數(shù)轉(zhuǎn)換成整數(shù),即將系數(shù)擴大N倍,最后輸出時再把結(jié)果縮小N倍。本次設(shè)計選擇將系數(shù)擴大[27]倍,最后對于FPGA來說,舍器棄最低7位的數(shù)據(jù)即可作為輸出信號。同時,要對系數(shù)進(jìn)行擴展,在系數(shù)最高位增加一個符號位,1代表負(fù)數(shù),0代表正數(shù)。本次設(shè)計中輸入的數(shù)字量[Ka]、[Kb]、[Kc]和[e(k)]都設(shè)置為28bit,0..26位是數(shù)據(jù)位,第27位是符號位,最后得[Ka=F85H]、[Kb=8000F92H]、[Kc=89H],偏差及參數(shù)產(chǎn)生仿真如圖5。
圖5 偏差及參數(shù)產(chǎn)生仿真圖
2.3 PID控制器實現(xiàn)及功能仿真
按照并行結(jié)構(gòu)設(shè)計的PID控制器原理圖如圖6所示。利用28位的D觸發(fā)器dff27作為寄存器,而乘法器可以使用Aitera公司提供的經(jīng)過嚴(yán)密測試和優(yōu)化處理的宏功能模塊LPM—MULT來實現(xiàn),加法器通過VHDL語言編譯add55實現(xiàn)。add55為帶符號位的加法器,當(dāng)兩個相同符號的數(shù)相加時,可能出現(xiàn)運算結(jié)果溢出,導(dǎo)致運算出錯,所以要擴展加法運算位數(shù),將54位數(shù)據(jù)擴展出一位;當(dāng)兩個不同符號的數(shù)相加時,用被減數(shù)二進(jìn)制補碼的加法代替減法,即[A-B=A+B]。設(shè)置偏差[e(k)=10H]后,對設(shè)計的PID原理圖進(jìn)行仿真,仿真結(jié)果如圖7所示。
圖6 PID設(shè)計的原理圖
( 下轉(zhuǎn)第241頁)
(上接第230頁)
圖7 PID設(shè)計的原理仿真圖
把PID控制器輸出的55位數(shù)據(jù)進(jìn)行相位截斷,然后再把產(chǎn)生的16位數(shù)據(jù)輸送給DAC,最終把數(shù)字相差轉(zhuǎn)換成模擬電壓信號,從而完成對PID控制系統(tǒng)的調(diào)整。
3 結(jié)束語
本文使用FPGA設(shè)計實現(xiàn)了一個數(shù)字PID控制器,并將其應(yīng)用于數(shù)字鎖相環(huán)系統(tǒng)中,最后利用Quartus II對PID控制器進(jìn)行功能仿真,仿真結(jié)果表明數(shù)字PID控制器有效地濾除了系統(tǒng)的誤差,提高了穩(wěn)定性,改善系統(tǒng)的動態(tài)性能。
參考文獻(xiàn):
[1] 陳晉煒,周玉潔.數(shù)字PID 控制器的FPGA 實現(xiàn)及軟硬件協(xié)同仿真 [J].信息技術(shù),2005(9):38-40.
[2] 謝強.基于DPLL和DDS的高穩(wěn)頻綜研究與實現(xiàn)[D].成都:電子科技大學(xué),2007.
[3] 陶永華.新型PID控制及其應(yīng)用[M].北京:機械工業(yè)出版社,2002.
[4] 楊莉榮,王煒.基于FPGA的數(shù)字鎖相環(huán)設(shè)計[J].微計算機應(yīng)用,2009,1(30-1):68-71.
[5] 張科,靖固.利用FPGA的增量式PID控制的研究 [J].現(xiàn)代制造工程,2005(3):112-114.
[6] 高鐵紅,王誠意.基于FPGA的增量式PID控制器的研究與實現(xiàn)[J].河北工業(yè)大學(xué)學(xué)報,2011,40(5):36-38.