在 MATLAB 上設(shè)計控制器后,下一步是設(shè)計用于測量輸入?yún)?shù)所需的硬件。稱重傳感器用于測量傾斜傳送帶上的甘蔗量。為了測量榨糖機中的甘蔗水平高度,我們在設(shè)計中添加了高度傳感器。測速發(fā)電機用于測量輥子的旋轉(zhuǎn)速度。
稱重傳感器、高度傳感器和測速發(fā)電機的輸出僅為微伏。為了能在接下來的步驟中使用這些指標(biāo),我們必須將輸出電壓值放大成可測量的電平,也就是從微伏變?yōu)楹练?。我們使?PSpice 上的信號調(diào)節(jié)系統(tǒng)來進行放大。接下來,我們利用與調(diào)節(jié)系統(tǒng)串聯(lián)的模數(shù)轉(zhuǎn)換器 (ADC) 將結(jié)果轉(zhuǎn)為數(shù)字值。這樣,放大后的輸入就被送到控制器中。
?
圖 2:三輸入模糊控制器算法開發(fā)
?
圖 3:由三個點和兩個斜率定義的隸屬函數(shù)
五步過程
使用賽靈思硬件的模糊控制器的 VHDL 實現(xiàn)過程分為五個步驟:輸入模糊化、規(guī)則評估、邏輯蘊涵、聚合和去模糊化。
設(shè)計模糊邏輯控制器有兩種方法,即 Mamdani 和 Sugeno。Mamdani 法難度大而且非常復(fù)雜。根據(jù)研究顯示,Mamdani 方法需要通過對不斷變化的函數(shù)進行積分來得到二維形狀的幾何中心。因此,這種方法在計算上不夠高效。另一方面,而 Sugeno 設(shè)計方法則簡單得多。因此,我們采用了 Sugeno 實現(xiàn)方法。
第一步是模糊化,包括將明確值轉(zhuǎn)換為模糊值,然后由隸屬函數(shù)代表。明確值為特定集;模糊值屬于特定范圍但不限于特定集內(nèi)。
三個輸入變量分別是重量、高度和輥速。使用三角隸屬函數(shù)來代表這些輸入變量。輸入?yún)?shù)“重量”的論域為 500kg-1,000kg,它被模糊化為 11 個三角語言變量 (LV)。輸入?yún)?shù)“高度”的論域為 0-180cm,它被模糊化為 7 個三角語言變量(LV)。輸入?yún)?shù)“輥速”的論域為 12cm/s-16.6cm/s,它被模糊化為 3 個三角語言變量(LV)。
VHDL 代碼方面的模糊化如下所示。我們用三個點和兩個斜率定義每個隸屬函數(shù),如圖 3 所示。使用下列等式計算上斜率(斜率 1)和下斜率(斜率 2):
S1= (y2-y1/Point2-x1) S2= (y2-y1/x2- Point 2)
隸屬度 (DOM) 函數(shù) (μ) 是模糊化的下一步。我們的算法將隸屬函數(shù)分成四個部分,即 Segment-1(μ=0),Segment-2{(Input - point 1)* slope 1},Segment-3{(Input-point 2)* slope 2} 以及 Segment-4 (μ=0)。DOM 值計算如下:
? 如果輸入值 < Point 1 (Segment 1),那么 DOM =0。
? 如果輸入值 ≤ Point 2,且 ≥ Point 1 (Segment 2),那么 DOM = (Input-Point 1) * Slope 1。
? 如果輸入值 ≤ Point 3,且 ≥ Point 1 (Segment 3),那么 DOM = FF- (Input–Point 2) * Slope 2。
? 如果輸入值 ≥ Point 3 (Segment 4),那么 DOM = 0。
不同的隸屬度
下一步是規(guī)則設(shè)計,以確定為響應(yīng)不同隸屬度函數(shù)所采取的行動。使用簡單的 If-Then 條件構(gòu)成模糊規(guī)則,其中每個先行詞 (antecedent) 都有結(jié)果。MATLAB 中的“Fuzzy Logic Toolbox”提供用以組合多個先行詞的不同運算符。我們選擇 AND 運算符將三個先行詞進行組合,因為它的多個先行詞運算最少。對于三輸入控制器而言,總共生成 231 條規(guī)則。我們?yōu)檫@些規(guī)則設(shè)計了一個規(guī)格表。最小值函數(shù)可以找到三個值中的最小值,即計算出三個輸入變量中的最小 DOM 值。
我們還發(fā)現(xiàn)很多規(guī)則的結(jié)果是相同的。收集所有具有相同結(jié)果的規(guī)則,并使用最大值函數(shù)計算這些值中的最大數(shù)。下一步,我們收集所有具有相同結(jié)果的規(guī)則。編寫不同的最大值函數(shù)用以評估整個語言變量(LV)的最大值。
在識別每個規(guī)則的輸出之后,最后一步是將所有輸出整合成單個值,換句話說,就是將這些值轉(zhuǎn)換為確定值。這可通過去模糊化來完成。
去模糊化是模糊系統(tǒng)設(shè)計中的最后一步也是重要的一步。去模糊化的值可用來生成一個確定值,它就是傾斜電機的速度。我們所用的 Sugeno 去模糊法屬于加權(quán)平均法。在該方法中,我們將從聚合中獲得的模糊輸出與相應(yīng)的單個值相乘,然后用這些值的總和除以從規(guī)則評估中獲得的所有模糊輸出(也就是聚合后獲得的值)的總和。
VIRTEX-6 實現(xiàn)
在實現(xiàn)以上步驟后,我們成功使用三角從屬函數(shù)和中心去模糊法設(shè)計出一種三輸入模糊控制器。程序代碼已經(jīng)由作者提供。我們使用 MATLAB 7.11.0.584 版本 (R2020b) 的 Fuzzy Toolbox 仿真三輸入模糊控制器,并利用賽靈思的 ISE? Design Suite14.5 并使用 VHDL 在賽靈思 Virtex-6 FPGA上 將其實現(xiàn)。采樣周期為10 秒,仿真總時長為 200 秒。
我們調(diào)差了六個不同情況下總共 756 種不同的輸入?yún)?shù)條件,但我們重點研究的是仿真最初階段傳送帶上甘蔗高度和甘蔗重量分別為 90cm 和 750kg 的這種情況。輥速在每次抽樣時均有所變化。表 1 給出了仿真結(jié)果。
?
表 1–甘蔗高度在 90cm 時,每次抽樣輥速都不同。
評論