Контроль температуры в душе

Эта модель показывает, как реализовать нечеткую систему вывода (FIS) в модели Simulink®.

Модель Simulink

Модель контролирует температуру душа с помощью реализованного использования системы нечеткого вывода блока Fuzzy Logic Controller. Откройте модель shower.

open_system('shower')

Для этой системы вы управляете скоростью потока жидкости и температурой душа путем корректировки клапанов горячей и холодной воды.

С тех пор существует два входных параметров для нечеткой системы, модель конкатенирует входные сигналы с помощью блока Mux. Вывод блока Mux соединяется с входом блока Fuzzy Logic Controller. Точно так же эти два выходных сигнала получены с помощью блока Demux, соединенного с контроллером.

Нечеткая система вывода

Нечеткая система задана в объекте FIS, fisMatrix, в рабочей области MATLAB®. Для получения дополнительной информации о том, как задать FIS в блоке Fuzzy Logic Controller, смотрите Контроллер Нечеткой логики.

Два входных параметров к нечеткой системе являются температурной погрешностью, temp, и ошибкой скорости потока жидкости, flow. Каждый вход имеет три функции принадлежности.

figure
plotmf(fisMatrix,'input',1)
figure
plotmf(fisMatrix,'input',2)

Два выходных параметров нечеткой системы являются уровнем, на котором клапаны холодной и горячей воды открываются или закрываются, cold и hot соответственно. Каждый вывод имеет пять функций принадлежности.

figure
plotmf(fisMatrix,'output',1)
figure
plotmf(fisMatrix,'output',2)

Нечеткая система имеет девять правил для корректировки клапанов горячей и холодной воды на основе потока и температурных погрешностей. Правила настраивают общую скорость потока жидкости на основе ошибки потока и настраивают относительные горячие и холодные скорости потока жидкости на основе температурной погрешности.

fisMatrix.Rules
ans = 

  1x9 fisrule array with properties:

    Description
    Antecedent
    Consequent
    Weight
    Connection

  Details:
                                  Description                          
         ______________________________________________________________

    1    "temp==cold & flow==soft => cold=openSlow, hot=openFast (1)"  
    2    "temp==cold & flow==good => cold=closeSlow, hot=openSlow (1)" 
    3    "temp==cold & flow==hard => cold=closeFast, hot=closeSlow (1)"
    4    "temp==good & flow==soft => cold=openSlow, hot=openSlow (1)"  
    5    "temp==good & flow==good => cold=steady, hot=steady (1)"      
    6    "temp==good & flow==hard => cold=closeSlow, hot=closeSlow (1)"
    7    "temp==hot & flow==soft => cold=openFast, hot=openSlow (1)"   
    8    "temp==hot & flow==good => cold=openSlow, hot=closeSlow (1)"  
    9    "temp==hot & flow==hard => cold=closeSlow, hot=closeFast (1)" 

Симуляция

Модель моделирует контроллер с периодическими изменениями в заданных значениях температуры воды и скорости потока жидкости.

set_param('shower/flow scope','Open','on','Ymin','0','Ymax','1')
set_param('shower/temp scope','Open','on','Ymin','15','Ymax','30')
sim('shower',50)

Скорость потока жидкости отслеживает заданное значение хорошо. Температура также отслеживает свое заданное значение, хотя существуют температурные отклонения, когда контроллер настраивает, чтобы соответствовать новому заданному значению потока.

bdclose('shower') % Closing model also clears its workspace variables.

Смотрите также

Блоки

Похожие темы