Введение в MVS - Model Vision Studium

Федосов Б.Т.
Рудненский индустриальный институт,
Казахстан

Добро пожаловать в Model Vision Studium!

Настоящие методические указания предназначены для быстрого освоения основных принципов и приобретения первичных навыков построения моделей в программной среде MVS (Model Vision Studium). Указания ориентированы и на квалифицированных, и на малоподготовленных людей, в том числе студентов-заочников и школьников, желающих быстро и эффективно создавать наглядные модели и с их помощью иллюстрировать решение физических задач и изучать поведение реальных устройств. Указания могут быть полезны и тем преподавателям и учителям, кто только недавно получил доступ к компьютеру и наверстывает упущенное.

Model Vision Studium (MVS) - компьютерная программа, предназначенная для создания и исследования наглядных визуальных моделей простых и сложных физических и технических объектов и систем. Программа MVS рассчитана на научных работников и инженеров, но достаточно легко осваивается студентами и школьниками, и может быть применена как для моделирования сложных динамических объектов и систем, так и для проведения школьниками и студентами виртуальных экспериментов по физике.

Рис. 1. Демонстрация внешнего вида модели маятника, созданной в MVS, груз которого в какой-то момент времени отрывается от нити.

Отметим, что модели могут быть созданы и в других программах, в том числе и в программах-компиляторах языков высокого уровня Borland C++, Visual C++, Pascal и других. Отличительной особенностью MVS является то, что эта программа выполняет за человека большую и кропотливую работу по записи кодов программ, сохраняя возможность применения мощного и гибкого математического аппарата для построения моделей. При создании простых моделей большую часть работы можно выполнить мышкой, почти не касаясь клавиатуры.

С методической точки зрения программа MVS полезна тем, что позволяет естественным образом, непринужденно ввести неподготовленного школьника в круг вопросов объектно-ориентированного программирования (ООП) и моделирования (ООМ), освобождая его от необходимости заниматься мелкими, хотя и важными, техническими деталями.

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

Программа MVS непрерывно совершенствуется. Приводимые ниже указания написаны для версии MVS Free 3.1.5, предназначенной для свободного использования. Новые версии этой программы, всегда совместимые со всеми предыдущими можно найти на сайте: http://www.exponenta.ru/soft/others/mvs/mvs.asp ,

а в упакованном виде: http://www.exponenta.ru/soft/others/mvs/archive/MVS_R_FREE_3.1.5.zip .

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

2003 г.

Содержание

Часть 1

1. Знакомство со средой MVS.

1.1. Основные инструменты MVS. Главное окно проекта: Редактор модели - среда реализации алгоритма модели.
Главное окно визуальной модели: Испытательный стенд - графическая среда создания и функционирования визуальной модели. 1.2. Создание надписи в окне 2D-анимации. 1.2.1. Создание папки для сохранения проекта.
1.2.2. Создание надписи в поле окна 2D-анимации испытательного стенда. 1.3. Сохранение проекта и модели. Открытие существующего проекта. 1.3.1. Сохранение проекта.
1.3.2. Компиляция и сохранение модели.
1.3.3. Открытие существующего проекта.1.4. Задание для самостоятельного выполнения.

2. Создание простейших моделей.

 2.1. Фонарик_1. Статическая модель. 2.1.1. Математическая формулировка задачи.
2.1.2. Построение алгоритма работы модели.
2.1.3. Реализация алгоритма в среде MVS.
2.1.4. Построение модели, запуск и работа с ней.
2.1.5. Сохранение проекта. 2.2. Фонарик_2. Карта поведения. 2.2.1. Понятие о работе модели, управляемой событиями.
2.2.2. Карта поведения в программе MVS.
2.2.3. Создание проекта Фонарик_2. Математическая формулировка задачи.
Построение алгоритма.
Ввод переменных.
Составление карты поведения модели. Начальный узел Init. Входные действия узла Init. Добавление нового узла. Добавление переходов и условий их срабатывания.2.2.4.Создание визуальной модели фонарика.
2.2.5. Сохранение проекта. Заключение.

2.3. Фонарик_3. Построение динамической модели.

2.3.1. Математическая формулировка задачи.
2.3.2. Построение алгоритма.
2.3.3. Преобразование проекта Фонарик_2 в проект Фонарик_3. Сохранение проекта под новым названием. Переименование объектов проекта и модели.
Ввод переменной и параметра.
Запись уравнений узлов.
Изменение входных действий узлов.
Доработка модели фонарика.
Проверка работоспособности модели. Первый запуск модели.
Исследование модели. Окно диаграммы (осциллографа).
Коррекция алгоритма.
Коррекция входных действий узлов и действий переходов.
Тестирование модели.
2.4. Описание модели фонарика с использованием дифференциального уравнения. 2.4.1. Математическая формулировка задачи.
2.4.2. Реализация алгоритма.
2.4.3. Преобразование проекта Фонарик_3 в проект Фонарик_31.
2.4.4. Корректировка уравнения для узла Фонарик_светит.
2.4.5. Тестирование динамической модели, описываемой дифференциальным уравнением.
2.4.6. Задание для самостоятельной работы.
Заключение.

3. Простая анимация.

3.1. Создание проекта модели.
3.2. Построение 3D-анимации. 3.2.1. Вывод окна новой 3D- анимации.
3.2.2. Построение фигуры фонарика из примитивов.
3.2.3. Связывание переменных со свойствами примитивов в окне 3D- анимации. 3.3. Тестирование модели.

Об авторе.


Знакомство со средой MVS - Model Vision Studium

1. Знакомство со средой MVS.

 1.1. Основные инструменты MVS. Главное окно проекта: Редактор модели - среда реализации алгоритма модели.
Главное окно визуальной модели: Испытательный стенд - графическая среда создания и функционирования визуальной модели. 1.2. Создание надписи в окне 2D-анимации. 1.2.1. Создание папки для сохранения проекта.
1.2.2. Создание надписи в поле окна 2D-анимации испытательного стенда. 1.3. Сохранение проекта и модели. Открытие существующего проекта. 1.3.1. Сохранение проекта.
1.3.2. Компиляция и сохранение модели.
1.3.3. Открытие существующего проекта.
 Заключение

Model Vision Studium (MVS) - компьютерная программа, предназначенная для создания и исследования визуальных виртуальных моделей простых и сложных физических и технических объектов и систем. Модели могут отображать поведение физических объектов, иллюстрировать принципы действия технических устройств, позволяют исследовать свойства и характеристики реальных и проектируемых систем широкого диапазона сложности.

1.1. Основные инструменты MVS.

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

При запуске, программа открывает проект, с которым работали в предыдущем ее запуске. На экране появляется главное окно проекта MVS – Редактор моделей.На рис.1.1 приведен Редактор модели автомобильного дифференциала. Этот интересный и наглядный пример находится в папке с установленной MVS по адресу С:\Program Files\MV30\Examples\3D\back_axle\ back_axle.mvb.

Рис. 1.1. Окна редактора модели MVS. Окон много и это рассеивает внимание начинающих, но упрощает работу тем, кто освоил программу.

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

Нажатие кнопки с зеленым треугольником “Запустить модель” (рис. 1.1.) переводит пользователя в Испытательный стенд - графическую среду создания и функционирования модели MVS (рис.1.2.).

Рис.1.2. Пример Испытательного стенда. Модель заднего моста автомобиля разработанная доцентом кафедры ТММ С-ПбТУ Г.Н. Петровым.

Нажатие кнопки с зеленым треугольником “Пуск” в главном окне испытательного стенда (рис.1.2.) запускает работу модели, т.е. “включает” время. Шестерни и колеса в окне 3D-анимации начинают вращаться. Окно 2D-анимации используется для создания элементов управления и контроля параметров модели и применения этих элементов в процессе ее работы.

1.2. Создание надписи в окне 2D-анимации.

1.2.1. Создание папки для сохранения проекта.

Создайте папку своей учебной группы по адресу C:\Мои документы\Уч. группы\Гр. АТ-31 для сохранения в ней проекта.
Запустите программу MVS. Если откроется уже выполненный проект, создайте новый: меню Проект – Новый … (или нажмите кнопку вверху слева с изображением чистого листа). В появившемся окне

Рис. 1.3. Задание названия проекта Приветствие и указание папки для его сохранения.

введите название (Имя) проекта Приветствие и с помощью кнопки Обзор укажите адрес созданной Вами папки Гр.АТ-31 учебной группы АТ-31. Нажмите кнопку Создать. Программа MVS создаст по указанному адресу папку с названием Приветствие.
 Внимание. Если такая папка уже существовала, то MVS ее очистит и поместит туда файлы текущего проекта. Поэтому не используйте одинаковых названий для проектов разных моделей.

В главном окне проекта Редакторе моделей MVS появится система окон, которые можно перемещать, а также изменять их размеры с помощью мышки (рис. 1.4):

Рис.1.4. Структура окон Редактора моделей MVS проекта Приветствие. В первом проекте изменять здесь ничего не потребуется. В левом и правом окнах название класса такое же, как и у проекта – Приветствие.

Посмотрите, какие файлы и папка появились в папке проекта Приветствие (адрес C:\Мои документы\Уч. группы\Гр. АТ-31).

1.2.2. Создание надписи в поле окна 2D-анимации Испытательного стенда.

Надпись – важный и полезный для пользователя элемент модели, упрощающий ее восприятие, нахождение элементов управления в процессе проведения виртуальных физических экспериментов и т.п.
Нажмите кнопку с изображением зеленого треугольника “Запустить модель” в центре панели инструментов главного окна проекта (рис. 1.1). Появится главное окно Испытательного стенда Визуальная модель MVS с двумя дочерними окнами:

Рис. 1.5. Фрагмент Испытательного стенда Визуальная модель MVS с дочерними окнами Виртуального стенда и переменных. Переменных в данном проекте нет и последнее окно – пусто.

Щелкните пункт меню Окна – Новая 2D-анимация, ответьте: Да, если появится вопрос о соотношении модельного и реального времени. Появится окно 2D-анимация. Это окно можно перемещать, а также изменять его размеры.
Теперь нужно правой кнопкой мыши щелкнуть в поле 2D-анимация, в появившемся меню выбрать: Добавить надпись. В появившемся окне ввести текст надписи, например, “Привет, студент!”. Нажать ОК. Надпись должна быть краткой, т.к. она помещается только в одну строчку. Надпись можно перемещать мышкой по полю 2D-анимация. Редактирование текста и шрифта надписи производится по щелчку правой кнопкой мыши по надписи и выбору соответствующего пункта меню.
Заголовок окна 2D-анимация можно изменить, щелкнув правой кнопкой мыши на свободном пространстве этого окна и выбрав пункт меню Заголовок окна при разрешенном режиме редактирования.

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

Рис.1.6. Окно 2D-анимации с новым заголовком “Мое приветствие в MVS” и надписью.

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

1.3. Сохранение проекта и модели.

1.3.1. Сохранение проекта.

Закройте главное окно Визуальная модель MVS – кнопкой в самом верху, справа. На вопрос: Сохранить текущие установки? – ответьте: Да.
 В меню Проект главного окна проекта (Редактора модели) выберите пункт Сохранить как, убедитесь, что проект сохраняется в нужную папку, и нажмите ОК. Обратите внимание, что размер файла проекта Приветствие.mvb в папке C:\Мои документы\Уч. группы\Гр. АТ-31\ Приветствие составляет 64 кБ. Это сравнительно не много.

1.3.2. Компиляция и сохранение модели..

При необходимости можно сохранить и компилированный вариант модели в виде автономного модуля, тогда он будет запускаться и самостоятельно, на компьютерах, где программа MVS не установлена. Но размер файла такой модели довольно велик, превышает 1 МБ, поэтому компилировать модель следует при необходимости ее автономного использования.
Для сохранения модели как автономного модуля, выбрать в меню Редактора модели Модель – Создать. Появится сообщение: Создана исполняемая модель. Нажать ОК. Посмотрите, как наполнилась папка Tmp в папке проекта Приветствие. Однако если запустить оттуда файл model.exe, то в модели будет отсутствовать 2D- анимация! Поэтому, следует:

  • запустить модель из главного окна проекта, убедится, что окно 2D- анимация и другие, на своих местах;
  • закрыть окно модели;
  • в главном окне проекта выбрать в меню Модель – Сохранить как, в появившемся окне задать нужное, содержательное, но короткое название модели и сохранить. Сохранение по умолчанию произойдет в папку с сохраненным проектом Приветствие. При желании, можно сохранить исполняемый файл модели и в любом другом месте.

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

1.3.3. Открытие существующего проекта.

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

Заключение.

В выполненной работе Вы познакомились с главными окнами проекта: Редактором моделей, где реализуется алгоритм работы модели, и Испытательным стендом, где создается и функционирует после запуска видимая часть модели.
Вы умеете: запускать программу MVS, создавать новый проект, создавать надписи в окне 2D-анимации модели, сохранять проект, а также модель, как автономный модуль, открывать существующий проект.

Далее


Простейшие программы MVS. Статическая модель.

2. Создание простейших моделей.

 2.1. Фонарик_1. Статическая модель.
 2.1.1. Математическая формулировка задачи
2.1.2. Построение алгоритма работы модели.
2.1.3. Реализация алгоритма в среде MVS.
2.1.4. Построение модели, запуск и работа с ней.
2.1.5. Сохранение проекта.
2.1.6. Задание для самостоятельного выполнения.
Заключение

2.1. Фонарик_1. Статическая модель.

Построение простейшей действующей статической модели фонарика с использованием всего одной переменной булевского типа. Окно класса. Стандартные 2D-компоненты. Окно 2D-анимация. Окно переменных.

2.1.1. Математическая формулировка задачи.

Задача: построить модель, состоящую из “лампочки” и кнопки. При нажатии кнопки лампочка должна загораться. Модель в задаче – статическая, т.е. характеризующие ее величины не изменяются во времени, в ней нет переменных величин, которые бы зависели от времени. Срабатывание кнопки и зажигание света происходит в модельном времени мгновенно.

2.1.2. Построение алгоритма работы модели.

Создадим переменную булевского типа, назовем ее Вкл и свяжем ее с кнопкой и с окошком. В исходном состоянии, при отпущенной кнопке, значение переменной Вкл будет false (ложь). При нажатии кнопки значение переменной Вкл поменяется на true (истина). Поскольку переменная Вкл связана и с окошком, то, став истинным, т.е. равным 1, оно “зажжет” свет. При отпускании кнопки, значение переменной Вкл станет false (ложь), т.е. ноль и фонарик “погаснет”.

2.1.3. Реализация алгоритма в среде MVS.

Запустить программу MVS. Создать новый проект (меню Проект –Новый…). Дать проекту имя Фонарик_1 и, нажав кнопку обзор, поместить его в папку C:\Мои документы\Уч. группы\Гр. АТ-31.

 Рис.2.1. Окно задания имени проекта и папки, в которой он будет храниться.
 Нажать кнопку Создать. В главном окне проекта появятся окна рис. 2.2:

Рис. 2.2. Окна Редактора модели - рабочей среды построения алгоритма проекта Фонарик_1. В окне класса Фонарик_1 следует добавить внутреннюю переменную булевского типа.
 Для добавления переменной, в окне класса Фонарик_1 следует щелкнуть правой кнопкой мыши по пункту Внутренние переменные и в выпавшем меню щелкнуть левой клавишей по пункту: Добавить. В появившемся окне задать идентификатор (имя) переменной Вкл, нажать кнопку Тип и в окне Выберите тип выбрать boolean рис 2.3:

Рис 2.3. Задание названия перемененной Вкл и ее типа boolean с исходным значением false.
Нажать ОК в окне выбора типа, затем ОК в окне переменной. В окне класса Фонарик_1 появится переменная Вкл типа boolean, со значением false рис 2.4.

Рис. 2.4. В проект Фонарик_1 введена внутренняя переменная Вкл.

В этом проекте всего одна внутренняя переменная. Далее можно запускать построение модели.

2.1.4. Построение модели, запуск и работа с ней.

Нажмите кнопку с зеленым треугольником “Запустить модель” на панели инструментов главного окна проекта (Редактора модели). Вы увидите несколько быстро сменяющих друг друга окон, сопровождающих процесс построения модели, в результате которого появится уже знакомое главное окно модели (Испытательный стенд) с дочерними окнами Виртуального стенда и переменных. Если окно переменных не появилось, то следует щелкнуть правой клавишей в центре виртуального стенда и в выпавшем меню выбрать Переменные. Обратим внимание, что в окне переменных указана только что введенная нами переменная Вкл и ее исходное значение false (Рис.2.5).
 Создадим окно для 2D-анимации: Окно – Новая 2 D-анимация (рис. 2.5):

 Рис. 2.5. Окна Виртуального стенда и переменных Испытательного стенда. В окне переменных – одна переменная Вкл со значением false. Создание окна 2D-анимации. В меню Окна можно выбрать Новая 2D-анимацию.
 На вопрос: “…установить фиксированное соотношение модельного и реального времени?” ответьте Да.
Пояснение. Окно 2D-анимации называется так потому, что по-английски Dimension – означает размерность. Поэтому 2D – значит двумерная, “плоская”, а анимация означает “оживление”, мультипликация. В окне 2D-анимации элементы могут изменять свой вид, например, при нажатии кнопок модели или с течением времени.
Подравняйте окна.
В меню Сервис выберите Стандартные 2 D-компоненты (это “кубики”, из которых будут строиться модели). Появится окно Стандартные 2 D-компоненты:

 Рис. 2.6. Окно стандартных компонентов. Это стрелочный индикатор, линейный индикатор сплошной, кнопка и др. Их можно переносить мышкой в окно 2D-анимации.
 Удерживая курсор на изображении стандартного компонента, можно увидеть его название.
Для создания модели лампочки с отражателем фонарика используем линейный индикатор сплошной, а для выключателя – кнопку.
 Нужно сделать следующее. Поставить курсор на линейный индикатор сплошной, нажать и удерживая нажатой левую клавишу мыши, перетащить его на поле 2D-анимации и отпустить левую клавишу. Так же перетащить на поле 2D-анимации и Кнопку. Подравнять размеры и расположение элементов.

Рис. 2.7. Расположение “лампочки” - сплошного линейного индикатора (вверху) и “выключателя” – кнопки на поле 2D-анимации.
 Мы близки к окончанию работы. Начинается самое интересное.

Свяжем переменную Вкл с индикатором и кнопкой. Для этого поставим курсор на строку с названием переменной Вкл в окне переменных Фонарик_1_1, нажмем и, удерживая нажатой левую клавишу мыши, перетащим переменную на кнопку в поле 2D-анимации и бросим, т.е. отпустим левую кнопку мыши. И еще раз перетащим переменную Вкл, теперь на индикатор.

Все, работающая модель создана! Проверим, так ли это.

Щелкнем по кнопке левой клавишей мыши. В индикаторе появится светлая каемочка. Не очень впечатляет, но ведь работает. Сделаем свет фонарика ярче: нужно правой кнопкой мыши щелкнуть на индикаторе, выбрать в меню Цвет, в появившемся окне выбрать желтый цвет и нажать ОК. Теперь, при нажатии кнопки фонарик светит веселым желтым светом. Можете выбрать и другой цвет.
Обратим внимание на то, что происходит со значением переменной Вкл в окне переменных Фонарик_1_1 при щелчке по кнопке. Переменная Вкл меняет свое значение с false на true. Поскольку эта переменная отнесена нами и к индикатору, то он “загорается”.

 Рис. 2.8. Зажженный фонарик.
 Пользоваться таким фонариком не очень удобно: он светит только при нажатой левой клавише мыши. Исправим это. Щелкнем по кнопке правой клавишей мыши и в меню выберем Фиксация. Теперь, при щелчке по кнопке фонарика левой клавишей мыши, она остается утопленной, и фонарик горит. Чтобы его выключить, нужно щелкнуть по кнопке еще раз.

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

Модель фонарика готова! Испытайте ее: включая и выключая свет, пронаблюдайте за изменением значения переменной Вкл.
Конечно, это поверхностная, не очень подробная модель, в ней нет, например, батарейки. Но это самая настоящая, хотя и простая, статическая модель и она работает.

2.1.5. Сохранение проекта.

Закрыть главное окно модели (вверху справа). На вопрос: “Сохранить текущие установки?” ответить Да. Закрыть главное окно проекта.

2.1.6. Задание для самостоятельного выполнения.

Создайте в окне 2D-анимации окно избушки, свет в котором днем – белый, а ночью – темно-серый:

 Рис. 2.9. Окно избушки: темное ночью и светлое днем. День и ночь “переключаются” кнопкой.
 В качестве элементов окна используйте Цветовой индикатор из окна Стандартные 2D-компоненты.

Заключение.

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


Простейшие модели. Карта поведения в MVS.

2. Создание простейших моделей.

 2.2. Фонарик_2. Карта поведения модели.
2.2.1. Понятие о работе модели, управляемой событиями.
 2.2.2. Карта поведения в программе MVS.
 2.2.3. Создание проекта Фонарик_2. Математическая формулировка задачи.
Построение алгоритма.
Ввод переменных.
Составление карты поведения модели. Начальный узел Init.
Входные действия узла Init.
Добавление нового узла.
Добавление переходов и условий их срабатывания.
 2.2.4.Создание визуальной модели фонарика.
2.2.5. Сохранение проекта. Заключение.

Если Вы любопытны, то посмотрите на рис. 2.2.15 и рис 2.2.16 в конце этого параграфа. Вы увидите, что получится в результате проектирования.

2.2. Фонарик_2. Карта поведения.

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

2.2.1. Понятие о работе модели, управляемой событиями.

Событие, не очень подходящее слово, слишком для этого значительное, в программировании означает, что в процессе выполнения программы может что-то произойти, то, что будет замечено и воспринято компьютером, и он сможет на это как-то отреагировать. Событием может быть щелчок клавишей мышки, или то, что одна величина станет равной другой, например уровень воды в бассейне достигнет его верхней отметки и т.п. Если до того, как событие случилось, модель MVS действовала в соответствии с одними уравнениями, то после события модель можно подчинить другим уравнениям. Например, до включения крана уровень воды в бассейне был постоянным, а после “события” – включения крана, уровень воды возрастает пропорционально времени.

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

2.2.2. Карта поведения в программе MVS.

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

Для примера приведем еще не завершенную, для наглядности, карту поведения модели и сопутствующие ей окна (рис. 2.2.1) создаваемого проекта Бассейн_1.

Рис. 2.2.1. Фрагмент главного окна (Редактора формул) проекта Бассейн1 в процессе построения алгоритма. Карта поведения отображает узел начального состояния бассейна Init и переход к узлу наполнения бассейна Бассейн_наполняется в результате события - включения крана. Каждый узел соответствует некоторому поведению модели в промежутках между событиями. В двух нижних окнах слева записаны уравнения, которым подчиняется поведение модели в узлах.

В исходном состоянии (узел Init карты поведения) модель подчиняется уравнению h = h0, что означает постоянство начального уровня h воды в бассейне. Добавленный в процессе построения карты поведения узел, названный Бассейн_наполняется, описывается уравнением

h = (v/S)*Time,

что соответствует повышению уровня воды с течением времени Time.
Здесь: v [куб.м/сек] – скорость поступления воды в бассейн при открытом кране,
S – площадь бассейна.

Программа MVS позволяет пользователю строить модель, программировать ее поведение, используя две формы ее описания в карте поведения.
Первая форма применяется в действиях переходов, во входных и выходных действиях узлов. Здесь пользователь может записывать мгновенные действия, которые должна будет выполнить модель, в виде операторов, похожих на те, которые используются, например, в языке Паскаль. Можно использовать операторы: присваивания, условный, цикла, вызова подпрограммы и др. (о правилах записи операторов см. справку в MVS). Фактическое время, затрачиваемое программой на выполнение операторов, не учитывается во времени функционирования модели. Для модели эти действия осуществляются мгновенно.
Вторая форма описания поведения модели используется исключительно для описания непрерывного поведения модели в узле, т.е. здесь описывается то, как ведет себя модель с течением времени. Удобство этой формы заключается в том, что пользователь записывает уравнения, характеризующие поведение модели, в виде, близком к виду записи обычных математических уравнений. Т.о. здесь пользователю не приходится заботиться о составлении алгоритма решения уравнений и записи программы на алгоритмическом языке, MVS это делает сама.
В совокупности, обе формы дают пользователю гибкий и удобный в использовании аппарат описания поведения моделей различной степени сложности.

2.2.3. Создание проекта Фонарик_2.

Математическая формулировка задачи.

Задачу поставим, так же как и в предыдущем проекте. Пусть фонарик состоит из лампочки и кнопки, которая включает и выключает лампочку. Если кнопка нажата, лампочка должна гореть, если отпущена, лампочка должна погаснуть.

Построение алгоритма.

Введем две переменных булевского типа: Вкл и Светит. Если кнопка фонарика нажата, то значение переменной Вкл должно быть true (истина). Если кнопка отпущена, то значение переменной Вкл должно быть равным false (ложь). Если переменная Светит = true, то лампочка должна гореть, в противном случае, когда Светит = false, лампочка должна погаснуть. Т.о. кнопка фонарика управляет значением переменной Вкл, а переменная Светит управляет состоянием лампочки. Алгоритм должен обеспечивать и передачу значения от переменной Вкл к переменной Светит.

Ввод переменных.

Для построения модели Фонарик_2 может быть использован проект Фонарик_1, но для закрепления навыков работы с программой MVS полезно составить проект заново.
Запустите программу MVS. В меню Проект выберите Новый …. Назовите его Фонарик_2 и поместите по адресу: C:\Мои документы\Уч. группы\Гр. АТ-31. На экране появится главное окно Редактора модели. Расположите его дочерние окна удобно.
 Введите две внутренние переменные Вкл и Светит так же, как это делалось в параграфе 2.1.3. Для этого в окне Класс [Фонарик_2] щелкните правой клавишей мыши по пункту Внутренние переменные, выберите Добавить, задайте имя переменной, ее тип – boolean и значение false.

 Рис. 2.2.2. Окно класса Фонарик_2 с введенными переменными Вкл и Светит булевского типа.

Составление карты поведения модели.

Теперь следует приступить к построению Главной карты поведения. Других карт поведения в этом проекте не будет.
 В окне Класс [Фонарик_2] следует дважды щелкнуть левой клавишей мыши по пункту Главная карта поведения (рис. 2.2.2). Появится новое окно (рис. 2.2.3)

Рис. 2.2.3. Исходный вид главной карты поведения.
Один узел Init в проекте имеется всегда и ему может быть приписано непрерывное во времени поведение модели в соответствии с уравнениями, называемыми Система_уравнений_1. Система уравнений вводится в специальном редакторе формул. Название системы уравнений может быть изменено и сделано соответствующим поведению модели в узле.

Начальный узел Init. В рассматриваемом проекте Фонарик_2 в исходном состоянии фонарик должен быть выключен, т.е. его кнопка должна быть отпущена, а лампочка не должна гореть. Другими словами, узел Init карты поведения должен соответствовать выключенному состоянию фонарика. Изменения состояния фонарика в узле Init с течением времени не будет. Модель – статическая. Поэтому в системе уравнений, приписываемых узлу Init, пока уравнений не будет.

Для повышения наглядности карты поведения изменим название системы уравнений узла Init. Щелкнем дважды в окне Класс – [Фонарик_2] (рис.2.2.2) по пункту Система_уравнений_1, которая, как видно на рис. 2.2.3, приписана узлу Init. Появится и станет активным окно Система уравнений – [Фонарик_2.Система_уравнений_1]:

Рис. 2.2.3,а. Окно исходной системы уравнений узла Init.
Щелкнем по кнопке Имя системы уравнений, в появившемся окне (рис. 2.2.4) введем без пробелов Фонарик_погашен и щелкнем по кнопке ОК.

Рис. 2.2.4. Изменение названия системы уравнений.
 Подвинем влево надпись Фонарик_погашен в окне карты поведения. Она примет такой вид:

Рис. 2.2.5. Карта поведения с новым названием системы уравнений узла Init. Показана кнопка Создать новый узел.

Входные действия узла Init.

 Выключение фонарика обеспечим в момент перехода модели в состояние, соответствующее узлу Init. Щелкнем правой клавишей по узлу Init, и в выпавшем меню выберем пункт Входные действия в узле:

Рис. 2.2.6. Открытие редактора формул входных действий, которые программа должна выполнить при входе в узел Init.
 В появившемся окне редактора формул введем оператор Светит := false; и щелкнем по кнопке Сохранить и выйти.

Рис. 2.2.7. Фрагмент окна редактора формул для входных действий узла Init. Показана кнопка Сохранить и выйти.
 Карта поведения примет вид:

Рис. 2.2.8. Карта поведения с указанием действий при входе (entry actions) в начальный узел. В данном случае, действие одно, оно состоит в присвоении переменной Светит значения false.

Добавление нового узла.

 Добавим узел, соответствующий включенному состоянию фонарика. Нужно щелкнуть по кнопке Создать новый узел в окне карты поведения (рис. 2.2.8), переместить курсор на поле карты (он примет вид крестика), в правой части карты нажать левую клавишу и удерживая ее растянуть вправо вниз овал нового узла с названием. Изменить название узла на содержательное: щелкнуть дважды на тексте Node_1 и ввести новое название Фонарик_светит.
Задать действия, которые необходимо выполнить при входе в узел Фонарик_светит. Делается это точно так же, как и для узла Init (рис. 2.2.6, рис. 2.2.7). В редакторе формул записать:
Светит := true;

Рис. 2.2.9. Входное действие узла Фонарик_светит.
 Щелкнуть по кнопке с зеленой галочкой Сохранить и выйти.
Примечание. Редактор формул замечает синтаксические ошибки и при попытке сохранить их и выйти, и сообщает об этом. Например, если забыть поставить в конце оператора точку с запятой (;), то редактор откажется сохранять такую запись и сообщит об этом.
После перемещения элементов на свободные места, карта поведения примет вид:

Рис. 2.2.10. Два узла на карте поведения. При входе в каждый программа выполнит разные действия.
 Поскольку мы строим статическую модель, то уравнений, отражающих поведение фонарика во включенном состоянии не требуется. Поэтому приписывать систему уравнений узлу Фонарик_светит не будем.

Добавление переходов и условий их срабатывания.

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

Создание перехода фонарика из состояния погашен в состояние светит.

Слева на карте поведения щелкнем кнопку Создать новый переход (рис. 2.2.10). Курсор примет вид крестика в кружочке. Следует навести его на узел Init, нажать левую клавишу мыши и, удерживая ее, переместить курсор на узел Фонарик_горит. Отпустить левую клавишу. Получится горизонтальная линия перехода с точкой посредине. Ухватите за точку и поднимите ее вверх на 1 –1.5 см.
Можно добавить и еще одну точку, щелкнув по линии перехода правой клавишей и выбрав из выпавшего меню Добавить опорную точку. Курсор станет крестиком, подвести его в нужном месте к линии и когда возникнет точка на курсоре, щелкнуть левой клавишей. Теперь линию можно изменять, ухватившись как за одну, так и за другую опорную точку. Проведение красивых линий переходов требует определенного навыка. Если линия не получилась или не нравится, то ее можно удалить, щелкнув по ней правой клавишей и выбрав Удалить переход.

Теперь следует поставить условие срабатывания перехода. Переход определяется событием – нажатием кнопки фонарика. Поэтому переход должен происходить в момент, когда переменная Вкл примет значение true. Щелкнем правой клавишей по переходу и выберем в меню пункт Условие срабатывания перехода. В появившемся диалоговом окне выберем when (переводится “когда”) и введем условие Вкл = true (рис. 2.2.11).

Рис. 2.2.11. Задание условия срабатывания перехода. Переход от одного вида поведения фонарика, соответствующего узлу Init, к другому произойдет в тот момент, когда переменная Вкл примет значение true.
 Нажать ОК. В окне карты поведения рядом с переходом появится сноска when Вкл = true. Эту надпись можно переместить, схватив левой клавишей мыши. В результате карта поведения примет вид рис. 2.2.12:

 Рис. 2.2.12. Мгновенный переход из узла Init в узел Фонарик_светит происходит тогда, когда переменная Вкл получает значение true (истина).
 В результате перехода, при входе в узел Фонарик_светит переменная Светит примет значение true и лампочка, которую мы свяжем позднее с этой переменной загорится.

Создание перехода из состояния Светит в состояние Погашен.

 Щелкнем по кнопке Создать новый переход в карте состояния (рис. 2.2.10). Соединим узел Фонарик_светит с узлом Init, именно в таком направлении. Щелкнем правой клавишей по линии вновь созданного перехода и в выпавшем меню выберем Условие срабатывания перехода. В появившемся окне выберем запускающее событие when и введем логическое выражение Вкл = false.

Рис. 2.2.13. Ввод условия срабатывания перехода от поведения модели в узле Фонарик_погашен к поведению в узле Init.

Щелкнем по кнопке ОК. Подравняем элементы карты поведения. Она примет примерно такой вид:

Рис. 2.2.14. Законченная карта поведения.

Работа в Редакторе моделей завершена. Теперь можно строить визуальную модель.

2.2.4. Создание визуальной модели фонарика.

Работа будет проводиться точно так же, как в пункте 2.1.4. при построении модели Фонарик_1.
В окне редактора моделей щелкнуть по кнопке Запустить модель, замелькают окна и через короткое время на экране появится окно Испытательного стенда – графической среды создания и функционирования модели. Обратите внимание, что теперь в окне переменных две переменные: Вкл и Светит.

Рис. 2.2.14. Фрагмент окна Испытательного стенда вскоре после запуска модели. Окно переменных содержит две переменные Вкл и Светит со значениями false, введенные ранее в редакторе модели.
 Для вызова окна переменных, если оно отсутствует, следует щелкнуть правой клавишей по центру прямоугольника Фонарик_2_1 в окне Виртуального стенда и выбрать Переменные (рис. 2.2.14).
Далее следует вызвать окна 2D-анимации и стандартных компонентов и разместить в окне 2D-анимации Линейный индикатор сплошной и кнопку. Делается это точно так же, как и в предыдущем проекте, переносом элементов из окна стандартных компонентов на поле окна 2D-анимации. Щелкнуть правой клавишей по кнопке модели и выбрать Фиксация. Под кнопкой поместить надпись “Выключатель”. Цвет индикатора сделать красным (или другим, по желанию). Окно 2D-анимации назвать Сигнальный фонарик.

Связывание переменных с объектами в поле 2D-анимации.

Перетащить переменную Вкл из окна переменных на кнопку, а переменную Светит – на индикатор.

 Рис. 2.2.15. Модель Сигнальный фонарик во включенном состоянии фонарика, вспомогательные и контрольные окна Испытательного стенда. Видно, что кнопка утоплена, с индикатором связана переменная Светит. Значение обеих переменных Вкл и Светит - true. Минимальное значение, воспроизводимое непрерывным индикатором, изображающим лампочку, ноль, а максимальное – единица.

Модель готова. Проверьте ее работу, щелкая по кнопке. Внешне ничего не изменилось по сравнению с моделью Фонарик_1. Тем не менее, эта модель внутренне более подробная и содержательная.
Обратите внимание, что значения переменных в окне переменных при нажатии и отпускании кнопки меняются одновременно. Но это происходит не так, как в первой модели. Здесь кнопка изменяет значение только переменной Вкл, значение же переменной Светит придает входное действие узла Фонарик_светит, после срабатывания перехода, вызванного событием “Щелчок по кнопке модели”.

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

2.2.5. Сохранение проекта.

Закрыть главное окно модели (вверху справа). На вопрос: “Сохранить текущие установки?” ответить Да. Закрыть главное окно проекта. Ответить Да на вопрос о сохранении проекта.

Заключение.

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

Далее


Фонарик с батарейкой. Динамическая модель

2.3. Фонарик_3. Построение динамической модели.

Построение первой динамической модели. Учитывается расходование энергии батарейки с течением времени. Локальное поведение в узлах. Действия переходов. Окно диаграммы (графика зависимости переменной от времени).

 2.3.1. Математическая формулировка задачи.
 2.3.2. Построение алгоритма.
 2.3.3. Преобразование проекта Фонарик_2 в проект Фонарик_3.
 Сохранение проекта под новым названием. Переименование объектов проекта и модели.
Ввод переменной и параметра.
Запись уравнений узлов.
Изменение входных действий узлов.
Доработка модели фонарика.
Проверка работоспособности модели. Первый запуск модели.
Исследование модели. Окно диаграммы (осциллографа).
Коррекция алгоритма.Коррекция входных действий узлов.
Коррекция действий переходов.
Тестирование модели.

Заключение.

2.3.1. Математическая формулировка задачи.

 Фонарик_3 будет, как и ранее, состоять из кнопки и лампочки, но при нажатии кнопки, на лампочку должно подаваться напряжение от батарейки. И чем дольше горит фонарик, тем меньшее напряжение должна вырабатывать батарейка модели и тем слабее должна светить лампочка. В этом и состоит динамика модели: напряжение и связанная с ним яркость свечения лампочки зависят от времени.

Рис. 2.3.1. Электрическая схема моделируемого фонарика.
 Уменьшение напряжения батарейки со временем опишем уравнением:

где: UБ(t) – зависимость напряжения батарейки от общего времени ее работы;
 U0 – напряжение, создаваемое новой батарейкой;
 t - общее время работы батарейки в фонарике;
 T - срок службы батарейки, работающей в фонарике. Это характерное время, в течение которого батарейка разрядится почти на две трети, точнее, ее напряжение составит 37% от начального. У многих батареек для фонариков время T составляет 2 – 3 часа.

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

2.3.2. Построение алгоритма.

 В качестве переменных выберем булевскую переменную Вкл, которая будет соответствовать состоянию выключателя, и переменную Напряжение типа double, которая будет определять напряжение, подаваемое на лампочку в момент, когда Вкл становится true. В момент времени, когда кнопка отжимается, Вкл должна становиться false и напряжение должно от лампочки отключаться, т.е. переменная Напряжение должна принимать значение ноль. Переменная Напряжение при запуске в работу модели должна изменяться со временем в соответствии с формулой (2.3.1), тогда, когда переменная Вкл имеет значение true.

Примечание. Если в процессе отладки модели потребуется ввести еще какие-то переменные, то мы тогда это и сделаем.

2.3.3. Преобразование проекта Фонарик_2 в проект Фонарик_3.

Проект Фонарик_3 нетрудно построить и с нуля, но мы используем проект Фонарик_2 в качестве исходного, потому что там уже выполнена значительная часть работы.
Создайте папку Фонарик_3 для нового проекта по адресу: C:\Мои документы\Уч. группы\Гр. АТ-31. Запустите в MVS проект Фонарик_2 из папки C:\Мои документы\Уч. группы\Гр. АТ-31\Фонарик_2.

Сохранение проекта под новым названием.

Сохраним проект: меню Проект – Сохранить как… В окне сохранения проекта перейти в созданную папку Фонарик_3, назвать сохраняемый проект Фонарик_3.mvb, щелкнуть по кнопке Сохранить.

Переименование объектов проекта и модели.

Переназовем объекты проекта: в окне Класс-[Фонарик_2] дважды щелкнем по верхнему пункту Фонарик_2 и напишем Фонарик_3. Щелкнем за пределами окна класса. Теперь в окне проекта Класс блоков содержит Фонарик_3, окно класса называется Class Фонарик_3. Изменим название Виртуального стенда, в одноименном окне на Фонарик_3_1, щелкнув дважды на названии Фонарик_2_1. Кроме того, зададим и Имя модели, щелкнув по синей кнопке в окне Виртуального стенда. Назовем модель Фонарик с батарейкой (рис 2.3.2).

Рис. 2.3.2. Переименование модели.

Ввод переменной и параметра.

Переменная Вкл уже определена, добавим переменную Напряжение: в окне Класс-[Фонарик_3] нужно щелкнуть правой клавишей по пункту Внутренние переменные, выбрать в выпавшем меню Добавить и в появившемся окне ввести Напряжение. Оставить тип double и значение 0. Нажать ОК.
Таким же образом добавим параметр Срок_службы батарейки, типа double с начальным значением 5 часов. Правой клавишей нужно щелкнуть по пункту Параметры, выбрать Добавить и в появившемся окне ввести без пробелов Срок_службы. Нажать ОК.

Параметр – это величина, которую, в отличие от переменной, нельзя менять в процессе работы модели, но можно изменить до запуска модели в работу. Действительно, у той батарейки, что установлена сейчас в фонарике, свой срок службы. И только поставив в фонарик другую батарейку, с другим сроком службы, можно его изменить. А для этого нужно остановить модель. Поэтому срок службы целесообразнее задать параметром, а не переменной.
Примечание. В окне Класс-[Фонарик_3] переменную можно перетащить мышкой из пункта Внутренние переменные в пункт Параметры и обратно.

Переменную Светит удалим позднее, когда уберем ее из входных действий узлов.
Получим в окне Класс [Фонарик_3]:

Рис. 2.3.3. Добавлены переменная Напряжение и параметр Срок_службы.

Запись уравнений узлов.

Переведем на передний план окна Карта поведения и Класс [Фонарик_3], щелкнув по ним. Если этих окон не видно, значит, они закрыты другими окнами, которые следует сдвинуть вниз или в стороны.
 Зададим уравнение, которое будет определять поведение модели при включенном фонарике, т.е. в узле Фонарик_светит. Для этого нужно щелкнуть правой клавишей по узлу Фонарик_светит в карте поведения:

 Рис. 2.3.4. Создание системы уравнений для узла Фонарик_светит.
 и выбрать пункт Создать новую систему уравнений.
Появится окно Система уравнений – [Фонарик-3.Система_уравнений_2] и в карте поведения узлу Фонарик_светит будет приписана Система_уравнений_2. При необходимости элементы карты поведения можно подравнять (рис. 2.3.5).

Рис. 2.3.5. Узлу Фонарик_светит приписана система уравнений. Показана кнопка изменения названия системы уравнений.
 Изменим название системы уравнений, приписанной узлу Фонарик_светит на содержательное. Щелкнем по кнопке Имя системы уравнений в окне Система уравнений и в появившемся окне введем без пробелов: Батарейка_разряжается.

 Рис. 2.3.6. Изменение названия системы уравнений.
 Нажмем кнопку ОК. В карте поведения и в окне Система уравнений название изменится, а в окне Class Фонарик_3 появится пункт Системы уравнений с названием Батарейка_разряжается.
Введем уравнение, описывающее уменьшение напряжения батарейки с течением времени. Нужно в окне Система уравнений щелкнуть правой клавишей по пункту Уравнения и в выпавшем меню выбрать Изменить:

Рис. 2.3.6,а. Вызов редактора формул системы уравнений.
 В появившемся окне Редактор формул ввести:

Напряжение = 1*exp(-Time/Срок_службы)

Напомним, что в этой формуле:
1 - начальное напряжение в Вольтах, даваемое новой батарейкой,
Time – время, внутренняя переменная программы MVS,
Срок_службы – срок службы батарейки.
Редактор формул представит уравнение в виде:

 Рис. 2.3.7. Запись уравнения в редакторе формул. Показана кнопка Сохранить и выйти.
 Щелкнуть по кнопке Сохранить и выйти. Окно системы уравнений примет вид:

Рис. 2.3.8. Уравнение разряда батарейки, соответствующее узлу Фонарик_светит.

Изменение входных действий узлов.

Функции переменной Светит в данном проекте более содержательно будет выполнять переменная Напряжение, поэтому изменим входные действия узлов, где использовалась переменная Светит. Во входных действиях узла Init заменим оператор Светит:=false на оператор
Напряжение:= 0;
Для этого, щелкнем правой клавишей по узлу Init в карте поведения и в выпавшем меню выберем Входные действия в узле. Появится окно редактора формул, где следует удалить оператор Светит:=false; (выделить и нажать клавишу Delete на клавиатуре) и ввести оператор

 Рис. 2.3.9. Входное действие узла Init.
Нажать кнопку с зеленой галочкой Сохранить и выйти.

Входные действия для узла Фонарик_светит теперь не требуются, поэтому удалим оператор Светит:=true. Это делается так же, как только что проделано для узла Init.
 Теперь, поскольку переменная Светит не участвует в работе модели, ее можно исключить из списка переменных проекта. В окне Класс [Фонарик_3] нужно щелкнуть правой клавишей по пункту Светит: boolean := false; списка Внутренние переменные и в выпавшем меню выбрать Удалить. Подтвердить удаление в появившемся диалоговом окне.

Рис. 2.3.10. Окна Редактора модели проекта Фонарик_3.
 Алгоритм работы фонарика, в его простейшем виде реализован, и можно приступить к доработке модели.

Доработка модели фонарика.

Создадим модель. Для этого нужно, как и ранее, нажать на кнопку с зеленым треугольником Запустить модель в Редакторе модели - главном окне проекта. В результате появится окно Испытательного стенда.

Связывание переменных с объектами 2D-анимации.

Поскольку окно 2D-анимации уже было построено в предыдущем проекте, то остается лишь связать переменные с его элементами.

В появившемся окне Испытательного стенда следует схватить левой клавишей переменную Напряжение в окне переменных Фонарик3_1, удерживая клавишу, перенести переменную на непрерывный индикатор в окне Сигнальный фонарик и бросить, отпустив левую клавишу. Если задержать на пару секунд курсор на индикаторе, то всплывет надпись, сообщающая о том, что индикатору присвоена переменная Напряжение, а также о том, что индикатор отображает величины в пределах от 0 до 1. Проделайте для контроля то же самое с кнопкой фонарика. Должно появиться сообщение, что кнопка связана с переменной Вкл. Если такое сообщение не появится, то свяжите кнопку с переменной Вкл, перетащив ее из окна переменных на кнопку.

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

Заменим название фонарика. Щелкнем правой клавишей на свободном месте окна 2D-анимации и из выпавшего меню выберем Заголовок окна. В появившемся окне введем заголовок Фонарик с батарейкой и нажмем ОК.

Черновой вариант модели готов.

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

Проверим работу модели в статике. Щелкнем по кнопке фонарика. Как видно, кнопка утоплена и индикатор, представляющий лампочку приобрел зеленый цвет. Щелкнем по кнопке еще раз, она перейдет в отпущенное состояние, и фонарик погаснет.
Теперь давайте запустим модель в работу и проверим ее в динамике.
В меню Установки Испытательного стенда выберем пункт Модель, в появившемся окне установим галочку: Останов через 10 сек.

Первый запуск модели.

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

Рис. 2.3.11. Черновая модель Фонарик с батарейкой в процессе работы. На момент снимка величина напряжения батарейки, подаваемого на лампочку составляет 0.6440 В, окно лампочки залито зеленым только на две трети, что условно отображает снижение яркости фонарика.

Т.о. поставленная задача на первый взгляд решена.

Исследуем модель подробнее.
Для этого добавим окно временной диаграммы (осциллографа) – диаграммы, позволяющей наглядно изображать зависимость изменения величины напряжения от времени. Перетащим на окно модели Фонарик с батарейкой из окна Стандартные 2D-компоненты элемент Диаграмма. Растянем окно Фонарик с батарейкой и в нем растянем Диаграмму. Наконец перетащим переменную Напряжение из окна переменных на диаграмму и бросим.

 Рис. 2.3.12. Модель фонарика с помещенной на нее Диаграммой, с которой связана переменная Напряжение.
 Поскольку напряжение будет меняться только от1 В до 0 В, изменим пределы Диаграммы по вертикальной оси. Щелкнем правой клавишей по Диаграмме и выберем Настройка. В появившемся окне установим минимальное значение по оси Y равным 0, сделаем шаг по этой оси 0.25, назовем оси X и Y Время и Напряжение соответственно.

Рис.2.3.13. Уточнение параметров настройки диаграммы.
 Щелкнем по кнопке Закрыть.
 Запустим модель на выполнение кнопкой Пуск. Включим, выключим и вновь включим фонарик. На диаграмме рисуется график изменения напряжения в зависимости от времени.

Рис.2.3.14. График зависимости напряжения на лампочке от времени. В моменты выключения напряжение становится нулевым и лампочка перестает светить. Но батарейка разряжается и тогда, когда фонарик выключен.
 Как видно из рис. 2.3.14, батарейка разряжается и при выключенном фонарике. Но так не должно быть. Батарейка может разряжаться только при включенном фонарике. Поэтому алгоритм работы модели должен быть скорректирован.

Коррекция алгоритма. Коррекция входных действий узлов.

 Поступим следующим образом. Будем запоминать напряжение батарейки в момент выключения фонарика, и время его выключения. В момент следующего включения фонарика программа должна подставлять запомненное значение напряжения в формулу разряда батарейки и корректировать время работы фонарика. Введем переменную Напр_Выкл ( щелкнуть правой клавишей по пункту Внутренние переменные в окне Класс – Фонарик_3, выбрать Добавить), типа double и начальным значением 1. Аналогично добавим переменную Врем_до_Вкл, типа double со значением 0.
В окне Система уравнений – [Фонарик3.Батарейка_разряжается] щелкнем дважды по пункту Уравнения и в редакторе формул изменим формулу на следующую:
 Напряжение = Напр_Выкл*exp(-(Time-Врем_до_Вкл)/Срок_службы))
 Если все введено правильно, то редактор формул представит формулу в виде:

Рис. 2.3.15. Ввод модифицированного уравнения.
 Щелкнем по кнопке Сохранить и выйти. Окно системы уравнений примет вид:

Рис. 2.3.16. Модифицированное уравнение введено.
 Зададим входные действия узла Фонарик_светит. В карте поведения щелкнем правой клавишей по этому узлу и из выпавшего меню выберем Входные действия в узле. В появившемся окне редактора формул введем
 Врем_до_Вкл := Time;
 Напряжение:=Напр_Выкл;
Первый оператор позволит исключить в формуле разряда батарейки время, прошедшее с момента выключения фонарика до его очередного включения. Второй оператор задает начальное значение напряжения, с которого батарейка будет разряжаться после очередного включения.

 Рис. 2.3.17. Входные действия узла Фонарик_светит.
 Щелкнем по кнопке Сохранить и выйти (с зеленой галочкой). Подравняем расположение элементов в окне карты поведения.

 Рис. 2.3.18. Карта поведения модели. Указаны входные действия узлов.

Коррекция действий переходов.

Остается записать оператор, который должен запоминать напряжение батарейки в момент ее выключения. Это можно сделать в выходных действиях узла Фонарик_светит или в мгновенных действиях перехода фонарика when Вкл = false из включенного состояния в выключенное. Для разнообразия, чтобы показать и такую возможность, воспользуемся вторым способом.
В карте поведения щелкнем правой клавишей по нижнему переходу when Вкл = false, в выпавшем меню выберем Действия перехода:

Рис. 2.3.19. Запуск редактора мгновенных действий, выполняемых в момент перехода модели от одного вида поведения (узел Фонарик_светит) к другому (узел Init).
 В появившемся окне Мгновенные действия перехода запишем оператор:
Напр_Выкл := Напряжение;

Рис. 2.3.20. Мгновенное действие перехода от узла Фонарик_светит к узлу Init.
 Щелкнем по кнопке Сохранить и выйти.
При необходимости, следует подравнять расположение элементов в карте поведения. Она приобретет вид:

Рис. 2.3.21. Модифицированная карта поведения в Редакторе модели.

Алгоритм реализован. Протестируем модель.

Тестирование модели.

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

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

Заключение.

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

Далее


Динамическая модель. Диффуравнение

 2.4. Описание модели фонарика с использованием дифференциального уравнения.
2.4.1. Математическая формулировка задачи.
2.4.2. Реализация алгоритма.
 2.4.3. Преобразование проекта Фонарик_3 в проект Фонарик_31.
 2.4.4. Корректировка уравнения для узла Фонарик_светит.
 2.4.5.Тестирование динамической модели, описываемой
дифференциальным уравнением.
2.4.6. Задание для самостоятельной работы.

Заключение.

2.4.1. Математическая формулировка задачи.

Формулировка та же самая, за тем исключением того, что описание процесса разряда батарейки мы опишем теперь дифференциальным уравнением, записанным в так называемой форме Коши, когда слева в уравнении оставляется только старшая производная:

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

Для однозначного решения дифференциального уравнения (2) должно быть задано начальное условие. Это значение напряжения батарейки на момент начала решения диффуравнения.

Отметим, что уравнение (1), использованное нами ранее для описания процесса разряда батарейки и есть решение уравнения (2). Поэтому доработка проекта не составит большого труда.

2.4.2.Реализация алгоритма.

Изменение алгоритма будет состоять в том, что вместо уравнения (1) следует записать, в обозначениях, принятых в проекте Фонарик_3, уравнение (2).

2.4.3. Преобразование проекта Фонарик_3 в проект Фонарик_31.

Как и ранее, создадим папку Фонарик_31 по адресу C:\Мои документы\Уч. группы\Гр. АТ-31. Запустим проект Фонарик_3 и сохраним его в этой папке, дав ему название Фонарик_31. Изменим в проекте название класса на Фонарик_31, а Виртуального стенда на Фонарик_31_1.

2.4.4. Корректировка уравнения для узла Фонарик_светит.

Вызвать окно системы уравнений Батарейка_разряжается на передний план двойным щелчком левой клавиши по одноименному пункту в окне Class Фонарик_31. Двойным щелчком по уравнению разряда батарейки, вызвать окно редактора формул. Стереть уравнение и записать на его место уравнение, соответствующее уравнению(2):

Для записи выражения производной в редакторе формул следует использовать кнопку d/dt. Нажать кнопку Сохранить и выйти.

 Рис.2.4.1. Дифференциальное уравнение, определяющее поведение напряжения батарейки при включенном фонарике.
 Изменение алгоритма закончено. Начальное условие, в процессе работы модели, будет задаваться с помощью входного действия узла Фонарик_светит путем присвоения переменной Напряжение значения переменной Напр_Выкл, т.е. того значения напряжения батарейки, которое было в момент предыдущего выключения фонарика. С нового значения напряжения батарейка начнет разряжаться при очередном включении.

2.4.5. Тестирование динамической модели, описываемой дифференциальным уравнением.

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

Рис. 2.4.2. Модель фонарика, где разряд батарейки описывается дифференциальным уравнением.

2.4.6. Задание для самостоятельной работы.

 Перенесите оператор Напр_Выкл := Напряжение из мгновенных действий перехода по условию when Вкл = false в выходные действия узла Фонарик_светит.
Протестируйте модель.

Заключение.

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


Простая анимация в MVS

3. Простая анимация.

3.1. Создание проекта модели.
 3.2. Построение 3D-анимации.

Вывод окна новой 3D-анимации.
Построение фигуры фонарика из примитивов.
Связывание переменных со свойствами примитивов в окне 3D- анимации.
3.3. Тестирование модели.
 Заключение

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

Рис. 3.1. 3D-анимация позволяет видеть включение и выключение фонарика, и постепенное уменьшение его свечения по мере расходования энергии батарейки.

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

3.1. Создание проекта модели.

Проект заново создавать не будем, а воспользуемся проектом Фонарик_31. Создадим папку 3D-анимация по адресу C:\Мои документы\Уч. группы\Гр. АТ-31. Откроем из папки примеров проект Фонарик_31 и сохраним его под названием Фонарик_3D в папке 3D-анимация. Заменим название в окнах Class Фонарик_3D и Виртуального стенда на Фонарик_3D. Проект готов для создания 3D-анимации в модели.

Рис. 3.2. Редактор модели - главное окно проекта MVS Фонарик_3D.

3.2. Построение 3D-анимации.

Запустить модель кнопкой с зеленым треугольником.

Вывод окна новой 3D- анимации.

В меню Окна появившегося главного окна модели - Испытательного стенда, выбрать Новая 3D-анимация:

Рис. 3.3. Вывод окна новой 3D- анимации.
 Далее следует упорядочить размер и расположение окон в Испытательном стенде и элементов в окне 2D-анимации, с тем, чтобы окна 2D- и 3D-анимации не перекрывались, например вот так:

Рис. 3.4. Примерное расположение окон модели при построении новой пространственной анимации.
 Окно Стандартные 2D-компоненты можно закрыть.
Щелкнуть на окне 3D-анимации и в появившемся меню выбрать Свойства. Появится окно Свойства 3D-анимации. На вкладке Общие установки ввести Заголовок Фонарик светит слабее (рис. 3.5).

Рис. 3.5. Введение названия 3D-анимации.

Построение фигуры фонарика из примитивов.

 Анимация будет составлена из простейших фигур: цилиндра и конуса, которые будут изображать корпус фонарика, и конуса желтого цвета, для изображения света фонарика.
В окне Свойства 3D-анимации (рис. 3.5) перейти на вкладку Объекты. Щелкнуть по кнопке Добавить цилиндр и ввести его свойства в таблице, появившейся в правой части окна свойств:

Рис. 3.6. Добавление цилиндра – корпуса фонарика, в анимацию и задание его свойств.
Задать z1 = - 0.5, z2 = -2 и Радиус = 0.2.
Примечание. Если временно выдвинуть окно 3 D-анимации вправо, то можно будет наблюдать появление и изменение в нем фигур при изменении их свойств. Так можно подбирать нужные параметры фигур.
Щелкнем по кнопке Добавить конус на вкладке Объекты в окне Свойства 3D-анимации. Задать его свойства: z2 = - 0.5, Радиус2 = 0.2, закрытый = true:

Рис. 3.7. Свойства расширяющейся части фонарика.
 Добавим конус, который будет изображать свет. Щелкнем по кнопке Добавить конус и зададим его свойства:
  • цвет – желтый (щелкнуть дважды и в окне выбрать желтый цвет, нажать ОК),
  • Радиус1 = 0.4,
  • Радиус2 = 0.6,
  • закрытый - true (двойным щелчком по значению),
  • Видимость - false.

Рис. 3.8. Задание значений свойств конуса света фонарика.

Связывание переменных со свойствами примитивов в окне 3D- анимации.

 В нашей простой анимации изменяться со временем будет высота и раствор конуса света. Поэтому переменные проекта Фонарик_3D будут связаны только со свойствами второго конуса cone3.
Сдвинуть окно Свойства 3D-анимации так, чтобы было видно и окно переменных. Перетащить и бросить переменную Вкл в строку Видимость раздела Переменная свойств объекта cone3, а переменную Напряжение в строки z2 и Радиус2.

Рис. 3.9. Связывание переменных со свойствами объекта cone3 способом перетаскивания и бросания.
Закрыть окно Свойства 3D-анимации.

Создание 3D-анимации завершено. Можно приступать к тестированию модели и анимации.

3.3. Тестирование модели.

Если все сделано правильно, то при запуске модели и включении фонарика, в окне 3D-анимации появляется сноп желтого света, уменьшающийся с течением времени, а при выключении фонарика свет исчезает. Фонарик можно поворачивать и рассматривать с разных сторон, схватив левой клавишей мыши и сдвигая ее. Для продолжения работы модели следует нажать кнопку Пуск, а для возобновления работы заново следует нажать кнопку Рестарт на панели инструментов главного окна модели.

Заключение.

Вы познакомились с некоторыми инструментами создания моделей в среде MVS, теперь Вы можете создавать свои модели, и их полезность, сложность и красота будут определяться только Вашей фантазией. Будет полезно познакомиться с примерами анимации, прилагаемой к программе MVS по адресу C:\Program Files\mv30\Examples\3D.

К содержанию


Федосов Борис Трофимович

Федосов Борис Трофимович Родился в 1950г., в г. Калининграде, Калининградской обл., РСФСР.
В 1954 г. приехал в Кустанайскую обл. Казахстана с родителями на целину.
Учился в школах № 7 и №6 г. Рудного и в г. Ленинграде (шк.№331 - 1кл., шк.№497 - 7 кл.) Окончил 10 класс в физматшколе № 165 в Академгородке Новосибирска в 1967 г.
Окончил Новосибирский электротехнический институт в 1973 г., инженер-радиотехник.
С 1973 работает в Рудненском индустриальном институте (РИИ): старшим лаборантом кафедры ЭАГР; с 1974 г. - преподавателем, старшим преподавателем, зав. кафедрой (1982 - 1985г.) высшей геодезии РИИ.
1980 г. - защитил кандидатскую диссертацию в Московском институте инженеров геодезии, аэрофотосъемки и картографии. Тема диссертации: "Разработка и исследование светодальномеров с активным ответом".
1985 - 1990 г. - зав. кафедрой электротехники РИИ.
С 1991 г. - доцент кафедры АТПиП.
Трудов и изобретений - 22. Основные работы в областях: светодальномерная техника, оптическая длинобазисная интерферометрия.
Читал курсы: радиогеодезии; автоматизации высокоточных инженерно-геодезических измерений; электротехники; ТОЭ, ТАУ; телемеханики; программирования и вычислительной техники и др.
2003 г.

E-mail: defbort@mail.kz

Кафедра АТПиП РИИ

459120; Казахстан;
Костанайская область; г. Рудный;
ул. 50 лет Октября 38, 52, 54;
Рудненский индустриальный институт;
телефон (8-31431) 5-04-01 (доб.131)
или 5-02-80 (доб.131)
Сайт кафедры:http://web.host.kz/atpp
E-mail:atpp@mail.kz

К содержанию