Разработка системы управления на базе нечеткой логики

Лабораторная работа №8 по курсу «Управление в технических системах»

Введение

В классической теории автоматического управления, управляющее воздействие на систему рассчитывается в зависимости от регулируемой величины, выраженной в численном виде, и система управления производит преобразование входных параметров в управляющие воздействия передаточными функциями.

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

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

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

Цель работы:

Задачи работы:

Основные теоретические сведения о системах нечеткого вывода

В теории нечетких множеств, помимо переменных численного типа, существуют лингвистические переменные с приписываемым им значениями. Множество всех возможных значений, которые может принимать лингвистическая переменная, называется терм-множеством. Каждый нечеткий терм определяется функцией принадлежности, характеризующей соответствующее терму нечеткое множество. Например, пусть переменная x обозначает температуру (x = «температура»). Для данной лингвистической переменной можно определить нечеткие множества «отрицательная», «близкая к нулю», «положительная», характеризуемые функциями принадлежности μотриц(x), μбнул(x), μполож(x).

Нечеткие правила вывода

Базовое правило вывода типа «если-то» называется нечеткой импликацией, принимающей форму:
где A и B – это лингвистические значения, определенные через функции принадлежности соответственно для x и y. Выражение «x это A» называется условием (предпосылкой), а «y это B» называется следствием (заключением).
Нечеткое рассуждение – это процедура, которая позволяет определить заключение из множества правил «если-то». Такое множество может принять вид:
Значение функции принадлежности μA(x), где x = [x1, x2, …, xN] – входной вектор, должно интерпретироваться с использованием нечетких операций и их композиций. Самые распространенные интерпретации имеют следующие формы:
  • форма логического произведения множеств, «И»:
  • форма логической суммы множеств, «ИЛИ»:

Приписывание единственного значения функции принадлежности, описывающей многомерное условие, называется агрегированием предпосылки. Каждой импликации A → B, определенной выражением, можно приписать единственное значение функции принадлежности μA → B(x, y).

Системы нечеткого вывода

Элементы теории нечетких множеств, правила импликации и нечетких рассуждений образуют систему нечеткого вывода. В общем случае система нечеткого логического вывода включает следующие этапы:
  1. Приведение к нечеткости, или фазификация – преобразование точного множества входных величин в нечеткое множество, определяемое с помощью значений функций принадлежности μA(x), соответствующих лингвистическим термам.
  2. Нечеткий логический вывод:
    1. Агрегация – определение степени истинности всех предпосылок в каждом правиле. Агрегация необходима, если в правилах больше одной предпосылки.
    2. Активация – вычисленное значение истинности для всех предпосылок каждого правила применяется к заключениям каждого правила. Это приводит к нечетким множествам, которые будут назначены каждой переменной вывода для каждого правила. На этапе активации происходит обращение к нечеткой базе правил.
  3. Аккумуляция – получение нечеткого множества для каждой из выходной переменной путем объединения нечетких множеств, полученных для каждой переменной вывода.
  4. Приведение к четкости, или дефазификация – преобразование нечеткого множества, определяемого функцией принадлежности μB(y), в конкретное значение выходной переменной y.
Описанная система нечеткого вывода называется системой типа Мамдани, ее структура представлена на рисунке (Рисунок 1).

Рисунок 1. Структура нечеткой системы с фазификатором и дефазификатором.

В данной лабораторной работе при разработке регулятора будет использоваться именно метод Мамдани, так как он является наиболее часто используемым методом реализации регуляторов на базе нечеткой логики. Система управления с нечетким регулятором, содержащим все вышеуказанные компоненты: фазификатор, механизм вывода, дефазификатор – представлена на рисунке (Рисунок 2). На вход регулятора подается сигнал ошибки, полученный в результате сравнения заданного входного сигнала с выходным сигналом системы, выходной сигнал нечеткого регулятора подается на объект управления.

Рисунок 2. Структурная схема системы управления на базе нечеткой логики.

Описание модели управления негерметичным баком на базе нечеткой логики

В данной лабораторной работе рассматривается модель системы управления негерметичным баком, которая должна поддерживать уровень воды в баке на заданном уровне.

Описание модели негерметичного бака

Схематическое представление негерметичного бака показано на рисунке (Рисунок 3). К баку подходят две трубы: через одну трубу, снабженную клапаном, вода втекает в бак, через другую – вытекает. Интенсивность потока воды, поступающей в бак, зависит от положения клапана, управляемого регулятором. Расход воды является неконтролируемым и зависит от диаметра выходной трубы (фиксированная величина) и от текущего уровня воды в баке.

Рисунок 3. Схематическое представление негерметичного бака.

На рисунке (Рисунок 3) приняты следующие обозначения: «V» – объем бака, м3; «ht» – высота бака, м; «area» – площадь сечения бака; «outarea» – площадь выходного отверстия; «overs» – положение сенсора переполнения от верхнего среза, м; «h» – уровень воды в баке, м; «rate» – расход, поступающий в бак, м3/с; «outrate» – расход утечки, м3/с.

Уравнения динамики негерметичного бака: скорость изменения объема воды в баке, расход утечки, уровень воды в баке и скорость изменения уровня воды представляются следующими дифференциальными и алгебраическими уравнениями:
где g = 9.81 м/с2 – ускорение свободного падения.

Описание модели клапана

С помощью клапана происходит управление расходом воды, поступающей в бак. На вход подается значение скорости открытия/закрытия клапана, интеграл от которой по времени равен положению клапана и принимает значение от 0 до 1, где:
  • «0» – клапан закрыт – расход равен нулю;
  • «1» – клапан открыт – расход равен номинальному, заданному как константа.

Выходное значение – расход воды, поступающий в бак, «rate», рассчитывается как произведение номинального расхода на значение положения клапана.

Если понимать под выходной (регулируемой) переменной уровень воды, а под регулирующим элементом – клапан, то можно отметить, что подобный объект регулирования, с точки зрения его математического описания, является динамическим и существенно нелинейным.

Описание модели нечеткого регулятора

Управление положением клапана осуществляется посредством нечеткого регулятора (Рисунок 4). Алгоритм управления представляет собой систему нечеткого вывода типа Мамдани, определяющую скорость открытия/закрытия клапана на основании сигналов, поступающих на вход регулятора: разницы между фактическим и целевым уровнем воды баке и скорости изменения уровня.

Рисунок 4. Схематическое представление системы управления уровнем воды в баке.

Регулятор представляет собой систему нечеткого вывода, которая включает следующие компоненты: фазификатор, механизм вывода, дефазификатор.

Для приведения к нечеткости (фазификации) входных переменных необходимо задать терм-множества для каждой входной переменной и функции принадлежности, определяющие эти нечеткие множества. Для входной лингвистической переменной «разница уровней» терм-множество будет иметь следующие значения:
  1. отрицательная,
  2. близкая к нулю,
  3. положительная.

Таким образом, если разница между фактическим и целевым уровнем воды в баке отрицательная, то есть фактический уровень ниже целевого, то необходимо увеличить расход воды, поступающей в бак; если разница положительная, то есть фактический уровень превышает целевой, то необходимо ограничить подачу воды в бак; если разница близкая к нулю, то есть фактический уровень соответствует целевому или отличается на малую величину, то изменять положение клапана не надо, но если при этом уровень воды изменяется с некоторой скоростью, то для определения скорости открытия/закрытия клапана необходимо учесть вторую переменную – «скорость изменения уровня».

Переменная «скорость изменения уровня» будет иметь термы:
  1. уменьшается,
  2. не изменяется,
  3. увеличивается.

Итак, если разница уровней близкая к нулю и скорость изменения уровня уменьшается, то необходимо медленно увеличивать поток поступающей в бак воды, а если скорость увеличивается, то необходимо медленно уменьшать поток воды, поступающей в бак.

Для составления базы правил на основе этих утверждений необходимо задать терм-множество и, для дефазификации, соответствующие функции принадлежности для выходной переменной нечеткой системы – скорости открытия/закрытия клапана. Выходная лингвистическая переменная «команда клапана» будет иметь следующие термы:
  1. закрывать быстро,
  2. закрывать медленно,
  3. не менять,
  4. открывать медленно,
  5. открывать быстро.

Функции принадлежности, определяющие нечеткие множества для входных переменных будут задаваться как функции принадлежности Гаусса, для выходной переменной – как треугольные функции принадлежности.

База правил, необходимая для построения нечеткого логического вывода по формированию команд управления клапаном, в соответствии с утверждениями и заданными терм-множествами, имеет следующий вид:
  1. ЕСЛИ «разница уровней» = «отрицательная», ТО «команда клапана» = «открывать быстро»;
  2. ЕСЛИ «разница уровней» = «близкая к нулю», TO «команда клапана» = «не изменять»;
  3. ЕСЛИ «разница уровней» = «положительная», TO «команда клапана» = «закрывать быстро»;
  4. ЕСЛИ «разница уровней» = «близкая к нулю» И «скорость изменения уровня» = «уменьшается», ТО «команда клапана» = «открывать медленно»;
  5. ЕСЛИ «разница уровней» = «близкая к нулю» И «скорость изменения уровня» = «увеличивается», ТО «команда клапана» = «закрывать медленно».

Выполнение лабораторной работы

Содержание лабораторной работы

В данной лабораторной работе будет:
  • разработана модель негерметичного бака;
  • разработана модель клапана;
  • разработана модель нечеткого регулятора как системы нечеткого вывода типа Мамдани;
  • проведено моделирование системы управления негерметичным баком;
  • построены графики зависимости уровня воды в баке и расхода обратного тока от времени;
  • произведено сравнение графиков целевого и фактического уровня воды в баке.

Разработка модели негерметичного бака

Для создания нового проекта необходимо выполнить следующие действия:
  1. В главном окне SimInTech нажать левой кнопкой мыши на кнопку «Файл» и выбрать пункт «Новый проект».
  2. В выпадающем меню выбрать пункт «Схема модели общего вида».
  3. Сохранить проект, оставив имя по умолчанию или указать желаемое имя проекта.

Разработка моделей негерметичного бака, клапана и нечеткого регулятора будет производиться в отдельных субмоделях для удобства организации блоков по моделям. После разработки всех моделей они будут объединены в общую модель системы управления.

Для разработки модели негерметичного бака необходимо добавить в рабочую область окна проекта блок «Субмодель» из вкладки «Субструктуры» и задать к нему подпись согласно рисунку (Рисунок 5).

Рисунок 5. Окно проекта с блоком «Субмодель» с подписью «Бак».

Двойным нажатием левой кнопкой мыши по блоку «Субмодель» открыть рабочую область субмодели для разработки модели негерметичного бака. В рабочую область блока «Субмодель» поместить следующие блоки:
  • 1 блок «Порт входа» и 3 блока «Порт выхода» из вкладки «Субструктуры» – данные блоки предназначены для соединения внешней части схемы со схемой, находящейся внутри субмодели;
  • 1 блок «Интегратор с ограничением» и 1 блок «Язык программирования» из вкладки «Динамические», 2 блока «Усилитель» и 1 блок «Сравнивающее устройство» из вкладки «Операторы» – данные блоки моделируют работу негерметичного бака.
Разместить блоки на схеме, соединить линиями связи, задать имена входных и выходных портов и задать подписи к блокам согласно рисунку (Рисунок 6).

Рисунок 6. Рабочая область субмодели со структурной схемой модели негерметичного бака.

Параметры геометрии негерметичного бака и его начальный уровень жидкости будут описываться в скрипте проекта, а уравнения динамики бака будут задаваться в блоках «Интегратор с ограничением», «Усилитель» и «Язык программирования». Для установки параметров бака необходимо открыть окно «Скрипт страницы» и задать параметры моделируемого негерметичного бака, указанные в описании модели (раздел «Описание модели управления негерметичным баком на базе нечеткой логики»), согласно рисунку (Рисунок 7). После ввода всего текста скрипта нажать на кнопку «Закрыть и применить» для принятия изменений и закрытия окна редактора.

Рисунок 7. Окно «Скрипт страницы».

После задания параметров моделируемого негерметичного бака необходимо реализовать модель наполнения бака водой и утечки воды из бака, описание которой в виде систем алгебраических и обыкновенных дифференциальных уравнений представлено в разделе «Описание модели управления негерметичным баком на базе нечеткой логики». Заполненный объем бака будет определяться с помощью блока «Интегратор с ограничением»: объем воды в баке рассчитывается в блоке как интеграл по времени от входного сигнала – расхода воды, поступающего в бак, при заданных начальных условиях и ограничении – максимально возможного значения объема воды в баке. Для задания формул расчета начального объема воды в баке и максимально возможного объема воды необходимо открыть окно «Свойства» блока «Интегратор с ограничением» и задать формулы свойствам согласно рисунку (Рисунок 8).

Рисунок 8. Окно «Свойства» блока «Интегратор с ограничением».

Уровень воды в баке будет рассчитываться с помощью блока «Усилитель» с подписью «Уровень в баке». Для задания формулы расчета уровня воды необходимо открыть окно «Свойства» блока «Усилитель» с подписью «Уровень в баке» и задать формулу свойства «Коэффициент усиления» согласно рисунку (Рисунок 9). Уровень воды в баке рассчитывается как отношение значения текущего объема воды, определенного с помощью блока «Интегратор с ограничением», к площади сечения бака.

Рисунок 9. Окно «Свойства» блока «Усилитель» с подписью «Уровень в баке».

Далее необходимо реализовать формулы расчета утечки воды из бака. Для этого необходимо двойным нажатием левой кнопкой мыши по блоку «Язык программирования» открыть текстовый редактор и реализовать формулу расчета утечки воды из бака в текстовом виде согласно рисунку (Рисунок 10). После ввода всего текста скрипта нажать на кнопку «Закрыть и применить» для принятия изменений в блоке «Язык программирования» и закрытия окна редактора.

Рисунок 10. Окно редактора блока «Язык программирования».

После закрытия окна текстового редактора блока «Язык программирования» названия портов блока изменятся согласно заданным в скрипте переменным. Поскольку подписи портов перекрываются, необходимо изменить размеры блока. Для изменения размера блока необходимо одинарным нажатием левой кнопкой мыши выбрать блок и навести курсор мыши на край блока. Курсор мыши изменится на курсор «Изменение размера по диагонали» согласно рисунку (Рисунок 11).

Рисунок 11. Рабочая область субмодели с выделенным блоком «Язык программирования».

Захватить край блока одинарным нажатием левой кнопкой мыши и потянуть в сторону для изменения размера блока «Язык программирования» согласно рисунку (Рисунок 12).

Рисунок 12. Рабочая область субмодели с измененным размером блока «Язык программирования».

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

Рисунок 13. Рабочая область окна проекта с увеличенным блоком «Субмодель» с подписью «Бак».

Разработка модели клапана

Далее необходимо создать модель клапана, с помощью которого будет регулироваться поток воды, поступающий в бак. Для этого в рабочую область окна проекта требуется поместить блок «Субмодель» из вкладки «Субструктуры» и задать подпись согласно рисунку (Рисунок 14).

Рисунок 14. Окно проекта с установленным блоком «Субмодель» с подписью «Клапан».

Для создания модели клапана необходимо двойным нажатием левой кнопки мыши по блоку «Субмодель» с подписью «Клапан» войти в субмодель и поместить в рабочую область субмодели следующие блоки:
  • 2 блока «Порт входа» и 1 блок «Порт выхода» из вкладки «Субструктуры» – данные блоки предназначены для соединения внешней части схемы со схемой, находящейся внутри субмодели;
  • 1 блок «Интегратор с ограничением» из вкладки «Динамические» и 1 блок «Перемножитель» из вкладки «Операторы» – данные блоки моделируют работу клапана.
Соединить блоки линиями связи и задать названия портов входов и выхода субмодели согласно рисунку (Рисунок 15).

Рисунок 15. Рабочая область субмодели с подписью «Клапан» с установленными блоками и заданными названия портов.

На вход блока подаются два сигнала – команда клапана и номинальный расход воды, поступающий через клапан. Команда клапана представляет собой числовое значение скорости открытия/закрытия клапана. С помощью блока «Интегратор с ограничением» рассчитывается положение задвижки как интеграл от скорости по времени и принимает значение от 0 до 1, где 0 – клапан закрыт, 1 – клапан полностью открыт. Выходной сигнал блока – расход воды, поступающий в бак, рассчитывается путем перемножения полученного значения положения клапана с номинальным расходом: закрытому клапану соответствует нулевой расход воды, полностью открытому клапану соответствует номинальный расход.

После создания модели клапана необходимо выйти из субмодели и изменить размер блока «Субмодель» с подписью «Клапан», чтобы не перекрывались названия входных и выходных портов блока, согласно рисунку (Рисунок 16).

Рисунок 16. Окно проекта с измененным размером блока «Субмодель» с подписью «Клапан».

Разработка модели нечеткого регулятора

Далее требуется создать модель нечеткого регулятора, с помощью которого будет определяться команда клапана. Для этого необходимо в рабочую область окна проекта поместить блок «Субмодель» из вкладки «Субструктуры» и задать подпись согласно рисунку (Рисунок 17).

Рисунок 17. Окно проекта с установленным блоком «Субмодель» с подписью «Нечеткий регулятор».

Для создания модели нечеткого регулятора необходимо войти в субмодель с подписью «Нечеткий регулятор» и поместить в рабочую область субмодели следующие блоки:
  • 2 блока «Порт входа» и 1 блок «Порт выхода» из вкладки «Субструктуры» – данные блоки предназначены для соединения внешней части схемы со схемой, находящейся внутри субмодели;
  • 2 блока «Демультиплексор» из вкладки «Векторные» – данный блок позволяет разделить векторный входной сигнал на отдельные выходные сигналы;
  • 1 блок «Мультиплексор» из вкладки «Векторные» – данный блок обеспечивает поочередную передачу на один выходной порт нескольких входных сигналов;
  • 2 блока «НЛ – Фазификация – Фазификация Гаусса» из вкладки «Нечеткая логика» – данные блоки предназначены для фазификации входных сигналов, то есть для преобразования точных множеств входных величин в нечеткие множества, определяемые с помощью значений функций принадлежности μA(error), μA(dh), соответствующих заданным лингвистическим термам;
  • 3 блока «НЛ – Операции – Импликация», 2 блока «НЛ – Операции – И (конъюнкция)» из вкладки «Нечеткая логика» – данные блоки предназначены для формирования механизма вывода на основе заданной в разделе «Описание модели управления негерметичным баком на базе нечеткой логики» базы правил;
  • 1 блок «НЛ – Нечеткий вывод – Треугольная функция» из вкладки «Нечеткая логика» – данный блок предназначен для дефазификации выходной переменной, то есть для преобразования нечеткого множества, определяемого функцией принадлежности μB(valve cmd), в конкретное значение выходной переменной «valve cmd».
Расположить блоки, задать названия портов входов и выхода согласно рисунку (Рисунок 18).

Рисунок 18. Рабочая область субмодели с подписью «Нечеткий регулятор» с установленными блоками.

Перед соединением блоков в соответствии с правилами нечеткого логического вывода и с заданной базой правил, необходимо задать подписи к блокам согласно рисунку (Рисунок 19). Если подписи к блокам перекрывают друг друга, необходимо изменить положение блоков так, чтобы перекрытия не было. Подписи к блокам «Демультиплексор» и «Мультплексор» обозначают соответствие между номерами выходных и входных портов и лингвистических термов. Так, первому выходному порту верхнего блока «Демультиплексор» будет соответствовать лингвистический терм «отрицательная», а первому входному порту блока «Мультиплексор» – терм «закрывать быстро».

Рисунок 19. Рабочая область субмодели с подписью «Нечеткий регулятор» с заданными подписями к блокам.

Требуется изменить количество выходных и входных портов блоков «Демультиплексор» и «Мультиплексор» в соответствии с количеством термов, указанных в подписях к блокам. Для этого необходимо открыть окно «Свойства» одного из блоков «Демультиплексор» и задать значение свойства согласно рисунку (Рисунок 20). Блок «Демультиплексор» предназначен для разделения векторного входного сигнала на три отдельных выходных сигнала.

Рисунок 20. Окно «Свойства» блока «Демультиплексор».

После закрытия окна и сохранения свойств, появится третий выходной порт блока «Демультиплексор». Необходимо повторить действие для второго блока «Демультиплексор».

Для изменения количества входных портов блока «Мультиплексор» необходимо открыть окно «Свойства» блока «Мультиплексор» и задать значение свойства «Количество портов» равным «5» (Рисунок 21). Блок «Мультиплексор» предназначен для поочередной передачи на один выходной порт пяти входных сигналов.

Рисунок 21. Окно «Свойства» блока «Мультиплексор».

После закрытия окна и сохранения свойств, у блока «Мультиплексор» будет пять входных портов.

После подготовки блоков, необходимо соеденить блоки линиями связи в соответствии с заданной базой правил согласно рисунку (Рисунок 22):
  1. ЕСЛИ «разница уровней» = «отрицательная», ТО «команда клапана» = «открывать быстро»;
  2. ЕСЛИ«разница уровней» = «близкая к нулю», TO «команда клапана» = «не изменять»;
  3. ЕСЛИ «разница уровней» = «положительная», TO «команда клапана» = «закрывать быстро»;
  4. ЕСЛИ «разница уровней» = «близкая к нулю» И «скорость изменения уровня» = «уменьшается», ТО «команда клапана» = «открывать медленно»;
  5. ЕСЛИ «разница уровней» = «близкая к нулю» И «скорость изменения уровня» = «увеличивается», ТО «команда клапана» = «закрывать медленно».

Рисунок 22. Рабочая область субмодели с подписью «Нечеткий регулятор» с блоками, соединенными линиями связи.

Теперь схема соответствует заданной базе правил.

После соединения блоков необходимо задать свойства, определяющие функции принадлежности нечетких множеств, соответствующих входным и выходным переменным, то есть задать свойства фазификаторов и дефазификатора. Для этого необходимо открыть окно «Свойства» блока «НЛ – Фазификация – Фазификация Гаусса» с подписью «Разница уровней» и задать значения свойств согласно рисунку (Рисунок 23).

Рисунок 23. Окно «Свойства» блока «НЛ – Фазификация – Фазификация Гаусса» с подписью «Разница уровней».

Далее необходимо открыть окно «Свойства» блока «НЛ – Фазификация – Фазификация Гаусса» с подписью «Скорость изменения уровня» и задать значения свойств согласно рисунку (Рисунок 24).

Рисунок 24. Окно «Свойства» блока «НЛ – Фазификация – Фазификация Гаусса» с подписью «Скорость изменения уровня».

После этого необходимо открыть окно «Свойства» блока «НЛ – Нечеткий вывод – Треугольная функция» и задать значения свойств согласно рисунку (Рисунок 25).

Рисунок 25. Окно «Свойства» блока «НЛ – Нечеткий вывод – Треугольная функция».

После завершения настройки схемы модели нечеткого регулятора необходимо выйти из субмодели и изменить размер блока с подписью «Нечеткий регулятор» согласно рисунку (Рисунок 26).

Рисунок 26. Окно проекта с увеличенным блоком «Субмодель» с подписью «Нечеткий регулятор».

Объединение моделей в систему управления негерметичным баком на базе нечеткой логики

Разработка модели

После создания моделей негерметичного бака, клапана и нечеткого регулятора необходимо связать субмодели в общую модель системы управления уровнем в негерметичном баке для проведения моделирования и построения графиков зависимости уровня воды в баке и расхода обратного тока от времени. Для этого необходимо добавить в рабочую область окна проекта следующие блоки:
  • 1 блок «Меандр» из вкладки «Источники» – данный блок позволяет задавать целевой уровень воды с определенной периодичностью;
  • 1 блок «Константа» из вкладки «Источники» – данный блок позволяет задать номинальный расход воды, поступающий в бак;
  • 1 блок «Сравнивающее устройство» из вкладки «Операторы» – данный блок предназначен для вычисления разницы между фактическим и целевым уровнем воды в баке;
  • 2 блока «Временной график» из вкладки «Вывод данных» – данные блоки выводят значения результатов моделирования в виде графиков.
Расположить блоки на схеме и задать подписи согласно рисунку (Рисунок 27).

Рисунок 27. Окно проекта с установленными блоками и заданными подписями.

Так как требуется построить графики не только фактического уровня воды, но и целевого, и сравнить их, необходимо чтобы эти графики были построены в одном окне. Для этого требуется изменить количество входных портов блока «Временной график» с подписью «Графики уровня воды в баке». Необходимо открыть окно «Свойства» блока «Временной график» и задать значение свойства «Количество входных портов» равным «2» (Рисунок 28).

Рисунок 28. Окно «Свойства» блока «Временной график» с подписью «Графики уровня воды в баке».

После закрытия окна и сохранения свойств количество входных портов блока станет равным двум.

Соединить блоки линиями связи согласно рисунку (Рисунок 29).

Рисунок 29. Окно проекта с соединенными блоками.

Для формирования целевого уровня необходимо открыть окно «Свойства» блока «Меандр» и задать значения свойств согласно рисунку (Рисунок 30). Данный блок генерирует периодический прямоугольный импульсный сигнал с амплитудой 1 и полупериодом 20 секунд.

Рисунок 30. Окно «Свойства» блока «Меандр».

Далее необходимо задать номинальный расход воды, поступающий в бак. Для этого необходимо открыть окно «Свойства» блока «Константа» и задать значение свойства «Значение» согласно рисунку (Рисунок 31).

Рисунок 31. Окно «Свойства» блока «Константа».

Настройка параметров расчета

После настройки схемы, перед началом моделирования, необходимо настроить параметры расчета. Так как полупериод изменения целевого уровня был задан равным «20», то для моделирования и построения графиков на протяжении нескольких периодов требуется изменить параметры расчета проекта, увеличив длительность интервала модельного времени, при котором выполняется моделирование, а для ускорения расчета требуется увеличить максимальный шаг интегрирования. Для этого необходимо открыть окно «Параметры расчета» и во вкладке «Параметры расчета» в поле «Значение» задать значения параметров «Максимальный шаг» и «Конечное время расчета» согласно рисунку (Рисунок 32).

Рисунок 32. Окно «Параметры проекта» с выделенными параметрами, которые необходимо изменить.

Закрыть окно «Параметры расчета», при этом внесенные изменения сохраняются.

Запуск моделирования и построение графиков

После настройки проекта для построения графиков необходимо запустить процесс моделирования и дождаться окончания расчета.

После этого необходимо изменить оформление окон, в которых отображаются графики. Требуется задать название графиков и осей. Для этого:
  1. Открыть окно «Свойства графика» блока «Временной график» с подписью «Графики уровня воды в баке» и на вкладке «График и оси» в поле «Название графика» задать значение первому графику «График целевого уровня воды», второму графику «График фактического уровня воды», в колонке «Ось Y» задать значение свойства «Название оси» равным «Уровень h, м» (Рисунок 33).

    Рисунок 33. Окно «Свойства графика» блока «Временной график» с подписью «Графики уровня воды в баке» с выделенными свойствами, которые необходимо изменить.

  2. На вкладке «Общие» ввести в поле «Заголовок» название графика «Графики уровня воды в баке» (Рисунок 34).

    Рисунок 34. Окно «Свойства графика» блока «Временной график» с подписью «Графики уровня воды в баке», вкладка «Общие».

Для сохранения изменений и закрытия окна необходимо нажать кнопку «Ok». График должен выглядеть согласно рисунку (Рисунок 35).

Рисунок 35. Графики целевого и фактического уровня воды в баке.

График целевого уровня воды действительно представляет собой импульсы с полупериодом 20 секунд, значения которых изменятся с 1.5 м до 0.5 м и обратно. График фактического уровня воды достаточно плавно стремится к графику целевого уровня. В результате анализа полученных графиков установлено, что модель работает корректно.

После этого необходимо оформить окно, в котором построен график расхода обратного тока. Для этого:
  1. Открыть окно «Свойства графика» блока «Временной график» с подписью «График расхода обратного тока» и задать на вкладке «Графики и оси» название оси Y согласно рисунку (Рисунок 36).

    Рисунок 36. Окно «Свойства графика» блока «Временной график» с подписью «График расхода обратного тока» с выделенным свойством, которое необходимо изменить.

  2. На вкладке «Общие» в поле «Заголовок» изменить название графика на «График расхода обратного тока» и отключить свойство «Показывать легенду» (Рисунок 37).

    Рисунок 37. Окно «Свойства графика» блока «Временной график» с подписью «График расхода обратного тока», вкладка «Общие», с выделенным свойством, которое необходимо изменить.

Сохранить изменения и закрыть окно нажатием кнопки «Ok».

График должен выглядеть согласно рисунку (Рисунок 38).

Рисунок 38. График расхода обратного тока.

В результате анализа полученного графика установлено, что график полностью соответствует ожидаемым результатам: переменная «outrate» в момент времени 20 секунд приближенно равна «0.271», что согласуется с теоретическим значением, рассчитанным по формуле для значения уровня воды в тот же момент времени, равного «1.5 м»:

Заключение

В ходе данной лабораторной работы была разработана модель системы управления негерметичным баком с регулятором, основанным на системе нечеткого вывода типа Мамдани. Были построены графики зависимости уровня воды в баке от времени и расхода обратного тока от времени, а также произведено сравнение графиков целевого и фактического уровня воды в баке. В результате математического моделирования была проверена корректность работы модели системы управления негерметичным баком на базе нечеткой логики.