Создание блока управления оборудованием

Создание следующего проекта автоматики

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

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

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

  1. Откройте файл Схема автоматики 1.prt, созданный при выполнении предыдущих заданий;
  2. Удалите существующую Субмодель;
  3. Сохраните файл под новым именем Схема автоматики 2.prt.

    Действия для сохранения: пункт меню Файл главного окна программы, подпункт Сохранить проект как… (Рисунок 1).

    Рисунок 1. Меню сохранения файла под новым именем

Поскольку ранее созданный файл был связан с базой данных, файл с новым именем также будет связан с этой базой данных.

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

Добавление новых сигналов в базу данных

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

  1. Войдите в Редактор базы данных. Пункт меню Инструменты → База данных. (см. Рисунок 2)

    Рисунок 2. Меню вызова редактора базы данных

  2. В редакторе выберите категорию Задвижки и нажмите кнопку Настроить категорию (Рисунок 3), либо выполните двойной щелчок мыши по категории Задвижки.

    Рисунок 3. Редактор базы данных

  3. В окне Свойства категории добавьте два новых сигнала (кнопкой Добавить сигнал в нижней части окна): Команда Открыть и Команда Закрыть, как показано на рисунке ниже (Рисунок 4).

    Рисунок 4. Настройка категории

  4. Закройте окно Свойства категории нажатием кнопки Ок.
  5. Закройте Редактор базы данных нажатием кнопки Ок.

Создание блока управления оборудованием

Рассмотрим процедуру создания блока управления оборудованием:

  1. Поместите на схему новый блок Субмодель из закладки Субструкутры.
  2. Осуществите двойной клик под новым блоком.
  3. Введите в появившемся поле название субмодели «Управление оборудованием» (см. Рисунок 5).

    Рисунок 5. Создание подписи блока

  4. Осуществите двойной клик на блоке Управление оборудованием.
  5. Поместите на схему новый блок Субмодель из закладки Субструкутры и подпишите ее как БУЗ.

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

  6. Осуществите двойной клик на блоке БУЗ.
  7. Поместите на схему два блока Порт входа и три блока Порт выхода из закладки Субструкутры (Рисунок 6). Данные блоки работают не с базой даных, а организуют входные и выходные порты для субмодели.

    Рисунок 6. Блоки «Порт входа» и «Порт выхода» в палитре блоков

  8. Осуществите двойной клик на блоке Порт входа.
  9. В окне Порт субмодели введите строку Команда Открыть для первого порта входа и Команда Закрыть для второго (Рисунок 7).

    Рисунок 7. Редактирование имени порта субмодели

  10. Измените имена блоков портов субмодели так, чтобы схема приняла следующий вид (Рисунок 8).

Рисунок 8. Схема субмодели БУЗ с переименованными портами

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

Рисунок 9. Блок субмодели БУЗ после добавления портов

Векторная обработка сигналов

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

Продолжим наполнение блока Управление оборудованием и создадим алгоритм, способный обрабатывать векторный сигнал:

  1. Поместите на схему рядом с блоком БУЗ два блока Чтение из списка сигналов и три блока Запись в список сигналов.
  2. Для удобства дальнейшей работы поместите на схему также блоки Повернутый Текст (RotatedText), позволяющие ввести подписи на схему (Рисунок 10).

    Рисунок 10. Блок «Заметка» в палитре компонентов

    Осуществите двойной клик на надписи «Текст» блока «Заметка» и введите в окно редактора текст пояснения для каждого блока. Схема должна принять вид представленный на рисунке (Рисунок 11).

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

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

  1. Осуществите двойной клик на блоке Чтение сигнала из списка.
  2. В появившемся окне Свойства прейдите в строку Имена сигналов и нажмите кнопку вызова текстового редактора, появляющуюся при редактировании строки справа от текста (Рисунок 12).

    Рисунок 12. Редактирование свойств блока «Чтение сигналов из списка»

  3. В текстовом окне редактора необходимо сформировать запрос к базе данных. Запрос представляет собой текст в виде одной или нескольких строк в фигурных скобках:
    {query:
    category = "Задвижки";
    group = "*";
    name = "yb01"}
    где query: – ключевое слово.

    Данный запрос состоит из трех полей:

    • category = "Задвижки" – название категории («Задвижки»), из которой мы хотим получить сигналы.
    • group = "*" – название группы сигналов которую необходимо включить в запрос. Знак * означает, что в запрос необходимо включить все группы сигналов данной категории. Обратите внимание, что база данных позволяет осуществлять выборку групп сигналов по фильтру.

      Например: если в проекте есть задвижки, название которых начинаются на букву D, то для получения сигналов только от таких задвижек достаточно записать group="D*".

    • name="yb01" – имя сигнала, который требуется получить из базы данных. В данном случае это имя соответствует сигналу Команда Открыть. Это имя мы задавали, когда формировали свойства категории (Рисунок 4).
  4. Закройте текстовый редактор, нажав кнопку Применить в верхней части окна (Рисунок 13).

    Рисунок 13. Текстовый редактор запроса к базе данных сигналов

  5. Закройте окно редактирования свойств блока, нажав кнопку Ок.
  6. Повторите пункты 1–5 для всех блоков чтения и записи сигналов на схеме. При этом следует вводить строки запроса, соответствующие назначению сигналов в базе данных:
    • «Команда Закрыть»:
      {query: category = "Задвижки"; group = "*"; name = "yb02"}
    • «Открыта»:
      {query: category = "Задвижки"; group = "*"; name = "xb01"}
    • «Закрыта»:
      {query: category = "Задвижки"; group = "*"; name = "xb02"}
    • «Положение»:
      {query: category = "Задвижки"; group = "*"; name = "xq01"}
  7. Добавьте на схему блок Временной график и соедините блоки линиями связи, как показано на рисунке (Рисунок 14):

    Рисунок 14. Субмодель управления оборудование после соединения блоков

Редактирование параметров «нового» блока

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

Для правильной обработки векторных сигналов, как правило, необходимо знать их количество. Количество сигналов в нашей модели равно количеству задвижек в базе данных сигналов. В нашем примере мы придадим количество задвижек в качестве нового параметра блока БУЗ.

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

  1. Выделите Субмодель БУЗ на схеме.
  2. Выберите в главном окне программы пункт меню Правка → Изменить блок.. (Рисунок 15). Если данный пункт недоступен, то необходимо включить режим разработчика и повторить пункты сначала. В результате появится окно Редактор новых блоков.

    Рисунок 15. Меню изменения блока

  3. В окне Редактор новых блоков нажмите кнопку Добавить свойство в нижней части окна. Введите следующие значения полей (Рисунок 16).
    1. Название - Количество задвижек
    2. Имя - Z_Count
    3. Тип данных - Целое
    4. Значение - {query: category = "Задвижки"; group= "*"; name= "*xb01"; what=count}
    5. Способ расчета - Переменная

    В строке Значение формируется запрос к базе данных, который возвращает количество сигналов, в имени которых присутствует текст xb01 из категории Задвижки. Поскольку во всех задвижках есть только один сигнал xb01, то возвращаемое значение соответствует количеству задвижек (клапанов) в базе данных сигналов.

  4. Закройте диалоговое окно Редактор новых блоков нажатием кнопки Ок.

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

Создание модели управления клапаном

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

В случае, когда обе команды равны «0» (логическая Ложь) или обе команды равны «1» (логическая Истина, но команды противоречивы), задвижка (клапан) не меняет своего положения.

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

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

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

Войдите в субмодель «БУЗ» и соберите схему, как показано на следующем рисунке (Рисунок 17):

Рисунок 17. Структурная схема БУЗ

Для блока Сумматор установите значение весовых множителей [1,-1].

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

Во всех остальных случаях на выходе сумматора будет нулевое значение «0».

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

Для формирования сигналов «Открыта» и «Закрыта» используется логический блок Логические операции из закладки Логические (Рисунок 18).

Рисунок 18. Блок логические операции

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

В настройках блока необходимо указать тип второго блока «Скаляр».

Рисунок 19. Редактирование блока «Логические операции»

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

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

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

Войдите в диалоговое окно редактирования свойств блока Интегратор с ограничением и установите следующие свойства блока:

  1. Коэффициенты усиления - Z_Count#1
  2. Минимальное значение - Z_Count#0
  3. Максимальное значение - Z_Count#100
  4. Начальные условия - Z_Count#0

Закройте окно редактирования свойств нажатием кнопки Ок.

Запись Z_Count#1 позволяет заполнить массив значений для вектора. В зависимости от величины «Z_Count» формируется различный массив значений. Поскольку «Z_Count» вычисляется путем обращения к базе данных, то он будет соответствовать количеству сигналов, приходящих из базы данных. Таким образом, данный блок будет всегда корректно обрабатывать вектор сигналов при изменении количества задвижек в базе данных.

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

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

А в базе данных для всех задвижек значение сигнала «Закрыта» устанавливается в истину (в соответствии с начальными условиями интегратора).

Рисунок 21. Проверка работоспособности схемы БУЗ

Сохраните созданную модель.