Редактирование карты поведения.

В общем случае карта поведения представляет собой граф, узлы которого соответствуют качественным состояниям моделируемой системы, а дуги – переходам из одного состояния в другое (Рис 5.5). Узлам – состояниям соответствуют определенные поведения :

- пустое поведение, при котором значения переменных не изменяются, соответствующий узел изображается тонкой линией (на Рис 5.5 это узел Node_2):

- непрерывное поведение, заданное системой уравнений, соответствующий узел изображается жирной линией (на Рис 5.5 это Node_3);

- дискретное или гибридное поведение, заданное другой картой поведения, соответствующий узел изображается двойной тонкой линией (на Рис 5.5 это Node_1).

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

Кроме того, в окне карт поведения изображаются:

- имена узлов. Если из рисунка не очевидно, какое имя у данного узла, необходимо выделить этот узел и нажать кнопку Редактирование карты поведения. - student2.ru на левой инструментальной панели. Перейти в режим редактирования имени можно двойным щелчком мыши на его изображении или с помощью команды «Редактировать/Редактировать как текст(F2)» главного меню;

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

Редактирование карты поведения. - student2.ru

Рис 5.5

Один из элементов карты поведения может быть выделен нажатием левой кнопки мыши на изображении этого элемента. Выделение изображается прямоугольниками на месте опорных точек (на Рис 5.5 выделен переход из Node_2 в Node_3) либо цветом (для имен узлов). Выделенный элемент можно перемещать либо с помощью мыши с прижатой левой кнопкой, либо с помощью клавиш перемещения курсора.

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

Любое изменение в карте поведения может быть отменено с помощью кнопки Редактирование карты поведения. - student2.ru на панели кнопок главного окна или команды «Редактировать/Отменить изменения (Alt+Backspace)» главного меню. Количество отменяемых изменений задается в настройках интегрированной среды на странице «Основные» (команда «Сервис/Настройки» главного меню).

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

Редактирование карты поведения. - student2.ru

Рис 5.6

Верхняя панель содержит кнопки, связанные с редактированием свойств выделенного элемента или карты поведения в целом:

- кнопка Редактирование карты поведения. - student2.ru предназначена для перехода в диалог редактирования имени карты поведения;

- кнопка Редактирование карты поведения. - student2.ru предназначена для перехода в диалог редактирования пояснительного текста для карты поведения;

- кнопка Редактирование карты поведения. - student2.ru предназначена для редактирования локальных переменных, функций и процедур карты поведения ;

- кнопка Редактирование карты поведения. - student2.ru предназначена для перехода в диалог редактирования условия срабатывания выделенного перехода;

- кнопка Редактирование карты поведения. - student2.ru предназначена для перехода в диалог редактирования последовательности мгновенных действий в выделенном переходе;

- кнопка Редактирование карты поведения. - student2.ru предназначена для перехода в диалог редактирования последовательности входных действий выделенного узла;

- кнопка Редактирование карты поведения. - student2.ru предназначена для перехода в диалог редактирования последовательности выходных действий выделенного узла;

- кнопка Редактирование карты поведения. - student2.ru предназначена для перехода в окно редактирования поведения, приписанного выделенному узлу:

- кнопка Редактирование карты поведения. - student2.ru предназначена для приписывания выделенному узлу пустого поведения.

Редактирование узлов.

Чтобы создать новый узел нужно:

- с помощью кнопки Редактирование карты поведения. - student2.ru или команды «Создать новый узел» всплывающего меню перевести редактор в режим создания нового узла (признаком этого режима служит появление крестообразного курсора мыши);

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

Новый узел будет по умолчанию иметь имя «Node_1, 2, …».

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

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

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

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

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

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

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

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

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

Руководствуясь этими правилами, создадим в классе «Маятник» новую карту поведения «Карта_поведения_1», кликнув дважды мышью на ее названии, перейдем в окно редактора карт поведения, введем в ней три новых узла и заменим их имена на «Колебания», «Свободный_полет» и «Останов» (Рис 5.7).

Редактирование карты поведения. - student2.ru

Рис 5.7

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

Напомним, что любое изменение в карте поведения может быть отменено с помощью кнопки Редактирование карты поведения. - student2.ru на панели кнопок главного окна или команды «Редактировать/Отменить изменения (Alt+Backspace)» главного меню.

Редактирование карты поведения. - student2.ru

Рис 5.8

Все созданные узлы карты поведения по умолчанию содержат пустые локальные поведения, то есть при нахождении модели в этом состоянии в ней ничего не будет меняться.. «Система_уравнений_1», описывающая колебания маятника, уже существует в классе «Маятник» и мы просто методом «drag-and-drop» перетащим ее из окна класса на узел «Колебания». Систему уравнений, описывающую свободный полет («Система_уравнений_3»), необходимо создать (Рис 5.9), а затем присвоить узлу «Свободный_полет». Для этой системы уравнений нам понадобятся еще две переменные:

Vx: double := 0;

Vy: double := 0;

Редактирование карты поведения. - student2.ru

Рис 5.9

Узел «Останов» должен содержать в своих входных действиях вызов предопределенной процедуры «Stop». Выделим этот узел и затем с помощью кнопки Редактирование карты поведения. - student2.ru или команды «Входные действия в узле» всплывающего меню перейдем в окно редактирования последовательности входных действий (Рис 5.10).

Редактирование карты поведения. - student2.ru

Рис 5.10

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

Теперь можно переходить к созданию переходов.

Редактирование переходов.

Чтобы создать завершенный переход, нужно:

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

- подвести курсор мыши на изображение исходного узла (например, «Колебания»). Курсор при этом сменится на изображение креста в круге. Затем нажать левую кнопку мыши и, не отпуская ее, переместить мышь на изображение конечного узла (например, «Свободный_полет»). Когда курсор при этом сменится на изображение креста в круге, отпустить кнопку. Исходный и конечный узел может быть один и тот же.

Получаем переход из узла «Колебания» в узел «Свободный_полет» Точно таким же образом создаем переход из узла «Свободный_полет» в узел «Останов» (Рис 5.11).

Редактирование карты поведения. - student2.ru

Рис 5.11

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

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

Редактирование карты поведения. - student2.ru

Рис 5.12

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

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

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

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

Замечание. Возникает вопрос: а зачем, собственно, нужны незавершенные переходы, если они все равно не попадают в выполняемую модель? Дело в том что, во-первых, незавершенными переходы могут становиться временно, когда либо уничтожается исходный или конечный узел, либо переход «отрывается» от своего исходного или конечного узла. Во-вторых, иногда бывает удобно использовать незавершенный переход как промежуточную форму в процессе редактирования. Например, переход из «Колебания» в «Свободный_полет» можно создать в три приема: сначала создать незавершенный переход (Рис 5.13а), затем, перетащив его начальную опорную точку на узел «Колебания», сделать его исходным (Рис 5.13б) и затем, перетащив последнюю опорную точку на узел «Свободный_полет», сделать этот узел конечным (Рис 5.13в).

Редактирование карты поведения. - student2.ru Редактирование карты поведения. - student2.ru

а) б)

Редактирование карты поведения. - student2.ru

в)

Рис 5.13

Все введенные нами переходы по умолчанию являются безусловными, то есть они сработают немедленно, как только исходный узел станет текущим. Таким образом, работа модели, задаваемая картой поведения, показанной на Рис 5.11, начнется и закончится «в одно мгновение» во «временной щели» Редактирование карты поведения. - student2.ru .

Чтобы этого не случилось, для переходов должны быть определены условия срабатывания. Выделим переход «Колебания» à «Свободный_полет» и с помощью кнопки Редактирование карты поведения. - student2.ru или команды «Условие срабатывания перехода» всплывающего меню перейдем в диалог редактирования условия срабатывания (Рис 5.14), в котором введем необходимое условие (подробнее о переходах и условиях их срабатывания в разделе «Входной язык / Карта поведения» справочной системы). Предварительно добавим параметр

AlphaMax: double := pi/4;

Редактирование карты поведения. - student2.ru

Рис 5.14

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

Редактирование карты поведения. - student2.ru

Рис 5.15

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

Ymin: double := -3;

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

Наши рекомендации