Иерархия диаграммы Stateflow
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Механизм иерархии позволяет использовать рекурсивный способ описания диаграммы Stateflow и считать, что каждое состояние может быть представлено в виде соответствующей диаграммы. В качестве примера рассмотрим функционирование модели системы стеклоочистителей. Система имеет два состояния, которые могут быть названы суперсостояниями: On (Включено) и Off (Выключено). Суперсостояние On имеет два подсостояния: Slow (Медленно) и Fast (Быстро). Диаграмма Stateflow системы стеклоочистителей изображена на рис. 2.2.2. Следует заметить, что переход по умолчанию для системы — переход в состояние Off. Как только система переходит в суперсостояние On, данное состояние переходит в подсостояние Slow.

рис. 2.2.2 Модель системы стеклоочистителей

Второй механизм позволяет одновременно находиться в нескольких состояниях и называется параллельным функционированием нескольких состояний. Рассмотрим модель электрической системы автомобиля (рис. 2.2.3), которая включает подсистему стеклоочистителей и подсистему фар. Штриховые рамки, которыми выделены данные подсистемы, указывают на параллельное функционирование нескольких состояний в независимых подсистемах.

рис. 2.2.3 Модель электрической системы: параллельное функционирование нескольких состояний

Переход в последнее активное состояние также является полезным элементом диаграммы Stateflow. Данный переход изображается в виде круга, содержащего символ Н. Если суперсостояние содержит переход в последнее активное состояние, то состояние, которое было активным, когда система находилась в данном суперсостоянии, будет состоянием по умолчанию, когда система вновь окажется в данном суперсостоянии. В первый раз, когда система окажется в данном суперсостоянии, будет выполнен переход по умолчанию, но после этого переход по умолчанию будет анну­лироваться переходом в последнее активное состояние. Скорректированная диаграмма Stateflow для модели подсистемы фар показана на рис. 2.2.4. Суперсостояние On содержит переход в последнее активное состояние. Первый раз, когда система окажется в суперсостоянии On, произойдет переход по умолчанию к состоянию Normal. Если фары переключаются в состояние Bright и затем выключаются, то при включении подсистема фар будет находиться в состоянии Bright.

рис. 2.2.4 Модель подсистемы фар с переходом в последнее активное состояние

Составные переходы

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

На рис. 2.2.5 показан соединительный переход типа «ветвление». Если система находится в состоянии State А, и происходит событие Е1, то система перейдет в состояние State В, если переменная А = 1, и в состояние State С, если А = 0. Если никакое из данных условий не выполняется (А не равно ни 1, ни 0), то никакого перехода не произойдет, и состояние State А останется активным. Соединительный переход не является промежуточным состоянием; это эквивалент логической связки, называемой конъюнкцией (И, AND).

рис. 2.2.5 Составной переход типа «ветвление»

На рис 2.2.6 показан соединительный переход типа «объединение». Если состояние State А или состояние State В является активным в момент, когда происходит событие Е1, система осуществит переход в состояние State С. Так как на сегменте перехода от соединительного перехода к состоянию State С не имеется никакого обозначения, то эта часть составного перехода является безусловной.

рис. 2.2.6 Составной переход типа «объединение»

Пример реализации модели Simulink с использованием Stateflow

Описание задачи

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

Блок-схема алгоритма

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

рис. 2.3.1 Блок-схема алгоритма Евклида по нахождению наибольшего делителя двух натуральных чисел

Решение задачи

Шаг 1. Создается новая модель в системе Simulink.

Шаг 2. Блок Chart перемещается из библиотеки блоков Stateflow в окно модели(рис. 2.3.2).

рис. 2.3.2 Перемещение блока Chart в созданную модель Simulink

Шаг 3. Вызывается окно Stateflow с помощью двойного нажатия левой кнопки мыши на изображении блока Chart (рис. 2.3.3). Следует заметить, что у левой границы окна расположена панель из иконок, которые используются для формирования диаграммы Stateflow. Ниже панели иконок расположен элемент управления масштабом отображения диаграммы.

рис. 2.3.3 Окно Stateflow

Шаг 4. В окне модели размещается один блок состояния (State). Для этого необходимо переместить его в рабочую область, нажав иконку State (рис. 2.3.4).

рис. 2.3.4 Добавление блока состояния

Шаг 5. В окне модели размещается три составных перехода (Junction). Для этого необходимо переместить их в рабочую область, нажав иконку Junction (рис. 2.3.5).

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

Шаг 6. Производится формирование переходов. Для этого необходимо поместить указатель мыши на границу составного перехода, при этом указатель примет форму креста, нажать левую кнопку мыши, затем, удерживая ее нажатой, поместить указатель мыши на границу блока состояния или другого составного перехода и  отпустить левую кнопку мыши. Необходимо добавить переходы как на рис. 2.3.6.

рис. 2.3.6 Создание переходов

Шаг 7. Производится вставка в схему перехода по умолчанию. Для этого необходимо выбрать пиктограмму Default Transition, поместить указатель мыши на границу верхнего составного перехода и нажать левую кнопку мыши (рис. 2.3.7).

рис. 2.3.7 Вставка в схему перехода по умолчанию.

Шаг 8. Производится добавление меток к переходам и состояниям. Для этого необходимо выбрать мышью переход. При этом переход будет выделен голубым цветом, и около него отобразится знак вопроса (рис. 2.3.8).

рис. 2.3.8 Выделение перехода.

Шаг 9. Выбирается мышью знак вопроса (при этом появляется курсор ввода текста) и вводится требуемый текст. Ввод текста для всех элементов схемы показан на рис 2.3.9.

рис 2.3.9 Законченная схема Stateflow.

Шаг 10. Задаются входные порты. Для этого необходимо в свободном месте рабочей области кликнуть правой кнопкой мыши и выбрать Add Inputs & Outputs-> Data Input From Simulink.

В открывшемся окне необходимо ввести имя входа в поле Name и нажать OK. Для второго входа необходимо провести то же самое и выбрать второй порт(см. рис. 2.3.10).

рис. 2.3.10 Задание входных портов.

Шаг 11. Задается выходной порт. Для этого необходимо в свободном месте рабочей области кликнуть правой кнопкой мыши и выбрать Add Inputs & Outputs-> Data Output To Simulink.

В открывшемся окне необходимо ввести имя выхода в поле Name и нажать OK (рис. 2.3.11).

рис. 2.3.11 Задание входного порта.

Шаг 12. Заметим, что у блока Stateflow в модели Simulink появилось два входных и один выходной порт. Добавим в модель Simulink два блока Constant с именами M и N, которые соединим с входными портами блока Stateflow, и блок Display, который соединим с выходным портом блока Stateflow (рис. 2.3.12).

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

Шаг 13. Проверим работу созданной модели. Для этого в значения блоков констант поставим числа 216 и 42 и запустим симуляцию (рис. 2.3.13).

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

 

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

 

Дата: 2018-12-28, просмотров: 419.