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

Модель пружины / Руководство_пользователя

.pdf
Скачиваний:
27
Добавлен:
10.02.2015
Размер:
1.34 Mб
Скачать

AlphaMax: double := pi/4;

Рис 6.14

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

маятника. Выделим переход и с помощью кнопки или команды «Действия перехода» всплывающего меню вызовем редактор последовательности действий (Рис 6.15). Заметим, что в любую последовательность мгновенных действий как и в систему уравнений могут быть вставлены необходимые комментарии.

Рис 6.15

Аналогичным образом введем условие срабатывания «when y<=Ymin» для перехода «Свободный_полет» «Останов», добавив предварительно параметр

Ymin: double := -3;

Поместим теперь нашу карту состояния (Рис 6.3) в узел Init главной карты поведения (Рис 6.2) и наша модель готова.

6.3.Визуальная модель отрывающегося маятника.

Запустив модель, мы видим по фазовой диаграмме, что маятник вроде бы действительно отрывается (Рис 6.16).

31

Рис 6.16

Однако, хотелось бы наблюдать в динамике смену качественных состояний модели на карте поведения. Для этого в окне виртуального стенда щелкнем правой кнопкой мыши на изображении экземпляра маятника «Маятник_1» и выполним команду «Поведение» всплывающего меню (Рис 6.17).

Рис 6.17

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

Рис 6.18

При динамической визуализации карты поведения используются следующие соглашения: текущий узел показан сплошной закраской (на Рис 6.18 это узел «Колебания»), активные переходы (исходящие из текущего узла) показаны черной линией (на Рис 6.18 это переход из узла «Колебания» в узел «Свободный_полет»), неактивные узлы и переходы - серыми линиями (на Рис 6.18 это узел «Останов» и переход в него). Линия срабатывающего перехода подсвечивается на интервал времени, достаточный для фиксации глазом (200 мс).

32

Все эти цвета можно настроить по-своему на странице «Цвета» в установках выполняемой

модели (переход к редактированию установок по кнопке или команде «Установки / Модель»).

Если в диалоге редактирования условий останова на странице «По переходу» поставить флажок «Любой переход», то при срабатывании каждого перехода модель будет останавливаться и срабатывающий переход будет выделяться мерцанием в окне своей карты поведения (если окно не было открыто, оно откроется автоматически).

Если локальным поведением в узле является другая карта поведения, то соответствующее ей окно открывается двойным щелчком мыши на этом узле.

Рис 6.19

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

xL: double := 0; yL: double := 0;

и добавить в «Система_уравнений_1» еще две формулы xL = x;

yL = y;

Снова запустим новую визуальную модель, в установках анимации координаты свободного конца стержня сопоставим переменным xL, yL и получим наконец правильную картин-

ку (Рис 6.19).

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

33

7. Создаем компонентную модель.

Создание компонентной модели мы продемонстрируем на примере измерительной системы скорости и пути маятника (см. «Моделирование в примерах»). Откроем проект «Маятник.mvb» и с помощью команды «Файл / Сохранить как» скопируем его в файл «ИзмерительнаяСистема.mvb».

Путь к готовому примеру «Модели\Маятник\ИзмерительнаяСистема.mvb».

7.1.Внешние переменные.

Класс «Маятник» будет использоваться практически без изменений: нужно только сделать внутренние переменные X ,Y внешними видимыми извне выходами. Сделать это

очень просто. В окне класса «Маятник» хватаем мышкой изображение переменной X в секции «Внутренние переменные», тащим его с прижатой кнопкой мыши в раздел «Выходы» и там бросаем (опять все тот же метод drag-and-drop!). После всех этих манипуляций в классе «Маятник» исчезнет внутренняя переменная X и появится выход X . В отличие от внутренней переменной в описании внешней переменной должна присутствовать дополнительная информация об ее расположении на условном изображении блока. Поэтому при добавлении в классе «Маятник» новой внешней переменной немедленно открывается окно редактирования структуры класса «Маятник» (Рис 7.1а). По умолчанию все входы располагаются на левой стороне прямоугольника, изображающего на структурной схеме блок, а все выходы на правой. Вы можете задать любое расположение внешних переменных, перетаскивая мышкой изображение входа или выхода. на нужную сторону. Например, чтобы переместить выход X на верхнюю сторону, подведите курсор мыши на стрелку, изображающую выход (курсор изменится, показывая возможность перемещения), нажмите левую кнопку мыши и, не отпуская ее, перемещайте мышь на верхнюю сторону прямоугольника (курсор изменится на крестообразный). При попадании на стороны прямоугольника в центре креста курсора появится жирная точка, сигнализирующая о возможности бросания. Отпустите кнопку мыши и выход X будет изображаться на верхней стороне блока. По умолчанию внешние переменные располагаются на сторонах равномерно, то есть X разместится точно на середине стороны.

а)

б)

Рис 7.1

Аналогичным образом сделаем выходом и внутреннюю переменную Y . Выходы X ,Y разместятся на правой стороне блока на расстоянии одной трети стороны друг от друга и от края (Рис 7.1б). Если вы захотите поменять их местами, например, расположить

34

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

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

Чтобы добавить новый вход или выход нажмите соответственно на кнопки или

на левой инструментальной панели в окне структуры (Рис 7.1) или выполните команды «Добавить новый вход» или «Добавить новый выход» всплывающего меню (появляется при нажатии правой кнопки мыши в окне структуры). Далее подведите курсор мыши к стороне блока, на которой вы хотите расположить новую внешнюю переменную (в центре креста курсора появится жирная точка), и нажмите левую кнопку мыши. После этого возникнет диалог редактирования имени, типа и начального значения переменной, такой же, что и для внутренней переменной (Рис 4.1).

Чтобы войти в диалог редактирования свойств внешней переменной дважды щелкните мышью на ее изображении.

Чтобы удалить внешнюю переменную выделите ее и выполните команду «Удалить выделенный элемент» всплывающего меню или команду «Редактировать/Удалить» главного меню.

7.2.Структурная схема.

Следующим шагом должно быть создание класса «ИзмерительVS». Мы не будем подробно рассматривать этот этап, поскольку он практически ничем не отличается от создания класса «Маятник» («Создаем непрерывную модель.»). Новый блок будет иметь два входа X ,Y , на которые поступают текущие координаты, и два выхода V , S - текущие зна-

чения полной скорости и пути. Уравнения блока приведены в документе «Моделирование в примерах».

Далее нам нужно перейти в окно «Виртуальный стенд» и собрать схему их маятника и измерителя. Эта схема должна содержать один экземпляр класса «Маятник» и один экземпляр класса «ИзмерительVS». Экземпляр класса «Маятник» у нас уже имеется – это блок «Маятник_1» (Рис 3.1). На будущей схеме он должен находиться слева. Поэтому мы выделим блок и немного переместим его влево. Это можно сделать либо просто мышкой с прижатой левой кнопкой, либо с помощью кнопок точного перемещения в правой части инструментальной панели главного окна, либо с помощью клавиш перемещения курсора на клавиатуре. Кроме того, мы еще немного расширим вправо прямоугольник, обозначающий границы виртуального стенда. Для этого нужно выделить его, щелкнув мышью гденибудь на свободном месте внутри этого прямоугольника и потянуть мышью одну из опорных точек на периметре, обозначенных черными квадратами (направление возможных перемещений указывается формой курсора).

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

35

7.2.1. Добавление локального блока .

Теперь нужно поместить в структурную схему виртуального стенда экземпляр измерителя. Это можно сделать двумя способами:

1)методом «drag-and-drop»: в окна управления проектом хватается мышкой требуемый класс, переносится в окно структурной схемы и бросается в требуемом месте. Это место бросания будет являться верхним левым углом для изображения локального блока – экземпляра данного класса. Размеры изображения блока в этом случае принимаются стандартными.

2)путем непосредственного задания прямоугольника, изображающего локальный блок. Нажмите кнопку на левой инструментальной панели или выполните команду «Добавить новый локальный блок». В появившемся диалоге выберите класс нового локального блока и нажмите кнопку «OK». Поставьте крестообразный курсор мыши в позицию, где должен располагаться левый верхний угол изображения нового локаль-

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

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

Рис 7.2

По умолчанию новый локальный блок получает имя, составленное из имени класса и номера экземпляра данного класса в данной схеме. Так, если мы добавим еще один маятник, он получит имя «Маятник_2» и т.д.

По умолчанию имена внешних переменных локальных блоков на структурной схеме не показываются. Этим свойством можно управлять на странице «Вид» диалога настроек интегрированной среды (команда «Сервис/Настройки» главного мню). Однако даже при отсутствии имен при подведении мышки к внешней переменной ее имя всплывет в качестве подсказки.

Аналогично при подведении мышки к блоку имя его класса всплывет в качестве подсказки.

7.2.2. Редактирование локального блока.

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

36

Чтобы переместить изображение локального блока, выделите его и либо перета-

щите методом «drag-and-drop», либо используйте клавиши перемещения курсора. С помощью команды «Положение» всплывающего меню можно задать точное положение блока.

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

Чтобы переместить имя блока перетащите его методом «drag-and-drop».

Чтобы изменить имя блока щелкните на нем дважды мышью или выделите его и выполните команду «Редактировать/Редактировать как текст» главного меню (функциональная клавиша F2). На месте имени появится однострочный текстовый редактор, в котором вы можете отредактировать имя блока. Чтобы отменить редактирование нажмите «Esc», чтобы завершить редактирование нажмите «Enter» или щелкните мышью за пределами редактора строки.

Внешние переменные на изображении нового локального блока по умолчанию расположены так же, как в окне структуры соответствующего класса. Такое расположение может оказаться неудобным в конкретной структурной схеме: например, желательно расположить все входы на верхней стороне, а не на левой. Для этого выделите внешнюю переменную на структурной схеме и переместите ее либо методом «drag-and-drop», либо с помощью клавиш перемещения курсора. С помощью мыши можно переместить имя переменной, если оно выводится на схеме.

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

начальное отклонение маятника равным 4 , а не 2 ), выделите блок, правой кнопкой

мыши вызовите всплывающее меню и выполните команду «Параметры». В появившемся диалоге измените значение параметра (измененные значения выводятся жирным шрифтом) (Рис 7.3). После закрытия диалога значения параметров блока изменятся. Для восстановления значения параметра по умолчанию вызовите диалог редактирования параметров, выделите нужный параметр и выполните команду «Восстановить значение по умолчанию» всплывающего меню.

Рис 7.3

Для улучшения внешнего вида структурной схемы (на Рис 7.2 видно, что блоки имеют немного разные размеры) выделим оба блока как группу (напомним, это делается левой кнопкой мыши при прижатой клавише «Shift») и выполним команду «Редактировать/Выровнять» главного меню. В появившемся диалоге (Рис 6.8) выберем выравнива-

37

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

Напомним, что любое изменение в карте поведения может быть отменено с помо-

щью кнопки на панели кнопок главного окна или команды «Редактировать/Отменить изменения (Alt+Backspace)» главного меню.

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

Для того чтобы перейти к определению класса блока выполните команду «Класс» всплывающего меню.

7.2.3. Добавление связи.

Теперь нужно соединить эти два локальных блока связями. Для того чтобы доба-

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

а)

б)

38

в)

г)

Рис 7.4

Подведите крестообразный курсор мыши к изображению второй переменной. В случае, если она может участвовать в данной связи, курсор мыши сменится на изображение креста в круге (Рис 7.4б). Вторая переменная не может участвовать в данной связи, если:

-ее направленность не соответствует первой переменной (например, вы пытаетесь соединить два входа);

-это вход и он уже участвует в связи;

-ее тип не соответствует типу первой переменной (например, вы пытаетесь соединить выход типа boolean с входом типа double). Заметим, что вектор размерности

[1]или матрица размерности [1,1] совместимы как друг с другом, так и с типом

double.

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

7.2.4. Редактирование связи.

Чтобы удалить связь, выделите ее и выполните команду «Удалить связь» всплывающего меню.

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

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

39

зания координат опорных точек необходимо с помощью команды «Координаты точек» всплывающего меню вызвать диалог редактирования координат (на Рис 6.12 показан этот диалог применительно к выделенному переходу на Рис 6.5).

Замечание. Не забывайте, что в окнах MS Windows ось X направлена вправо, а ось Y вниз.

Чтобы изменить первую или вторую внешнюю переменную линии связи, нужно пе-

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

Чтобы добавить новую опорную точку на линию связи, нужно выделить связь и с

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

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

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

.

7.3.Эксперимент с компонентной моделью.

Соединяем связями выходы X ,Y маятника со входами X ,Y измерителя. Запускаем модель и получаем графики, показанные на Рис 7.5. Многокомпонентная модель работает.

Рис 7.5

40

Соседние файлы в папке Модель пружины