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