如何使用Simulink模糊控制


在用這個控制器之前,需要用readfis指令將fuzzy1.fis加載到matlab的工作空間,比如我們用這樣的指令:fis1=readfis(‘fis1.fis’);就創建了一個叫myFLC的結構體到工作空間,並在fuzzy logic controller中參數設為:fis1。

可以看到,在模糊控制器的輸入和輸出均有一個比例系數,我們叫它量化因子,它反映的是模糊論域范圍與實際范圍之間的比例關系,例如,模糊控制器輸入輸出的論域范圍均為[-3,3],而實際誤差的范圍是[-10,10],誤差變化率范圍是[-100,100],控制量的范圍是[-24,24],那么我們就可以算出量化因子分別為0.3,0.03,8。量化因子的選取對於模糊控制器的控制效果有很大的影響,因此要根據實際情況認真選取哦。

好,現在我們可以設定仿真步長,比如定步長的10ms,就可以運行了。

運行后,產生這樣一個錯誤:

MinMax blocks do not accept 'boolean' signals. The input signal(s) of block 'test_fuzzy/Fuzzy Logic  Controller/FIS Wizard/Defuzzification1/Max (COA)' must be one of the MATLAB 'uint8', 'uint16', 'uint32', 'int8', 'int16', 'int32', 'single', or 'double' data types

我想很多朋友做模糊控制的時候都會遇到這個情況。沒關系,這里提供兩個解決辦法:

1.直接在Defuzzification1這個模塊中的那個比較環節后加入數據類型轉換模塊,將boolean轉化為double型,或者雙擊那個比較模塊,選中show additional parameters,將輸出數據類型改為specify via dialog,然后選uint(8)即可;但是在仿真之后,又會發現很多地方都存在這個問題,因此你不得不一個一個去修改,如果你不怕累的話。

2.第二個方法是最簡單的,直接在simulation parameters->advanced將boolean logic signals選為off,強烈推薦你用這個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM