Создание логики работы состояния

Осуществите двойной клик по блоку состояния «выключен», внутренняя структура блока по умолчанию изображена на рисунке (Рисунок 1):

Рисунок 1. Внутренняя структура блока «Состояние автомата»

Внутренняя структура по умолчанию содержит блок «Условие выполнения субмодели» в верхней части схемы. Данный блок получает команду на активацию состояния из структуры верхнего уровня («блок выбора состояний» ), пользователю не нужно менять данный блок.

Кроме этого, блок содержит два блока входа-выхода специального вида:

  1. «FROM_STATE» - вход в состояние;
  2. «TO_STATE» - выход из состояния;

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

Схема работы автоматов предусматривает для состояния включен один выход (при совпадении двух условий, выключен в течении 40 секунд и температура меньше заданной), но возврат в состояние возможен по двум условиям: либо работа нагревателя в течении 20 секунд, либо достижения заданной температуры. Добавьте на схему блок «Вход состояния» из закладки «Конечные автоматы» (см. Рисунок 2).

Рисунок 2. Закладка «Конечные автоматы» блок «Вход состояния»

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

Рисунок 3. Закладка «Субструктуры» блок «Порт входа»

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

Рисунок 4. Закладка «Субструктуры» блок «Порт выхода»

Измените название порта «Вход» на «Cold». Здесь будет переменная сравнения измеренной температуры с заданной, а название порта «Выход» на «On/Off» - здесь мы будем считывать признак включения и выключения нагревателя.

Общая схема, подготовленная к созданию логики состояния, представлена на рисунке (Рисунок 5).

Рисунок 5. Блок «Состояние автомата», подготовленный к созданию логики

В выключенном состоянии автомат должен находится в течение 40 секунд и если через данный промежуток времени температура воды меньше заданной (вход Cold=1), необходимо перейти в состояние "включен". Для формирования задержки используем блок «Блок выдержки состояния» (см. Рисунок 6).

Рисунок 6. Закладка «Конечные автоматы», блок «Выдержка состояния»

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

Сигнал окончания выдержки объединяется с внешним сигналом (Сold) через логически блок «и». Если они совпадают (время выключения закончилось и температура ниже уставки), то мы формируем команду выхода из состояния и одновременно подаем на выход сигнал о включении нагревателя. Общая схема логики работы представлена на рисунке (Рисунок 7).

Рисунок 7. Логика работы в состоянии «выключен»

При формировании выхода из блока состояния необходимо учитывать, что блок в активном состоянии постоянно рассчитывает и формирует значение выходных сигналов (в нашем случае это выход Оn/Off), при завершении работы состояния и выхода из него, на линии остается последнее работающее значение, в нашем случае на выходе из состояния будет сформирована 1 и она останется до тех пор пока состояние не будет снова активно.

После завершения создания логики состояния "выключен", поднимемся на уровень выше, путем двойного клика по пустому месту схемы (см. Рисунок 8).

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

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

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

Рисунок 9. Блок Выход состояния

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

Для контроля работы в течении 20 секунд поставим на схему блок «Выдержка состояния» (см. Рисунок 6), и зададим ему в качестве параметра «Время до перехода в другое состояние» - 20.

Общая структура логики работы блока будет выглядеть, как показано на рисунке (Рисунок 10).

Рисунок 10. Структура работы в состоянии «включен»

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

Одновременно анализируется значение полученное по входу с данными. На это порт мы подадим результат сравнения заданной температуры с измеренной, если результат равен 1 (истина) температура в бойлере ниже заданной и нужно продолжать нагрев. Если значение равно 0 (ложь), то нужно завершать нагрев. Блок «оператор НЕ» обеспечивает инверсию входа, и выработку команды на переход из состояния «включен» по второму выходу (см. Рисунок 10).

Перейдем на верхний уровень данной схемы. У блока состояния автомата «включен» появлялись два дополнительных порта. И теперь блок содержит:

Соедините порты как показано на рисунке (Рисунок 11):

Рисунок 11. Логика работы конечного автомата в сборе

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

Порт индикатора на данной стадии мы подключили к порту сигнала включения/выключения, моделирование интервалов и цвета индикатора мы сделаем позже.

Вызовите настройки расчета, нажав на кнопку «Параметры расчета» (см. Рисунок 12).

Рисунок 12. Кнопка «Параметры расчета»

На закладке «Параметры расчета», установите «Конечное время расчета» 700 секунд. (см. Рисунок 13)

Рисунок 13. Параметры расчета

На закладке «Синхронизация» установите галочку «Синхронизировать с реальным временем» и «Коэффициент ускорения» - 100 (см. Рисунок 14).

Рисунок 14. Параметры расчета. Синхронизация.

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

Запустите модель на расчет нажав на кнопку Старт. (см. Рисунок 15).

Рисунок 15. Запуск на расчет модели

Если вы всё собрали согласно инструкции, то получили модель водонагревателя, управляемую регулятором на базе логики «конечных автоматов». На схеме контроллера во время моделирования можно наблюдать переключение из состояния в состояние, зеленым цветом отображается активное в настоящий момент состояние (см. Рисунок 16).

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

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

Рисунок 17. Режим работы нагревателя

Рисунок 18. Температура нагревателя

На графике температуры (см. Рисунок 18) видно, что в начальный момент температура 15 градусов и снижается со скоростью охлаждения. После нахождения в состоянии «выключен» в течении 40 секунд происходит переход в состояние «включен» (см. Рисунок 17). В данном состоянии происходит нагрев со скоростью заданной в модели нагревателя (см. Рисунок 18). После отработки в течении 10 секунд, происходит переход в состояние «выключен» (см. Рисунок 17). Данные циклы повторяются до тех пор пока температура не достигнет уставки в 20 градусов, после этого цикл включения сокращается, поскольку переход из состояния «включен» в состояние «выключен» осуществляется по достижению уставки по температуре - это видно на графике "Режим работы" после 500 секунды расчета (см. Рисунок 17).

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

Обратите внимание, что сигнал включения и выключения (On/Off) мы формируем в блоке «выключен», поскольку данное состояние является активным по умолчанию. Его выходы на старте определены, при переключении из состояния мы меняем выход (см. Рисунок 7) и он остается в состоянии включен (1) все время пока состояние не активно. Поскольку в данном конечном автомате всего два состояния, мы можем это значение подать на выход из карты. В случае если у нас состояний больше двух, выход из субмодели должен определяться или рассчитываться в каждом состоянии, иначе возможна ситуация использования переменных которые не определены, из-за не активного состояния.

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