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

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

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

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

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

В случае, когда обе команды равны «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. Для верхнего блока «Константа» на вкладке «Свойства»: «Значение» – 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 определяет размерность вектора, которая вычисляется автоматически при запросе к базе данных.