新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的模糊控制器管理蔗糖提取

        基于FPGA的模糊控制器管理蔗糖提取

        作者:賽靈思 時間:2016-01-27 來源:電子產品世界 收藏

          作者:Deepali Vyas 在讀碩士研究生 印度拉賈斯坦 Lakshmangarh市Mody科技大學deepalivyas100@yahoo.com

        本文引用地址:http://www.104case.com/article/201601/286359.htm

          Yogesh Misra 研究員 印度拉賈斯坦 Chittorgarh 市 Mewar 大學 yogeshmisra@yahoo.com

          H. R. Kamath 主任 印度中央邦 Indore 市 Malwa 理工學院 rskamath272@gmail.com

          采用賽靈思 Virtex-6  實現的三輸入模糊控制器可在甘蔗制糖過程中保持甘蔗水平高度。

          食糖是日常生活中廣泛使用的重要食品配料成分。全球一半以上的原糖都從甘蔗中榨取獲得。印度是僅次于巴西的世界第二大食糖生產國,從事甘蔗種植的農民及其家屬數量有 6000 萬,產值達 120 億美元。

          由于甘蔗汁的提取是非線性過程,因此我們的團隊將模糊邏輯作為改善流量的方法。Mody 科技大學 (MITS) 研究人員的分析表明,利用賽靈思  設計和實現的模糊控制器的性能優于傳統控制器。如果每天壓榨 2,500 噸甘蔗,就需要 26.6 kg/s 的流速。

          在具體研究如何實現三輸入模糊控制器之前,我們有必要了解食糖制造的基本知識。

          如何提取甘蔗

          圖 1 給出了甘蔗汁提取流程圖。甘蔗坯料是指制糖廠把從甘蔗種植者手中收購來的甘蔗進行稱重,并卸在院子內。利用起重機將甘蔗放在傳送帶上。甘蔗傳送帶不斷移動,負責將甘蔗送到食糖生產廠房內。

            

        圖 1–甘蔗汁提取流程圖

         

          圖 1–甘蔗汁提取流程圖

          甘蔗首先通過兩組旋轉切刀。切刀將甘蔗切成小段,然后撕蔗機將小段甘蔗切成小塊纖維。傾斜傳送帶將這些大約 1-2cm 的甘蔗塊送入Donnelly 榨糖機。壓榨機的兩三個壓輥對甘蔗塊進行壓榨以提取甘蔗汁。該過程在五六套壓榨機中重復進行。剩余的殘留物稱為甘蔗渣被送到鍋爐中作為燃料使用;提取的甘蔗汁需要送去凈化,然后送到蒸發器中做成蔗糖。

          待加工的甘蔗非常不均勻,在提取汁液過程中會對壓榨機效率產生不利影響,可導致壓榨機故障、停機和設備堵塞。為了獲得最佳的甘蔗汁提取效果,有必要使 Donnelly 榨糖機中的甘蔗水平面保持所需的高度。

          我們希望模糊邏輯比傳統控制器更好地改變傾斜傳送帶的速度,以消除甘蔗供給不均的問題并保持所需的甘蔗水平高度。這就是為什么我們嘗試將模糊邏輯概念引入制糖領域。

          2014 年,我們所做的第一步是設計一款雙輸入模糊控制器,用來精確監測兩個參數的變化:傾斜傳送帶上的甘蔗重量以及 Donnelly 榨糖機中的甘蔗高度。該控制器的作用是保持榨糖機中的恒定高度,以維持所需的26.6kg/s 的流速。當我們將檢測結果與傳統控制器的結果進行對比時,可清楚看到雙輸入模糊控制器的效果要好得多。由于甘蔗在輥子間被壓碎,因此我們決定在相同算法中導入第三個參數——輥速——作為實驗參數。在加入第三個參數輥速后表明,該變量與其他兩個變量同樣重要。

          因此,2014 年我們將輥速作為第三個參數。我們利用這個附加參數重新設計了算法,并使用 ® 實現。當新型三輸入控制器軟件實現方案完成后[3],下一步是實現算法和使用賽靈思  開發整個模糊系統。FPGA 這種可重編程芯片能夠對電子電路進行實時的硬件實現。這種芯片非??煽浚詢r比高,而且可在制造之前檢查電路性能。因此,賽靈思 Virtex®-6 FPGA 成為了完美的硬件實現解決方案。

          硬件設計

          圖 2 給出了三輸入模糊控制器的算法。三輸入模糊控制器的控制原理與雙輸入版本相同,只是根據三個輸入進行修改,并在  上實現。控制原理為:控制器控制重量、高度和輥速的三個速度等級,即低輥速(RL:12cm/s),中輥速(RM:14.3cm/s)和高輥速(RR:16.6cm/s)。

          在  上設計控制器后,下一步是設計用于測量輸入參數所需的硬件。稱重傳感器用于測量傾斜傳送帶上的甘蔗量。為了測量榨糖機中的甘蔗水平高度,我們在設計中添加了高度傳感器。測速發電機用于測量輥子的旋轉速度。

          稱重傳感器、高度傳感器和測速發電機的輸出僅為微伏。為了能在接下來的步驟中使用這些指標,我們必須將輸出電壓值放大成可測量的電平,也就是從微伏變為毫伏。我們使用 PSpice 上的信號調節系統來進行放大。接下來,我們利用與調節系統串聯的模數轉換器 (ADC) 將結果轉為數字值。這樣,放大后的輸入就被送到控制器中。

            

        圖 2:三輸入模糊控制器算法開發

         

          圖 2:三輸入模糊控制器算法開發

            

        圖 3:由三個點和兩個斜率定義的隸屬函數

         

          圖 3:由三個點和兩個斜率定義的隸屬函數

          五步過程

          使用賽靈思硬件的模糊控制器的 VHDL 實現過程分為五個步驟:輸入模糊化、規則評估、邏輯蘊涵、聚合和去模糊化。

          設計模糊邏輯控制器有兩種方法,即 Mamdani 和 Sugeno。Mamdani 法難度大而且非常復雜。根據研究顯示,Mamdani 方法需要通過對不斷變化的函數進行積分來得到二維形狀的幾何中心。因此,這種方法在計算上不夠高效。另一方面,而 Sugeno 設計方法則簡單得多。因此,我們采用了 Sugeno 實現方法。

          第一步是模糊化,包括將明確值轉換為模糊值,然后由隸屬函數代表。明確值為特定集;模糊值屬于特定范圍但不限于特定集內。

          三個輸入變量分別是重量、高度和輥速。使用三角隸屬函數來代表這些輸入變量。輸入參數“重量”的論域為 500kg-1,000kg,它被模糊化為 11 個三角語言變量 (LV)。輸入參數“高度”的論域為 0-180cm,它被模糊化為 7 個三角語言變量(LV)。輸入參數“輥速”的論域為 12cm/s-16.6cm/s,它被模糊化為 3 個三角語言變量(LV)。

          VHDL 代碼方面的模糊化如下所示。我們用三個點和兩個斜率定義每個隸屬函數,如圖 3 所示。使用下列等式計算上斜率(斜率 1)和下斜率(斜率 2):

          S1= (y2-y1/Point2-x1) S2= (y2-y1/x2- Point 2)

          隸屬度 (DOM) 函數 (µ) 是模糊化的下一步。我們的算法將隸屬函數分成四個部分,即 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。

          不同的隸屬度

          下一步是規則設計,以確定為響應不同隸屬度函數所采取的行動。使用簡單的 If-Then 條件構成模糊規則,其中每個先行詞 (antecedent) 都有結果。MATLAB 中的“Fuzzy Logic Toolbox”提供用以組合多個先行詞的不同運算符。我們選擇 AND 運算符將三個先行詞進行組合,因為它的多個先行詞運算最少。對于三輸入控制器而言,總共生成 231 條規則。我們為這些規則設計了一個規格表。最小值函數可以找到三個值中的最小值,即計算出三個輸入變量中的最小 DOM 值。

          我們還發現很多規則的結果是相同的。收集所有具有相同結果的規則,并使用最大值函數計算這些值中的最大數。下一步,我們收集所有具有相同結果的規則。編寫不同的最大值函數用以評估整個語言變量(LV)的最大值。

          在識別每個規則的輸出之后,最后一步是將所有輸出整合成單個值,換句話說,就是將這些值轉換為確定值。這可通過去模糊化來完成。

          去模糊化是模糊系統設計中的最后一步也是重要的一步。去模糊化的值可用來生成一個確定值,它就是傾斜電機的速度。我們所用的 Sugeno 去模糊法屬于加權平均法。在該方法中,我們將從聚合中獲得的模糊輸出與相應的單個值相乘,然后用這些值的總和除以從規則評估中獲得的所有模糊輸出(也就是聚合后獲得的值)的總和。

          VIRTEX-6 實現

          在實現以上步驟后,我們成功使用三角從屬函數和中心去模糊法設計出一種三輸入模糊控制器。程序代碼已經由作者提供。我們使用 MATLAB 7.11.0.584 版本 (R2020b) 的 Fuzzy Toolbox 仿真三輸入模糊控制器,并利用賽靈思的 ISE® Design Suite14.5 并使用 VHDL 在賽靈思 Virtex-6 FPGA上 將其實現。采樣周期為10 秒,仿真總時長為 200 秒。

          我們調差了六個不同情況下總共 756 種不同的輸入參數條件,但我們重點研究的是仿真最初階段傳送帶上甘蔗高度和甘蔗重量分別為 90cm 和 750kg 的這種情況。輥速在每次抽樣時均有所變化。表 1 給出了仿真結果。

            

        表 1–甘蔗高度在 90cm 時,每次抽樣輥速都不同。

         

          表 1–甘蔗高度在 90cm 時,每次抽樣輥速都不同。

            

        圖 4:當重量為 750kg,高度為 90cm,輥速為 16.6 cm/s 時的仿真波形

         

          圖 4:當重量為 750kg,高度為 90cm,輥速為 16.6 cm/s 時的仿真波形

          硬件實現步驟包括在我們 MITS 校園實驗室中進行的 VHDL 建模、仿真、綜合和 FPGA 實現。我們使用混合型建模方法來設計三輸入模糊控制器的 VHDL 模型,其中包括行為建模和結構建模。該設計在賽靈思的 ISim 仿真器上進行仿真。ISim 生成的波形用來驗證控制器的功能。圖4 給出了傾斜傳送帶中甘蔗重量為 750kg,Donnelly 榨糖機中甘蔗高度為 90cm,輥速為 16.6cm/s 時的仿真波形。在這些條件下,期望的傾斜電機速度為 54.2rpm (MATLAB)。去模糊化仿真結果為 36H 或 54 rpm,與 MATLAB 結果匹配,并驗證了設計。

          仿真之后,我們對設計進行綜合,以生成技術原理圖和粗略的器件利用報告。我們發現我們的設計使用了 78% 以上的 Virtex-6 Slice 查找表 (LUT),93% 的已占用 Slice,1% 的 Slice 寄存器,以及 1% 的 LUT 觸發器。

          然后,我們將 VHDL 結果與傳統控制器結果進行對比(見表 2)。對比結果表明模糊邏輯系統比傳統控制器效率更高。位于 MITS 的實驗室提供一塊用于研究的 Spartan®-6 FPGA。然而,我們發現所需的 LUT 模塊數量超出了目標器件的容量。這就是為什么我們轉而在 Virtex-6 上實現設計。但是,由于缺少資源,我們無法在實驗室中進行實時實現。下一步中,我們希望與印度國家制糖學會管理部門聯合開發整個系統,并在真實環境中驗證結果。我們已經向印度國家制糖學會交付方案演示,并收到了正面回應。我們堅信模糊邏輯概念很有可能改變制糖工業的未來。

            

        表 2–結果對比

         

          表 2–結果對比

          參考資料

          1. Y. Misra 與 H.R.Kamath 共同編撰的“為保持制糖過程中甘蔗的水平高度專門設計一種傳統模糊控制器算法”,摘自《智能系統與應用國際期刊》,期刊編號:2074-9058,第 7 卷第 1 章,2014 年 12 月

          2. Y. Misra 與 H.R.Kamath 共同編撰的“《在使用 VHDL 的 FPGA 中對三輸入傳統控制器進行實現方案與性能分析,以確保甘蔗壓榨過程中甘蔗水平高度”, 摘自《工程研究與技術國際期刊》(IJERT),期刊編號:2278-0181,第 3 卷第 9 期,2014 年 9 月

          3. Y. Misra 與 H.R.Kamath 共同編撰的“對用于保持制糖過程中甘蔗高度的三輸入模糊系統進行分析和設計”, 摘自《自動化控制雜志》(已接受),期刊編號:2372-3041

         

         

         

         

         

         



        關鍵詞: FPGA MATLAB

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 神木县| 正蓝旗| 大竹县| 江津市| 常熟市| 突泉县| 昭通市| 斗六市| 炎陵县| 咸阳市| 阿克陶县| 大田县| 邵东县| 赤壁市| 巴青县| 江津市| 隆安县| 卫辉市| 闽侯县| 宁安市| 阿瓦提县| 景宁| 双桥区| 康平县| 邯郸市| 长寿区| 宣武区| 长宁县| 利辛县| 青州市| 英超| 禹城市| 剑河县| 黑山县| 巩义市| 六枝特区| 遵化市| 新巴尔虎左旗| 福清市| 茶陵县| 连州市|