Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SPbGLTU_SimInTech_2020

.pdf
Скачиваний:
36
Добавлен:
03.12.2024
Размер:
10.45 Mб
Скачать

Рис. 3.13. Модель заполнения цистерны с управлением по объему.

Результаты моделирования, приведенные на рис 3.14, показывают, что отработка разных значений заданного объема выполнена практически точно. Этому способствовал и выбор соответствующего значения зоны нечувствительности. Если сделать ряд допущений о том, что выполняются следующие условия:

входной поток на клапан (P) постоянен,

эффективное сечение клапана за время его открытия (Tk) изменяется линейно во времени,

поток в цистерну пропорционален степени открытия клапана,

то значение зоны нечувствительности можно определить из следующего выражения:

Tk

Tk

Tk

Tk

1

 

 

2

 

 

Tk

dV Pdt Pktdt Pdt P

 

 

1 Tk

 

 

 

tdt P Tk

 

 

 

 

 

P

 

Tk

Tk 2

2

0

0

0

0

 

 

 

 

В рассматриваемой модели входной поток P = 0.25 куб.м/сек, а время полного открытия клапана Tk = 5 сек. Подстановка этих значений в приведенное выше выражения и дает 0.625. Аналогичный, но более сложный подход, позволил установить достаточно приемлемую для всех режимов работы зону нечувствительности на слив порядка 0.5 — 0.55 куб.м

41

Рис. 3.14. Подлив до 7 куб.м и 12 куб.м при зоне нечувствительности 0.625 куб.м.

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

3.3. Задание на лабораторную работу

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

1.Провести тестирование работы модели на слив, используя для этого разные исходные и конечные объемы. Оценить полученные результаты

иустановить влияние на них установленной зоны нечувствительности.

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

3.Модифицировать схему исследуемой модели, используя в ней для повышения степени наглядности объекты из панели графических примитивов. Один из вариантов такой возможной модификации приведен на рис.

3.15.

42

Рис. 3.15. Модифицированная модель управления цистерной.

4. Отметим, что эта модель работает только при наличии дополнительного скриптового кода, входящего в состав этой модели, и с которым необходимо разобраться:

var c: integer;

x_new = valf(fld_NewVolume.text, c); x_old = Volume.Y;

fld_Volume.Text = floattostr (x_old); if btnStart.down then

begin

NewVolumeConst.a = x_new; if x_new > x_old then

begin

Set_In.a = 1;

Set_Out.a = 0 end

else

43

begin

Set_Out.a = 1;

Set_In.a = 0 end;

end;

В этом скрипте Set_In и Set_Out − имена блоков типа Константа, выходы которых подключены к блокам RS триггеры с приоритетом по сбросу. Эти константы играют роль ключей, подающих команды на слив и залив бака.

5. Реализовать модификацию модели управления заливом и сливом цистерны, провести ее тщательное тестирование. Значение свойств блока Релейное с зоной нечувствительности установить в соответствии с рис. 3.17. Подобрать значения параметров расчета (рис. 3.16) для наиболее эффективного процесса моделирования и отладки проекта с использованием кнопки "Пуск" панели инструментов проекта.

Рис. 3.16. Параметры проекта для использования кнопки "Пуск" панели проекта.

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

7.Отдельный раздел должен быть посвящен проведенным исследованиям модели и полученным результатам.

8.Изучить в справке SimInTech раздел «Области видимости информационных объектов в проекте SimInTech».

44

Рис. 3.17. Свойства блока Релейное с зоной нечувствительности

4. ОСНОВЫ АНИМАЦИИ БЛОКОВ И СОЗДАНИЯ СОБСТВЕННЫХ БИБЛИОТЕК

Лабораторная работа № 4

Целью данной лабораторной работы является:

1. Ознакомиться с базовыми подходами к анимации функциональных блоков.

2. Изучить последовательность действий для превращения блока в библиотечный.

3.Создать собственную библиотеку блоков для клапанов и цистерн.

4.Разработать алгоритм управления цистерной на базе библиотечных блоков.

5.Исследовать работу модели системы.

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

45

вание схем, набранных в SimInTech, а также создание на основе блока «Субмодель» нового структурного блока.

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

всего лишь один раз отладить алгоритм или скрипт, управляющий, например, внешней анимацией субмодели;

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

Вывести эти параметры в свойства субмодели.

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

Однако включаемые в модель блоки «Субмодель» обычно имеют абсолютно разное функциональное назначение. Одни из них могут реализовывать сложные математические расчетные схемы и алгоритмы, а другие − моделировать работу физических объектов и систем. При работе вторых желательно иметь некоторую обобщенную информацию о работе того или иного объекта. Например, включен он или выключен, в каком положении находится его исполнительный орган и т.д. Но эта информация скрыта внутри самих блоков.

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

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

4.1. Создание анимированного изображения для блока цистерн

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

46

общей схеме выделим блок цистерны и перенесем его в новый более простой проект only_tank.prt (рис. 4.1).

Рис. 4.1. Исходная модель для анимации блока.

При работе в среде SimInTech процесс создания анимированных объектов условно подразделяют на три этапа.

1.Компоновка изображения для будущей анимации.

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

3.Описание связей между созданным окружением и свойствами графических примитивов, а также логикой их работы.

Средства SimInTech позволяют создать анимированные изображения для любых блоков, в том числе и для блоков типа «Субмодель». Именно таким типом и является блок Tank (цистерна).

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

Выделить субмодель, вызвать по правому клику мыши контекстное меню и выбрать пункт «Свойства объекта». Откроется окно «Свойства» для выбранной субмодели.

На вкладке «Общие», в строке «Графическое изображение» перейти в столбец «Значение» и кликнуть на появившейся там кнопке. Откроется окно графического редактора. На нем бу-

47

дет стандартное изображение блока, которое надо удалить, выделив его и нажав Del.

Выбрать в меню графического редактора опцию "Масштаб → Задать размер контейнера" и изменить, если это нужно, размер области для создаваемого графического изображения (рис. 4.2).

Рис. 4.2. Окно задания размера контейнера.

Теперь, используя графические примитивы, можно приступить к созданию в окне графического редактора требуемого изображения. Вызов панели примитивов осуществляется из главного окна системы SimInTech (рис. 4.3).

Рис. 4.3. Вызов панели примитивов и ее вид.

Предположим, что графическое изображение состоит из прямоугольника, эллипса и линейного прибора. Для последнего надо настроить масштаб шкалы и текста по размеру графического блока. Для этого вызываем окно свойств этого объекта, задаем в этом окне нужные значения масштабов и присваиваем этому объекту имя, например, bar_Volume (рис. 4.4).

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

Создать сигнал, который будет связывать свойства анимированных графических примитивов с динамическими значениями субмодели. Для этого нужно вызвать окно «Сигналы» через пункт меню «Сервис → Сигналы…» и в появившемся окне добавить необходимое количество сигналов (рис. 4.5).

48

Рис. 4.4. Компоновка изображения и задание имени для объекта типа Bar.

Рис. 4.5. Создание сигнала state_.

Связать вновь созданный сигнал со свойством графического примитива, который предполагается анимировать. В рассматриваемом случае это изменяемый по высоте во времени столбик объема жидкости в цистерне (рис. 4.6).

По

окончании редактирования связей следует закрыть

окно

графического редактора, ответив «Да» на вопрос «Из-

менить изображение?». Изображение на блоке субмодели изменится в соответствии с внесенными правками. При выборе ответа «Нет» все внесенные изменения будут утеряны.

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

Выделить на схеме субмодели связь к порту выхода «Объем в баке», присвоить ей имя VolumeInTank и в главном меню выбрать пункт Сервис → Связи (рис. 4.7).

49

Рис. 4.6. Определение связи сигнала state_ с высотой столбика bar-объекта.

Рис. 4.7. Выбор выходного значения для объекта VolumeInTank.

Переменная Y по умолчанию определяет сигнал связи модели цистерны с портом вывода (VolumeInTank). Следует отметить, что именно он и должен определять работу анимированного примитива. Поэтому надо этот сигнал с помощью мышки перетащить в правую часть окна в колонку «Источник».

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

50