Создаем компонентную модель.
Создание компонентной модели мы продемонстрируем на примере измерительной системы скорости и пути маятника (см. «Моделирование в примерах»). Откроем проект «Маятник.mvb» и с помощью команды «Файл / Сохранить как» скопируем его в файл «ИзмерительнаяСистема.mvb».
Путь к готовому примеру «Модели\Маятник\ИзмерительнаяСистема.mvb».
Внешние переменные.
Класс «Маятник» будет использоваться практически без изменений: нужно только сделать внутренние переменные внешними видимыми извне выходами. Сделать это очень просто. В окне класса «Маятник» хватаем мышкой изображение переменной в секции «Внутренние переменные», тащим его с прижатой кнопкой мыши в раздел «Выходы» и там бросаем (опять все тот же метод drag-and-drop!). После всех этих манипуляций в классе «Маятник» исчезнет внутренняя переменная и появится выход . В отличие от внутренней переменной в описании внешней переменной должна присутствовать дополнительная информация об ее расположении на условном изображении блока. Поэтому при добавлении в классе «Маятник» новой внешней переменной немедленно открывается окно редактирования структуры класса «Маятник» (Рис 6.1а). По умолчанию все входы располагаются на левой стороне прямоугольника, изображающего на структурной схеме блок, а все выходы на правой. Вы можете задать любое расположение внешних переменных, перетаскивая мышкой изображение входа или выхода. на нужную сторону. Например, чтобы переместить выход на верхнюю сторону, подведите курсор мыши на стрелку, изображающую выход (курсор изменится, показывая возможность перемещения), нажмите левую кнопку мыши и, не отпуская ее, перемещайте мышь на верхнюю сторону прямоугольника (курсор изменится на крестообразный). При попадании на стороны прямоугольника в центре креста курсора появится жирная точка, сигнализирующая о возможности бросания. Отпустите кнопку мыши и выход будет изображаться на верхней стороне блока. По умолчанию внешние переменные располагаются на сторонах равномерно, то есть разместится точно на середине стороны.
а) б)
Рис 6.1
Аналогичным образом сделаем выходом и внутреннюю переменную . Выходы разместятся на правой стороне блока на расстоянии одной трети стороны друг от друга и от края (Рис 6.1б). Если вы захотите поменять их местами, например, расположить ниже , перетащите ниже на ту же правую сторону и бросьте. После этого переменные снова автоматически разместятся равномерно, но в новом порядке.
В окне структуры вы можете добавлять новые внешние переменные, редактировать свойства существующих внешних переменных, а также удалять эти переменные. Напомним, что те же действия вы можете выполнить и в окне класса.
Чтобы добавить новый вход или выход нажмите соответственно на кнопки или на левой инструментальной панели в окне структуры (Рис 6.1) или выполните команды «Добавить новый вход» или «Добавить новый выход» всплывающего меню (появляется при нажатии правой кнопки мыши в окне структуры). Далее подведите курсор мыши к стороне блока, на которой вы хотите расположить новую внешнюю переменную (в центре креста курсора появится жирная точка), и нажмите левую кнопку мыши. После этого возникнет диалог редактирования имени, типа и начального значения переменной, такой же, что и для внутренней переменной (Рис 4.1).
Чтобы войти в диалог редактирования свойств внешней переменной дважды щелкните мышью на ее изображении.
Чтобы удалить внешнюю переменную выделите ее и выполните команду «Удалить выделенный элемент» всплывающего меню или команду «Редактировать/Удалить» главного меню.
Структурная схема.
Следующим шагом должно быть создание класса «ИзмерительVS». Мы не будем подробно рассматривать этот этап, поскольку он практически ничем не отличается от создания класса «Маятник» («Создаем непрерывную модель.»). Новый блок будет иметь два входа , на которые поступают текущие координаты, и два выхода - текущие значения полной скорости и пути. Уравнения блока приведены в документе «Моделирование в примерах».
Далее нам нужно перейти в окно «Виртуальный стенд» и собрать схему их маятника и измерителя. Эта схема должна содержать один экземпляр класса «Маятник» и один экземпляр класса «ИзмерительVS». Экземпляр класса «Маятник» у нас уже имеется – это блок «Маятник_1» (Рис 3.1). На будущей схеме он должен находиться слева. Поэтому мы выделим блок и немного переместим его влево. Это можно сделать либо просто мышкой с прижатой левой кнопкой, либо с помощью кнопок точного перемещения в правой части инструментальной панели главного окна, либо с помощью клавиш перемещения курсора на клавиатуре. Кроме того, мы еще немного расширим вправо прямоугольник, обозначающий границы виртуального стенда. Для этого нужно выделить его, щелкнув мышью где-нибудь на свободном месте внутри этого прямоугольника и потянуть мышью одну из опорных точек на периметре, обозначенных черными квадратами (направление возможных перемещений указывается формой курсора).
Напомним, что «Виртуальный стенд» - это специфический изолированный класс-контейнер, в который помещаются экземпляры блоков моделируемой системы. Экземпляр виртуального стенда – это и есть собственно действующая модель. Этот экземпляр создается исполняющей системой пакета моделирования всякий раз при начале очередного прогона модели и уничтожается по окончании прогона. Надо сказать, что редактирование схемы виртуального стенда ровно ничем не отличается от редактирования любой другой структурной схемы, так что все сказанное ниже относится и к любому блоку-контейнеру вообще.