楊亮 吳占友 張汝彬 邵奎志
摘要:在FPGA實(shí)現(xiàn)九點(diǎn)控制器的算法設(shè)計(jì)中,引入四個(gè)輔助變量,可以降低復(fù)雜邏輯判斷過(guò)程。文章以高溫加熱爐控制對(duì)象為例,在分析了對(duì)象數(shù)學(xué)模型特征的基礎(chǔ)上,忽略三個(gè)無(wú)關(guān)工況,只選取六個(gè)工況作為有效參數(shù),使FPGA頂層電路的設(shè)計(jì)結(jié)構(gòu)得以優(yōu)化。將工況K0引入偏差的動(dòng)態(tài)控制,有效消除了輸出波動(dòng),有利于改善控制器的穩(wěn)定性能。實(shí)驗(yàn)證明,在設(shè)定值為300℃的條件下,系統(tǒng)穩(wěn)態(tài)誤差小于2℃,上升時(shí)間短,控制輸出穩(wěn)定。FPGA九點(diǎn)控制器的新型設(shè)計(jì)方法具有算法簡(jiǎn)單,易于實(shí)現(xiàn)的優(yōu)點(diǎn)。
關(guān)鍵詞:FPGA;九點(diǎn)控制器;溫度控制;加熱爐;相平面圖
中圖分類號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-2374(2012)03-0040-04
一、概述
九點(diǎn)控制器是近年來(lái)提出的一種新型智能控制器,其特點(diǎn)是不需要復(fù)雜的數(shù)學(xué)運(yùn)算,實(shí)現(xiàn)形式靈活多樣。目前,九點(diǎn)控制器的研究和應(yīng)用都是建立在單片機(jī)等微處理器(MCU)基礎(chǔ)上的。傳統(tǒng)的控制算法中,PID控制是目前工業(yè)控制中應(yīng)用最廣泛的一種,其主要弱點(diǎn)是在線性控制性能上未能很好地解決系統(tǒng)性能指標(biāo)中穩(wěn)定性、準(zhǔn)確性與快速性之間的矛盾,參數(shù)整定困難,對(duì)象參數(shù)變化敏感,魯棒性不強(qiáng)。模糊控制特別適合于模擬專家對(duì)數(shù)學(xué)模型未知的、復(fù)雜的、非線性系統(tǒng)的控制,但控制規(guī)則相對(duì)較多,而且主要憑經(jīng)驗(yàn)進(jìn)行設(shè)計(jì),再通過(guò)實(shí)驗(yàn)反復(fù)調(diào)整,測(cè)試過(guò)程很費(fèi)時(shí)。相比之下,九點(diǎn)控制器的控制策略是一種邏輯控制,是根據(jù)系統(tǒng)的偏差和偏差變化率進(jìn)行控制的,不必預(yù)知控制系統(tǒng)的精確數(shù)學(xué)模型。作為一種新型控制技術(shù),九點(diǎn)控制器能夠按照系統(tǒng)輸出的變化調(diào)整系統(tǒng)增益,具有結(jié)構(gòu)簡(jiǎn)單、靈活方便、易于實(shí)現(xiàn)、適應(yīng)性強(qiáng)等特點(diǎn)。目前片上控制器設(shè)計(jì)正在成為芯片應(yīng)用的新熱點(diǎn)。在控制器實(shí)現(xiàn)方式中,微處理器雖然應(yīng)用十分普遍,能夠?qū)崿F(xiàn)各類控制算法,但其不足之處是由于參與了代碼的運(yùn)行控制,相對(duì)運(yùn)算速度不夠快、復(fù)位不夠可靠、有產(chǎn)生程序計(jì)數(shù)器跑飛的風(fēng)險(xiǎn)等。本文以FPGA為開(kāi)發(fā)平臺(tái),提出一種九點(diǎn)控制器片上控制單元的新型設(shè)計(jì)方法,該方法經(jīng)過(guò)簡(jiǎn)化后,能使FPGA設(shè)計(jì)過(guò)程簡(jiǎn)化,易于實(shí)現(xiàn)。
二、九點(diǎn)控制器的控制策略
九點(diǎn)控制器是根據(jù)系統(tǒng)的偏差e和偏差變化率(簡(jiǎn)稱“偏差率”)進(jìn)行控制的,又叫基本型邏輯控制器。九點(diǎn)控制器組成的控制系統(tǒng)結(jié)構(gòu)如圖1
所示:
圖1九點(diǎn)控制器的控制系統(tǒng)組成
在圖1中,r為設(shè)定值,c為控制系統(tǒng)的輸出量,即系統(tǒng)被控量。e為偏差,是設(shè)定值r與系統(tǒng)輸出量的差值,即e=r-c。uc為九點(diǎn)控制器的輸出,是根據(jù)系統(tǒng)的偏差e和偏差率的狀況決定的。當(dāng)前時(shí)刻k時(shí)的偏差率為k時(shí)刻偏差與前一時(shí)刻(k-1)時(shí)刻偏差的差值除以相鄰兩時(shí)刻間的時(shí)間長(zhǎng)度,即采樣周期T,如式(1)所示:
(1)
由于采樣過(guò)程中采樣周期固定不變,為簡(jiǎn)化運(yùn)算過(guò)程,本設(shè)計(jì)中用偏差變化量來(lái)代替偏差變化率,如式(2)所示:
(2)
九點(diǎn)控制器根據(jù)偏差e和偏差率將系統(tǒng)的動(dòng)態(tài)過(guò)程劃分成九種工作狀況,簡(jiǎn)稱“工況”,每種工況對(duì)應(yīng)控制器的一種輸出uc。九種控制輸出相互協(xié)調(diào)作用,使系統(tǒng)的輸出穩(wěn)定在期望值上。九點(diǎn)控制器的九種工況可以用圖2所示的相平面圖來(lái)表示,相平面圖是分析九點(diǎn)控制器的基本工具。
圖2由偏差e和偏差變化率組成的相平面圖
在圖2中,橫軸和縱軸分別為偏差e和偏差率,L1、L2所夾的區(qū)域構(gòu)成偏差變化率零帶,二者所在位置的大小為分別±;L3、L4所夾的區(qū)域構(gòu)成偏差零帶,二者所在位置的大小分別為±e0。L1、L2、L3、L4四條線將整個(gè)相平面劃分成九個(gè)區(qū)域,分別對(duì)應(yīng)九點(diǎn)控制器的九種控制力。九點(diǎn)控制器的控制原則為:偏差e為正則輸出增大;偏差e為零則輸出保持;偏差e為負(fù)則輸出減小??刂破鬏敵觯?/p>
uc=Ki, i=0, 1±, 2±, 3±, 4± (3)
式(3)中Ki為工況輸出,對(duì)應(yīng)的九種取值分別為K4+、K3+、K2+、K1+、K4-、K3-、K2-、K1-、K0,對(duì)應(yīng)工況號(hào)分別為Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ九個(gè)區(qū)的控制輸出量。根據(jù)九點(diǎn)控制器的控制原則可知,九個(gè)工況參數(shù)Ki之間滿足如下關(guān)系:
K4+≥K3+≥K2+≥K1+≥K0≥K1-≥K2-≥K3-≥K4-
由圖2可見(jiàn),當(dāng)e0和取較小值時(shí),系統(tǒng)在Ⅸ區(qū)的偏差和偏差率都接近于零,因此Ⅸ區(qū)是系統(tǒng)的期望工況。九點(diǎn)控制器的控制目標(biāo)就是使系統(tǒng)的工況從其他區(qū)穩(wěn)定到Ⅸ區(qū)??梢?jiàn),e0越小,系統(tǒng)的穩(wěn)態(tài)誤差越小,而越小,則要求系統(tǒng)的跟蹤性能越好。
三、FPGA設(shè)計(jì)九點(diǎn)控制器的方法
九點(diǎn)控制器控制策略的核心思想是利用輸入的偏差和偏差率的工況,決策相適應(yīng)的輸出量,而不依賴于對(duì)象的數(shù)學(xué)模型,其控制過(guò)程具有很強(qiáng)的邏輯性。因此,選擇FPGA設(shè)計(jì)九點(diǎn)控制器能夠充分發(fā)揮其數(shù)字邏輯設(shè)計(jì)的優(yōu)勢(shì),有利于簡(jiǎn)化控制算法。根據(jù)九點(diǎn)控制器的原理,將FPGA設(shè)計(jì)過(guò)程分為計(jì)算偏差、計(jì)算偏差變化率及決策控制輸出三個(gè)步驟。
1.偏差e的計(jì)算。由于當(dāng)前時(shí)刻k時(shí)的偏差為e(k)=r-c(k),對(duì)于FPGA來(lái)說(shuō)只要一個(gè)減法器便可實(shí)現(xiàn)。設(shè)在FPGA設(shè)計(jì)中當(dāng)前時(shí)刻為n,則有:
E(n)=R-C(n)=R+NOT{C(n)}+Cin(4)
式(4)中NOT為取反運(yùn)算,Cin為進(jìn)位,由于是減法運(yùn)算,所以此處Cin應(yīng)為1。式中偏差E(n)可能為負(fù)數(shù),為了運(yùn)算方便,避免因?yàn)閿?shù)據(jù)極性的混淆而產(chǎn)生錯(cuò)誤,特別地給這些變量增加一個(gè)符號(hào)位,其中,用‘0表示正數(shù),‘1表示負(fù)數(shù)。一般的,設(shè)定值和實(shí)際值都是正數(shù),所以此時(shí)有:
E(n)=R-C(n)={0,R}+NOT{0,C(n)}+
Cin(5)
2.偏差變化率的計(jì)算。對(duì)于k時(shí)刻的偏差率,,其中e(k)、e(k-1)分別為k時(shí)刻和(k-1)時(shí)刻的偏差。將e(k)通過(guò)寄存器延遲一個(gè)采樣周期后便得到e(k-1),然后通過(guò)FPGA減法器的運(yùn)算便得到偏差變化率。同理,e(k)和e(k-1)均含符號(hào)位。
3.決策控制輸出uc。系統(tǒng)的工況是控制算法的依據(jù),根據(jù)控制域的工況,輸出相應(yīng)的控制量。判斷工況即判斷e(k)和所在的區(qū)間,即判斷二者分別與±e0和±作比較的大小。在FPGA中,各種運(yùn)算和數(shù)據(jù)都是靠硬件實(shí)現(xiàn)的。例如,要比較-1和0的大小,在FPGA中-1是用補(bǔ)碼表示的,如果直接比較會(huì)得到-1>0這個(gè)錯(cuò)誤結(jié)果。因此,在FPGA中作數(shù)據(jù)比較時(shí),應(yīng)將作比較的數(shù)據(jù)都設(shè)置一個(gè)符號(hào)位,先由符號(hào)位判斷數(shù)據(jù)的正負(fù),然后再比較同符號(hào)數(shù)據(jù)的大小。
在FPGA的九點(diǎn)控制器設(shè)計(jì)中,判斷工況是一個(gè)復(fù)雜過(guò)程,可以設(shè)置四個(gè)輔助變量以簡(jiǎn)化判斷過(guò)程。令當(dāng)前時(shí)刻x1(k)=e(k)+e0、x2(k)=e(k)-e0、x3(k)=+、x4(k)=-。在FPGA設(shè)計(jì)中,令當(dāng)前時(shí)刻為n,將上述四個(gè)輔助變量算式轉(zhuǎn)換后的描述如下:
(6)
式(6)中,X1(n)、X2(n)用來(lái)判斷偏差的大小,X3(n)、X4(n)用來(lái)判斷偏差變化率的范圍。E(n)、、E0、均含有符號(hào)位,且數(shù)據(jù)位數(shù)相同。因此,可以根據(jù)X1(n)、X2(n)、X3(n)、X4(n)的符號(hào)位來(lái)判斷E(n)與±E0、與±比較的大小。例如,式(6)中有:
X1(n)=E(n)+E0=E(n)-(-E0)(7)
根據(jù)公式(7)則可以推斷偏差的工況,即:
IFX1(n)符號(hào)位為‘1
THENX1(n)<0 //即E(n)<(-E0)
IFX1(n)符號(hào)位為‘0
THENX1(n)≥0//即E(n)≥(-E0)
可見(jiàn),F(xiàn)PGA設(shè)計(jì)將九點(diǎn)控制器的控制算法轉(zhuǎn)化為只需判斷X1(n)、X2(n)、X3(n)、X4(n)的符號(hào)位,即可知道E(n)與±E0及與±的比較大小的過(guò)程,依此推斷系統(tǒng)當(dāng)前時(shí)刻所處的工況,決策相應(yīng)的輸出控制量,算法簡(jiǎn)潔、易用。設(shè)Uout為控制器輸出變量,X1(n)、X2(n)、X3(n)、X4(n)均為12位數(shù)據(jù),其表達(dá)式如式(6)所示。FPGA設(shè)計(jì)九點(diǎn)控制器的推斷算法描述如下:
IF X1[11]=1//符號(hào)位為‘1,X1為負(fù)數(shù)
THENUout=0 //控制器在Ⅴ~Ⅶ區(qū)輸出為0
ELSE IF X2[11]=0且X2≠0
IF X3[11]=1
THEN Uout=K2+//在Ⅲ區(qū)的輸出為K2+
ELSE IFX4[11]=0且X4≠0
THEN Uout=K4+//在Ⅰ區(qū)的輸出為K4+
ELSEUout=K3+ //在Ⅱ區(qū)的輸出為K3+
依此類推,即可推斷每個(gè)工況的輸出量。工況分析過(guò)程中的判斷次數(shù)原來(lái)最多為15次,采用輔助變量后減少到最多9次。
四、FPGA九點(diǎn)控制器系統(tǒng)的實(shí)現(xiàn)與測(cè)試
如圖3所示是以FPGA九點(diǎn)控制器作為核心部件,設(shè)計(jì)實(shí)現(xiàn)的一個(gè)單閉環(huán)爐溫控制系統(tǒng)。
圖3基于FPGA的爐溫控制系統(tǒng)組成結(jié)構(gòu)
圖3所示的控制系統(tǒng)擴(kuò)展了數(shù)據(jù)通信接口,其作用除了將編譯的程序代碼下載輸入到FPGA芯片中外,更主要的是通過(guò)RS232串口電路接口實(shí)現(xiàn)FPGA九點(diǎn)控制器與計(jì)算機(jī)的通信,進(jìn)行數(shù)據(jù)的保存和分析;溫度采集模塊輸入端采用K型熱電偶為測(cè)溫元件,輸出標(biāo)準(zhǔn)電壓信號(hào)給AD轉(zhuǎn)換,然后產(chǎn)生12位溫度數(shù)據(jù)傳送給九點(diǎn)控制器;繼電器控溫模塊通過(guò)PWM方式控制固態(tài)繼電器的通斷來(lái)達(dá)到調(diào)節(jié)加熱功率的目的;人機(jī)接口包括鍵盤和顯示兩部分,用于控制器的起??刂坪蜏囟蕊@示等人機(jī)交互的操作;時(shí)鐘控制模塊用于將系統(tǒng)時(shí)鐘分頻并產(chǎn)生定時(shí)采樣信號(hào);控制器的輸出應(yīng)限制在一定的幅度內(nèi),以保證控制邏輯輸出的信號(hào)在物理設(shè)備承受范圍之內(nèi)。
實(shí)驗(yàn)中以高溫加熱爐作為溫度控制對(duì)象,被控對(duì)象數(shù)學(xué)模型的傳遞函數(shù)可描述為:
(8)
由式(8)可見(jiàn),被控對(duì)象的比例系數(shù)為1.21,時(shí)間常數(shù)為1480s,純滯后時(shí)間為8.64s,即控制對(duì)象為一階、純滯后、慣性系統(tǒng)。當(dāng)溫度變化范圍較大時(shí),被控對(duì)象模型的參數(shù)隨之發(fā)生變化,因此系統(tǒng)還具有時(shí)變性和非線性。通常的溫控要求上升時(shí)間盡可能短,超調(diào)量小或者無(wú)超調(diào),穩(wěn)定。
由于加熱爐降溫為自然冷卻方式,降溫速度慢,為保證最小超調(diào)控制,當(dāng)出現(xiàn)超調(diào)的時(shí)候,應(yīng)迅速減小控制器輸出,使系統(tǒng)回復(fù)到控制零帶,減少調(diào)節(jié)時(shí)間;而九點(diǎn)控制器九個(gè)工況輸出中K1-、K2-、K3-、K4-所對(duì)應(yīng)的工況表示系統(tǒng)響應(yīng)有超調(diào)或者有產(chǎn)生超調(diào)的趨勢(shì),因此這里設(shè),
K1-=K2-=K3-=K4-=0(9)
式(9)表示控制器在這四個(gè)工況的輸出量為0,以避免被控對(duì)象產(chǎn)生大的超調(diào)。可看作K1-、K2-、K3-及K4-所對(duì)應(yīng)的工況合并為一個(gè)工況,從而原來(lái)的九個(gè)狀態(tài)簡(jiǎn)化為六個(gè)。算法改進(jìn)后的相平面圖如圖4所示。合并工況后,判斷工況的邏輯判斷次數(shù)由原來(lái)的8次減少為6次,同時(shí)FPGA的設(shè)計(jì)質(zhì)量得以優(yōu)化。
由九點(diǎn)控制器的特性可知,偏差零帶越小,系統(tǒng)的穩(wěn)態(tài)性能相對(duì)越好,因此選擇偏差零帶e0=1;根據(jù)加熱爐的加熱特性選擇偏差變化率零帶=2。設(shè)控制器輸出信號(hào)的幅值為100,以式(8)的加熱爐數(shù)學(xué)模型應(yīng)用Matlab仿真。
圖4 九點(diǎn)控制算法改進(jìn)后的相平面圖
由于九點(diǎn)控制器各參數(shù)中對(duì)穩(wěn)態(tài)性能起主要作用的是K3+和K0,因此首要確定這兩個(gè)參數(shù)的值大小。如表1所示為測(cè)試中選取的典型一組仿真參數(shù)和兩組實(shí)測(cè)參數(shù)的對(duì)比情況。
1 2 100 36 33 30 24+2e
根據(jù)控制器的各項(xiàng)參數(shù)對(duì)控制性能的影響進(jìn)行仿真測(cè)試。當(dāng)K0=25,K3+=36時(shí),Matlab的仿真如圖5(a)所示,其穩(wěn)態(tài)控制效果是最理想的;K1+、K2+值的大小位于K0和K3+之間,分別選為30、33;K4+選為最大值100。將仿真整定的參數(shù)作為背景數(shù)據(jù)。
實(shí)驗(yàn)測(cè)試中環(huán)境溫度約為25℃,作為初始值。加熱爐的工作溫度約為200℃~600℃,采集周期為2秒,K型熱電偶測(cè)量精度為5‰,溫度設(shè)定值為300℃,AD轉(zhuǎn)換分辨率為12位,得到的階躍響應(yīng)曲線如圖5(b)所示。由圖可知,得到的溫度曲線超調(diào)量為4℃,誤差為3℃,系統(tǒng)輸出不穩(wěn)定,輸出值在偏差零帶上限上下波動(dòng)。由測(cè)試分析可知,控制器在K0區(qū)域內(nèi)的作用力偏大,即K0值應(yīng)當(dāng)減小。為了避免系統(tǒng)輸出在偏差零帶內(nèi)上下波動(dòng),改進(jìn)K0區(qū)域內(nèi)輸出為動(dòng)態(tài)的控制策略,即在K0工況內(nèi)偏差為正時(shí),控制器輸出稍大;偏差為負(fù)時(shí),控制器輸出稍小,因此可選取當(dāng)前時(shí)刻K0(k)的大小滿足e(k)為線性關(guān)系如下所示:
K0(k)=24+2e(k) (10)
(a)(b)(c)
圖5爐溫控制實(shí)驗(yàn)系統(tǒng)仿真和實(shí)測(cè)時(shí)的階躍響應(yīng)曲線
依據(jù)式(10)再次進(jìn)行溫控測(cè)試,得到的階躍響應(yīng)曲線如圖5(c)所示??梢?jiàn),改變后的K0(k)使系統(tǒng)輸出的超調(diào)量?jī)H1℃,系統(tǒng)能夠穩(wěn)態(tài)輸出,誤差小于2℃。同時(shí),系統(tǒng)上升時(shí)間變化不大。算法改進(jìn)前后的K0取值及控制性能指標(biāo)如表2所示:
五、結(jié)論
1.基于FPGA九點(diǎn)控制器的設(shè)計(jì)過(guò)程中,采用將控制算法轉(zhuǎn)化為偏差、偏差變化率與工況之間的邏輯關(guān)系的設(shè)計(jì)思想,可以發(fā)揮FPGA邏輯設(shè)計(jì)的優(yōu)勢(shì)。
2.優(yōu)化FPGA設(shè)計(jì)。優(yōu)化設(shè)計(jì)中引入了四個(gè)輔助變量,并采用增加符號(hào)位來(lái)簡(jiǎn)化九點(diǎn)控制器復(fù)雜的工況判斷過(guò)程,大大提高了算法的執(zhí)行效率。
3.進(jìn)行工況分析,化簡(jiǎn)工況參數(shù)。根據(jù)高溫加熱爐控制對(duì)象的模型特征,將工況輸出合并為六個(gè),使得FPGA的邏輯設(shè)計(jì)結(jié)構(gòu)進(jìn)一步簡(jiǎn)化,降低了設(shè)計(jì)
成本。
4.由于系統(tǒng)控制的穩(wěn)態(tài)性能與K0并非為恒定關(guān)系,而可以看作與當(dāng)前時(shí)刻的輸入偏差近似成線性關(guān)系,因此提出采用動(dòng)態(tài)計(jì)算工況K0(k)的方法來(lái)減小系統(tǒng)輸出波動(dòng)。
將FPGA設(shè)計(jì)的九點(diǎn)控制器應(yīng)用于具有一階純滯后慣性特性的高溫加熱爐的升溫控制過(guò)程,設(shè)定溫度為300℃。測(cè)試結(jié)果表明,系統(tǒng)輸出的超調(diào)量為1℃,穩(wěn)態(tài)誤差小于2℃,上升時(shí)間約為360秒,控制參數(shù)滿足預(yù)期目標(biāo)要求,控制效果令人滿意。
參考文獻(xiàn)
[1]劉教瑜,劉江鋒.一種新的延遲系統(tǒng)的控制方法[J].武漢理工大學(xué)學(xué)報(bào),2003,25(10).
[2]蘇義鑫,張尉,張南綸.九點(diǎn)五態(tài)控制器及其仿真研究
[J].武漢理工大學(xué)學(xué)報(bào),2003,25(2).
[3]于海東,陳東雷.CPLD/FPGA在數(shù)字系統(tǒng)設(shè)計(jì)中的應(yīng)用前景[J].電機(jī)電器技術(shù),2003,(4).
[4]譚思云,徐武雄.九點(diǎn)控制器穩(wěn)態(tài)性能分析[J].武漢理工大學(xué)學(xué)報(bào),2002,24(10).
[5]YUEN FONG CHAN,M MOALLEM,WEI WANG. Design and Implementation of Modular FPGA-Based PID Controllers[A].IEEE Transactions on Industrial Electronics,2007,54(4).
[6]楊素英,張忠賢,李垂君.九點(diǎn)控制器在電阻爐溫控制的研究和仿真[J].控制工程,2007,14(S3).
[7]譚思云,周建中.一種新型的智能控制器——九點(diǎn)控制器[J].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2003,31(12).
作者簡(jiǎn)介:楊亮(1982-),男,河北保定人,海洋石油工程股份有限公司助理工程師。
(責(zé)任編輯:趙秀娟)