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

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

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

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

Войдите внутрь блока «Карта состояний конечного автомата» двойным кликом на нем. Единственное отличие от стандартной субмодели – это наличие «Блока выбора состояний» в левом верхнем углу схемы (см. Рисунок 2).

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

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

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

Рисунок 2. Подготовленный к обмену данными блок «Карта состояний конечного автомата»

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

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

Блок "контроллер нагревателя" получает заданную температуру и температуру из модели нагревателя и выдает команду (признак) включен – выключен в модель нагревателя и сигнал для индикации своего состояния.

Таким образом, блоки «Карата состояния конечных автоматов» (State Flow), может работать в SimInTech вместе с стандартными блоками схемы (Datа Flow). Для внешней схемы контроллер нагревателя является обычной субмоделью на каждом шаге времени (интегрирования) обрабатывающим входы и вычисляющим выходы. Перейдем в блок контроллера и создадим карту состояния.

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

Рисунок 4. Блок «Состояние автомата»

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

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

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

Рисунок 6. Настройка свойств первого активного состояния в карте.

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

Добавьте блок «больше» и соедините схему, как показано на рисунке (Рисунок 7):

Рисунок 7. Сравнение заданной и измеренной температуры.

Обратите внимание, что SimInTech не дает соединить выход блока «Больше» со входом блока «Состояние автомата», поскольку в первом случае линия обеспечивает передачу значения между блоками, а во втором - переход из состояния в состояние.