基于模糊邏輯設(shè)計的DSP發(fā)動機控制器
越來越多企業(yè)開始使用變速驅(qū)動發(fā)動機來減少能源的消耗。這需要通過從微分(PID)控制器轉(zhuǎn)向基于模糊邏輯算法的系統(tǒng)來簡化設(shè)計,縮短開發(fā)時間,并消除復(fù)雜的數(shù)學(xué)公式。
但是,這對發(fā)動機提出了新的挑戰(zhàn)。當(dāng)使用傳統(tǒng)的積分和微分(PID)控制器來控制無刷直流(BLDC)電機的速度是復(fù)雜的,因為它們依賴于復(fù)雜的數(shù)學(xué)模型,并且是計算密集型的。而使用模糊邏輯(FL)的算法,可以消除設(shè)計過程對復(fù)雜的數(shù)學(xué)公式的依賴,并且提供一個容易理解的解決方案。與(PID)微分控制器相比,模糊邏輯(FL)發(fā)動機控制還有一個優(yōu)勢,那就是開發(fā)周期更短。本文討論了采用德州儀器c28xx定點DSP系列,實現(xiàn)用模糊邏輯算法來控制無刷直流電動機的過程。
無刷直流電機控制模型的發(fā)展
在模糊邏輯(FL)發(fā)動機構(gòu)建之前,我們必須首先建立一個模型作為設(shè)計的基礎(chǔ)。模糊邏輯控制器使用啟發(fā)式知識,并使用一個語言描述模型來表達它的設(shè)計。我們將以PID控制器模型為出發(fā)點,而不是從頭開始開發(fā)一個模型。一旦完成開發(fā)和實現(xiàn),模糊邏輯控制器將通過調(diào)整其參數(shù)來提高性能。
一般來說,開發(fā)模糊邏輯無刷直流控制器有三個設(shè)計步驟:
1.定義輸入、輸出控制器的操作范圍。
2.定義模糊成員集的功能和規(guī)則。
3.調(diào)整引擎。
第一步是定義模式相關(guān)的輸入和輸出。輸入是誤差(E),它是設(shè)置的速度(SS)和當(dāng)前的速度(CS)之間的當(dāng)前誤差;另外的輸入是誤差的變化(CE),它是當(dāng)前誤差和以前計算誤差(PE)之間的差值。輸出是電樞電壓(CV)的改變值,它是現(xiàn)有的電樞電壓(CAV)和以前的電樞電壓(PAV)保存值的差額。由此產(chǎn)生的模型方程式如下:
E=SS-CS
CE=E-PE
CV=CAV-PAV
發(fā)動機旋轉(zhuǎn)速單位為轉(zhuǎn)每分鐘(RPM),E決定了接近目標(biāo)速度的程度。因此,當(dāng)E>0,發(fā)動機的旋轉(zhuǎn)速度低于設(shè)定的速度;當(dāng)E<0,電機旋轉(zhuǎn)速度超過設(shè)定的速度。CE決定控制器的調(diào)整方向。當(dāng)且僅當(dāng)(iff)目前的旋轉(zhuǎn)速度比設(shè)定的速度要低時CE為正,;當(dāng)且僅當(dāng)目前的旋轉(zhuǎn)速度大于設(shè)定的速度時,CE 為負(fù)。當(dāng)接近設(shè)定速度時,CE就會在正的和負(fù)的值之間來回調(diào)整。CV是電樞的供電電壓。這個電壓表示為脈沖的寬度調(diào)制(PWM)占空比。
下一步是定義模糊集的成員函數(shù)、變量和規(guī)則。為了保證能工作,非模糊(清晰)輸入和輸出必須轉(zhuǎn)化成模糊的。轉(zhuǎn)換由使用語言變量來表示輸入和輸出范圍。這些也被稱為模糊變量。模糊變量用于為成員函數(shù)劃分隸屬值的區(qū)域。例如,5個變量用來映射輸入和輸出,它們是中等負(fù)值(NM)、小負(fù)值(NS)、零(z)、小正值(PS)、中等正值(PM)。
它不是數(shù)學(xué)公式,模糊控制器使用模糊規(guī)則來作出決定,并產(chǎn)生一個輸出。模糊規(guī)則是通過IF-THEN語句的形式來描述的。模糊規(guī)則決定系統(tǒng)的行為,而不是復(fù)雜的數(shù)學(xué)方程。例如,如果錯誤(E)是等于中等負(fù)值(NM),而錯誤的變化(CE)等于小正值 (PS),那么在電樞電壓(CV)的改變就等于小負(fù)值(NS)。所用的一些規(guī)則是根據(jù)設(shè)計者的經(jīng)驗和系統(tǒng)的知識來設(shè)定的。因此,我們的系統(tǒng)所使用的規(guī)則的數(shù)量是25個。
為了激活電樞,CV模糊輸出必須被轉(zhuǎn)換回清晰輸出。這個過程稱為去模糊化。一種流行的去模糊方法稱為重心法。
設(shè)計的最后一步是調(diào)整成員函數(shù)和規(guī)則。這個階段也稱為優(yōu)化調(diào)整階段。優(yōu)化調(diào)整用于提高模糊控制器的性能。一旦設(shè)計完成,控制器就將準(zhǔn)備付諸實現(xiàn)。
模糊邏輯控制器的實現(xiàn)是由三個模塊組成的。它們分別是模糊化、規(guī)則部署和去模糊化。以下各節(jié)討論模糊邏輯無刷直流電動機相關(guān)模塊的實現(xiàn)情況。
模糊化
模糊化是將有明晰數(shù)值的數(shù)據(jù)轉(zhuǎn)換成模糊數(shù)據(jù)的過程。由此產(chǎn)生的模糊數(shù)據(jù)的轉(zhuǎn)換是基于對輸入變量的模糊隸屬度。對于這種應(yīng)用,電機控制輸入變量是旋轉(zhuǎn)誤差 (Error)和旋轉(zhuǎn)誤差差值(Cerror)。旋轉(zhuǎn)誤差(Error)是從一個采樣時間到下一個采樣時間的絕對旋轉(zhuǎn)速度差。同樣地,旋轉(zhuǎn)誤差差值 (Cerror)是一個采樣時間和下一個采樣時間之間的旋轉(zhuǎn)誤差變化值。公式如下:
旋轉(zhuǎn)誤差(Error)=SetSpeed(設(shè)定速度)-Cur-rentSpeed(目前速度)
旋轉(zhuǎn)誤差差值(Cerror)=旋轉(zhuǎn)誤差(Error)-Pre-viousError(前一次誤差)
正如前面談到的,為旋轉(zhuǎn)誤差(Error)變量和旋轉(zhuǎn)誤差差值(Cerror)變量定義了五個成員集:
1.NM:中等負(fù)值
2.NS:小負(fù)值
3.ZE:零
4.PS:小正值
5.PM:中等正值
圖1顯示了為旋轉(zhuǎn)誤差(Error)變量和旋轉(zhuǎn)誤差差值(Cerror)變量定義的五個成員集。這些成員集是三角型重疊,以提供良好的響應(yīng)。每一組有一個0×1AAA的最大值。
輸入變量模糊化后產(chǎn)生了由五部分組成的向量,這五個部分相對應(yīng)于模糊化成員集的中等負(fù)值、小負(fù)值、零、小正值、中等正值。每個組件對應(yīng)的Y軸的值代表該明晰輸入值的隸屬度。向量含有旋轉(zhuǎn)誤差(Error)和旋轉(zhuǎn)誤差差值(Cerror)模糊化值被表示為數(shù)組×1[]和X2[]。
圖2和圖3圖形化地顯示了旋轉(zhuǎn)誤差[Error)和旋轉(zhuǎn)誤差差值(Cerror)模糊化值。
模糊推理規(guī)則
模糊推理規(guī)則通過操作模糊化數(shù)據(jù)來確定系統(tǒng)的行為。具體來說,模糊化數(shù)據(jù)對照規(guī)則表進行應(yīng)用。在語言方面,這就是輸入數(shù)據(jù)Error、Cerror與規(guī)則表進行比較。規(guī)則表中包含了成員集NM、NS、ZE、PS、和PM,并根據(jù)控制面來操作。輸出是通過有效“推斷”或“既定”的規(guī)則。推理過程的描述見如下偽代碼清單:
去模糊化
去模糊化是將模糊數(shù)據(jù)轉(zhuǎn)換成明晰數(shù)據(jù)的過程。為了這個應(yīng)用目的,去模糊化后的值確定用于驅(qū)動電機的PWM信號的占空比。占空比取決于使用修改后的質(zhì)心計算功能。在這里采用的去模糊方法是用質(zhì)心計算函數(shù)乘以一個系數(shù)。修改后的計算也稱為質(zhì)心點計算函數(shù)。質(zhì)心點的計算公式為:
Defuzzified VaLue=∑-Y[i]XmultCoeff[l]/∑Y[i]
其中Y[i]的i即為輸出向量元素,是multCoeff[i]的輸出成員集應(yīng)乘以的系數(shù)。其中,i可取1~5。公式計算結(jié)果即為去模糊化后的結(jié)果。
圖4通過圖形顯示了被該應(yīng)用使用的輸出成員集與[-0x10,-0x8,0x0,0x8,0x10]系數(shù)。
假設(shè),y[]=[0x0,0x13F,0x196A,0x0,0x0],則去模糊輸出值如下:
Defuz=0×(-16)+319×(-8)+6506×(0)+0×(8)+0×(16)/0+319+6506+0+0=-2552/6825=“-0.37391
圖5顯示為輸出向量y[]質(zhì)心點的計算結(jié)果。
硬件描述
eZDSP2812 板被用在這種電機控制應(yīng)用中。eZdsp板的核心是TMS320F2812數(shù)字信號處理器。該板使用定時器T1、20kHz的時鐘,產(chǎn)生PWM1-6的信號,并使用定時器T2來執(zhí)行中斷服務(wù)例程(ISR)。此外,輸入捕捉引腳CAP1-3是用來收集霍爾效應(yīng)傳感器高速數(shù)據(jù)的。
發(fā)動機是由 DSP產(chǎn)生的PWM信號驅(qū)動的。這六個PWM信號被用來作為三相功率變換器的源。功率變換器將這六個信號轉(zhuǎn)換為三相位信號,并直接作為發(fā)動機的電源。三相功率變換器的功能由一個輔助電機控制電路板來處理。頻譜數(shù)字提供了兩個能夠提供這種功能的電路板:DMC550和DMC1500。其中任何一塊都可直接插入eZdsp28xx板上使用。
霍爾效應(yīng)傳感器用于模糊邏輯控制回路反饋。對三相功率變換器開關(guān)的轉(zhuǎn)換是通過檢測從霍爾效應(yīng)傳感器接收到的信號來決定的。該信號被送入TMS320F2812的采集針內(nèi)。實際電機速度的計算是通過一個軟件模塊來計數(shù)的。
軟件介紹
電動機控制軟件是由數(shù)字微型電路(DMC)庫模塊和FL電動機控制程序組成的。數(shù)字微型電路(DMC)庫中有七個模塊被使用在此應(yīng)用程序中。它們是:
·Datalog數(shù)據(jù)記錄
·BLDC3PWM
·tall3_Drv
·Mod6_Cnt
·Rmp2Cntl
·Rarnp_Cntl
·Speed_PR
此外,模糊邏輯發(fā)動機控制是由一個主要FuzzyCtl()例程來處理的;對于無刷直流電動機就是Fuzzy-BLDC()。
該軟件首先是進行首次運行配置,然后進行應(yīng)用程序特定的設(shè)置。具體來說,GPIO引腳被配置為CAPture和PWM引腳。
下一步是進行定時器和模塊參數(shù)的初始化,以及ISR的設(shè)置。當(dāng)所有外設(shè)設(shè)置完成,中斷被激活,進入主要操控系統(tǒng)。主要操控系統(tǒng)每隔8.7毫秒調(diào)用一次模糊控制器。
誤差值被轉(zhuǎn)換成通過模糊化的模糊值被存儲在X1[]和X2[]。一旦轉(zhuǎn)換,模糊值被應(yīng)用于模糊推理規(guī)則。
從推理模塊得到的結(jié)果存儲在Y[]中。從Y[]得到的輸出在去模糊化模塊中被轉(zhuǎn)換成明晰值。由此產(chǎn)生的明晰值是一種PWM偏移量,該偏移量被添加到當(dāng)前的 PWM占空比上。更新后的PWM值被檢查,看看是否新的值是在一定范圍內(nèi),如果不是就將采取適當(dāng)行動。最后,模糊控制器返回更新后的PWM占空比給調(diào)用例程。
圖6顯示了演示應(yīng)用程序調(diào)試環(huán)節(jié)。
通道1和2(在右上角顯示窗口)分別顯示了PWM計數(shù)器和捕獲霍爾效應(yīng)傳感器。通道3和4(在通道1和2下方)顯示邊沿觸發(fā)PWM的計數(shù)器和霍爾效應(yīng)傳感器的顯示窗口的版本。監(jiān)視窗口中顯示重要變量,其中,最重要的是SetSpeed(設(shè)置速度)和CurrentSpeed(當(dāng)前速度)。這些值足夠接近,使得模糊邏輯控制器的輸出為零。
這次會話表明發(fā)動機是在無負(fù)載條件下運行的。此行為可能會和有負(fù)荷時的情形略有不同。此外,如果想要更細的粒度,可能有必要對控制器進行調(diào)整。