Создание типовой модели

Под типовой моделью обычно рассматривается алгоритм, отвечающий за работу с каким-либо оборудованием технологического объекта, которое обладает едиными признаками. В пункте Добавление новых сигналов в базу данных текущего упражнения мы уже рассматривали, какое оборудование может относиться к типовому. Данное оборудование, обладая различными физическими характеристиками, тем не менее может иметь единый алгоритм управления, соответствующий ее типу: например, большинство задвижек на таком объекте, как электрическая станция, будет управляться при помощи типовой модели управления задвижками.

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

Типовая модель управления будет работать по следующему алгоритму:

При работе алгоритма возможны три варианта комбинирования данных команд на открытие и закрытие: когда обе команды инициированы, когда обе команды не инициированы, когда инициирована одна из команд. Рассмотрим данные варианты ниже.

В случае, когда обе команды равны «0» или обе команды равны «1» положение будет оставаться постоянным: команды в алгоритме не имеют приоритета перед друг другом, поэтому одновременная инициация обеих команд ведет к их взаимоблокировке.

Если «Команда Открыть» равна «1» и «Команда Закрыть» равна «0», модель алгоритма управления изменяет положение задвижки, увеличивая его с постоянной скоростью до достижения одного из следующих условий:

1 – «Положение» задвижки равно «100» (полностью открыта);

2 – «Команда Открыть» становится равной «0».

Если «Команда Закрыть» равна «1» и «Команда Открыть» равна «0», модель алгоритма управления изменяет положение задвижки, уменьшая его с постоянной скоростью до достижения одного из следующих условий:

1 – «Положение» задвижки равно «0» (полностью закрыта);

2 – «Команда Закрыть» равна «0».

При достижении значений «Положение» величины «100» или «0» сигналы на выходе из модели в портах с именами «Открыта» или «Закрыта»,принимают значения «1», в противном случае они равны «0», тем самым сигнализируя о том, что задвижка находится в промежуточном положении.

Приступим к разработке модели управления задвижкой:

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

    Рисунок 1. Окно редактора новых блоков

Измените значения свойств для установленных блоков:

  1. Для верхнего блока «Константа» на вкладке «Свойства»: «Значение» – a100;
  2. Для нижнего блока «Константа» на вкладке «Свойства»: «Значение» – a0;
  3. Для блока «Сумматор» на вкладке «Свойства»: «Весовые множители для каждого из входов» – a – [1,-1];

    Рассмтрим карту состояний блока «Сумматор» (Таблица 1). Всего может быть определено 4 возможных состояния.

    Таблица 1. Карта состояний для блока «Сумматор»
    Команда «Открыть» Команда «Закрыть» Значение на выходе блока «Сумматор»
    Состояние 1 1 0 1
    Состояние 2 0 1 -1
    Состояние 3 0 0 0
    Состояние 4 1 1 0

    Таким образом, на выходе из блока «Сумматор» будет значение «1», когда «Команда Открыть» равна «1» и «Команда Закрыть» равна «0». На выходе из блока «Сумматор» будет значение «-1», когда «Команда Открыть» равна «0» и «Команда Закрыть» равна «1». Во всех остальных случаях на выходе сумматора будет нулевое значение «0».

  4. Для верхнего блока «Логические операции» на вкладке «Свойства»: Тип операндаlog_type=(РАВНО);
  5. Для нижнего блока «Логические операции» на вкладке «Свойства»: Тип операндаlog_type=(РАВНО);

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

  6. Для блока «Интегратор с ограничением» на вкладке «Свойства»:
    • Коэффициенты усиленияkZCount#1;
    • Минимальное значениеYminZCount#0;
    • Максимальное значениеYmaxZCount#100;
    • Начальные условияx0ZCount#0;

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

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

Для обработки вектора необходимо векторизовать данный блок.

Например, если блок обрабатывает вектор из 3-х элементов, то необходимо ввести определить три коэффициента усиления для каждого из сигналов в векторе: [1,1,1]. Для одинаковых по величине значений можно использовать запись 3#1, которая эквивалентна вектору [1,1,1].

Запись ZCount#1 позволяет автоматически определить массив значений для вектора, в которой переменная ZCount определяет размерность вектора, которая вычисляется автоматически при запросе к базе данных.