
SPbGLTU_SimInTech_2020
.pdf
После нажатия кнопки Ок в линейке закладок появится новая закладка «Serp_Lib», при выборе которой виден пока только один блок, всплывающая подсказка для которого «SerpTank» (рис. 4.23).
Рис. 4.23. Линейки закладок после добавления нового библиотечного блока.
Если теперь на используемую ранее модель цистерны добавить еще один блок из линейки закладок, дважды кликнуть по нему для изменения геометрии цистерны, подключить его входы, то получим модель управления заливкой уже двух цистерн. Запустив ее в работу, получится результат, аналогичный приведенному на рис. 4.24.
Рис. 4.24. Результат моделирования одновременной заливки двух цистерн.
4.4. Задание на лабораторную работу
После знакомства с описательной частью лабораторной работы и выполнения примеров, которые приведены в ней, необходимо выполнить следующие задания.
1.Создать анимированные блоки для клапанов, алгоритмов управления клапанами, алгоритмов управления заливкой цистерн.
2.Добавить все эти блоки в собственную только что созданную библиотеку.
3.На базе сформированной библиотеки разработать модель раздельного управления несколькими цистернами разной геометрии с клапанами разной скорости работы.
4.Выполнить всесторонний анализ работы модели и основные результаты изложить в отчете по лабораторной работе.
61

4.5. Пример разработки библиотечных блоков, моделирующих работу клапанов
На рис. 4.25 показана главная страница проекта valve_for_lib.prt для создания библиотечного блока, моделирующего работу клапана. В процессе своей работы клапан может находиться в открытом состоянии (зеленый цвет клапана), закрытом состоянии (красный), в процессе открытия или закрытия (желтый), и, наконец, в режиме моделирования неисправности в его работе (прозрачный).
Скрипт главной страницы состоит всего из одной строки и предназначен для обработки нажатия кнопки, которая моделирует отказ в работе клапана (рис. 4.26). Этой кнопке при ее размещении на главной странице задано имя btnError, а самому блоку субмодели клапана присвоено имя objValve (рис. 4.27).
Рис. 4.25. Анимированный библиотечный блок, моделирующий работу клапана.
62

Переменная err_ должна быть определена как параметр блока клапана. Она описывает наличие или отсутствие отказа в его работе (рис.
4.28).
Также в параметрах блока клапана определяется и переменная state_, которая является общей для всего блока клапана, в том числе и для его графического контейнера. Она служит для передачи значения текущего положения клапана в графический контейнер блока (рис. 4.28).
Рис. 4.26. Скрипт главной страницы проекта valve_for_lib.prt.
Рис. 4.27. Страница свойств субмодели клапана.
Рис. 4.28. Страница "Правка→Изменить блок..." для субмодели клапана.
Для возможности извне задавать или изменять время работы клапана на открытие предусмотрена переменная t_work, которая определяется во внешних свойствах блока, а вся функциональность по моделированию работы клапана заложена в сам блок субмодели (рис. 4.29).
Рис. 4.29. Вкладка свойства для редактирования блока субмодели клапана.
4.5.1. Блок субмодели
Упрощенная модель работы клапана без ущерба для общности предполагает одинаковое время его работы как на открытие, так и на закрытие. Схема модели имеет вид как на рис. 4.30.
63

Рис. 4.30. Схема субмодели клапана и свойства ее компонент.
Скрипт данной модели имеет всего две строки, где устанавливается связь переменной state_ со значением выходного порта схемы модели и связь состояния объекта btnNotError с текущим значением общего параметра блока err_. Содержимое скрипта соответствует рис. 4.31.
После проведения всех описанных выше действий необходимо провести тестирование модели работы клапана. После успешного тестирования можно перейти к включению в разрабатываемый блок графических примитивов и их анимации.
Рис. 4.31. Скрипт блока субмодели клапана.
4.5.2. Формирование графического контейнера для блока клапана
На первом этапе необходимо открыть окно свойств для блока objValve. Убедиться, что он воспринял введенный интерпретируемый скрипт, установить значение “Да” для свойства блока “Анимированный” и открыть графический редактор (рис. 4.32).
64

Рис. 4.32. Страница свойств блока субмодели клапана.
В графическом редакторе сформировать желаемое графическое изображение, используя для этого “Панель примитивов” и из нее примитивы «Полигон» и «Линейная шкала» (рис. 4.33).
Рис. 4.33. Графическое изображение клапана в графическом редакторе.
Из всех графических примитивов только два будут анимированными. После их масштабирования и настройки присвоим им имена imgValve и barValve (рис. 4.34, 4.36).
Закончив настройку примитивов, следует вернуться в графический редактор и создать скрипт их анимации (рис. 4.35).
На этом формирование графического контейнера для блока клапана можно закончить и провести тестирование работы блока. При успешном результате блок можно занести в библиотеку SimInTech, предварительно установив для его свойства Locked значение “Да”.
65

Рис. 4.34. Изменение имен графических объектов клапана.
Рис. 4.35. Скрипт анимации графического изображения клапана.
66

Рис. 4.36. Изменение свойств графического примитива «Линейная шкала» клапана.
4.5.3. Модификация графического контейнера блока клапана
Рассмотренный блок клапана предполагал, что задание ошибки в его работе происходит извне. Вместе с тем при работе модели клапана совместно с другими блоками может оказаться более удобным ввод этого события мышкой в области самого функционального блока. Для реализации этого подхода:
скопируем проект в новый файл, например, valve_for_lib_2.prt;
дадим блоку клапана другое имя, например, objValveA;
добавим в его графический контейнер два графических прими-
тива «Пустая группа» из панели («Панель примитивов») (рис. 4.37, 4.38).
Снабдим каждый из примитивов своим собственным скриптом. Для этого надо двойным щелчком по изображению примитива "пустая группа", то есть по зеленому или желтому прямоугольнику в графическом редакторе клапана, войти в графический редактор примитива "пустая группа", в котором надо выбрать меню Сервис -> Скрипт (рис. 4.39).
67

Рис. 4.37. Добавление примитива типа "пустая группа" к изображению клапана.
Рис. 4.38. Свойства примитивов типа "пустая группа" для изображения клапана.
68

Рис. 4.39. Графический редактор примитива типа "пустая группа".
Скрипт одного из примитивов "пустая группа", а точнее того, что имеет желтый цвет, должен присваивать значение 1 переменной err_ в том случае, если указатель мышки окажется в выделенной для данного примитива области экрана. Скрипт второго присваивает переменной err_ значение 0 при попадании указателя мышки в его область (рис. 4.40).
Рис. 4.40. Скрипты анимации добавленных графических примитивов клапана.
После сделанных дополнений надо дописать скрипт основного графического контейнера функционального блока клапана (рис. 4.41).
69

Теперь кнопка btnError становится лишней и может быть удалена из проекта, также не нужен скрипт главного проекта рис. 4.26, его тоже следует удалить. Моделирование работы клапана в случае, когда неисправность задана в процессе его открытия, осуществляется щелчком левой клавиши мыши, когда она оказывается на желтом прямоугольнике. Затем эта неисправности снимается щелчком левой клавиши мыши на зеленом прямоугольнике в области графического изображения клапана (рис. 4.42).
Рис. 4.41. Измененный скрипт анимации графического редактора клапана.
Работоспособность модели позволяет сохранить этот блок в виде библиотечного блока.
Рис. 4.42. Модель работы клапана с анимированным добавлением неисправности.
70