
Методичка Stateflow
.pdf
Для того чтобы отрисовать на диаграмме соединительный переход типа "ветвление" или "объединение", необходимо выполнить следующие действия:
1)На панели инструментов выбирается пиктограмма Connective Junction.
2)Переход помещается в указанное положение на диаграмме. На рисунке показана отрисовка перехода типа "ветвление".
6.4. Переходы в последнее активное состояние
Для создания перехода в последнее активное состояние необходимо поместить его в суперсостояние. При этом нет необходимости соединять данный элемент с каким-либо блоком состояния посредством ветви перехода.
6.5. Параллельное функционирование нескольких состояний
Для реализации параллельного функционирования блоков состояний необходимо выполнить следующие действия:
1)Указатель мыши помещается на изображение блока и нажимается правая кнопка мыши.
2)В контекстном меню выбирается команда Decomposition и затем в меню второго уровня выбирается команда Parallel (AND). Граница выбранного блока будет отрисована штриховой линией. Для возврата к прежнему виду блока необходимо в контекстном меню выбрать команду Decomposition и в меню второго уровня выбрать команду Exclusive (OR).
7. Метки состояний и переходов
21
Программное средство Stateflow обеспечивает широкий набор возможностей по заданию меток состояний и переходов. В данном разделе приводится краткий обзор доступных параметров.
7.1. Метки состояний
Основной формат задания метки состояния имеет вид:
имя состояния/ вход: действие на входе в состояние;
во время: действие, пока состояние активно; выход: действие на выходе;
Имена состояний на диаграмме должны быть уникальны. Имеются три условия выполнения действий – вход в состояние (entry), состояние активно (during), выход из состояния (exit), каждое из которых является необязательным и в случае использования может быть связано с одним или бó льшим числом других действий. За формулировкой условия следует двоеточие (:), которое служит разделителем между условием и действием. Действием может являться событие или оператор присваивания. С каждым условием может быть связано более чем одно действие. Если требуется указать два или более действия, то каждое из них размещается на отдельной строке.
В примере раздела 5 было показано формирование метки состояния путём непосредственного ввода текста в изображение блока состояния. Другой способ заключается в использовании диалогового окна блока состояния, который вызывается следующим образом:
1.Указатель мыши устанавливается на изображение блока состояния.
2.Нажимается правая клавиша мыши.
3.В контекстном меню выбирается команда Properties.
На рис. 12 показано диалоговое окно для состояния OnZero из примера раздела 5. Для получения дополнительной информации по диалоговому окну блока состояния необходимо обратиться к справочной системе.
7.2. Метки переходов
Метки переходов могут иметь до четырёх частей. Общий формат задания метки перехода имеет вид:
событие[условие]{действие условия}/действие перехода
где событие – определяет событие, которое вызывает переход. Если никакое событие не указано, переход определяется истинным значением булевского выражения. Если переход происходит (полный переход в случае составного перехода), то осуществляется действие перехода.
22

Рис. 12. Диалоговое окно блока состояния
Действие условия – действие, которое происходит, если возникает событие, и условие является истинным, независимо от того, происходит ли переход. Действие условия полезно в случае составных переходов, в которых оно является необходимым для осуществления какого-либо действия в результате события, даже в том случае, когда никакого перехода не происходит. Как показано на рис. 13, если событие Е1 происходит в то время, когда система находится в состоянии StateA, значение переменной а устанавливается равным 2. Но если значение b не равно 2. то переход за состояния StateA в состояние StateВ не происходит.
Рис. 13. Действие условия
8.Окно Stateflow Explorer
Впримере раздела 5 события и переменные задавались с использованием меню Add окна программного средства Stateflow. В окне Stateflow Explorer обеспечивается возможность просмотра всех событий и данных в одном окне, редактирования свойств событий и данных. а также объявления событий и данных. Чтобы открыть окно Stateflow Explorer, необходимо выбрать команду
Explore меню Tools окна Stateflow. Окно Stateflow Explorer для модели из раздела 5 показано на рис. 14. Окно содержит две панели: Object Hierarchy (Иерархия объектов) – слева и Contents of (Состоит из) – справа. Панель Object
23

Hierarchy позволяет просматривать иерархию всех открытых в данный момент диаграмм Stateflow. Панель Contents of содержит список событий и данных, заданных для объекта, выбраннного в левой панели.
Рис. 14. Окно Stateflow Explorer
Для редактирования свойств события или элемента данных необходимо дважды щелкнуть левой кнопкой мыши на требуемом элементе в списке или выделить данный элемент в списке, и выбрать команду Properties меню Edit окна Stateflow Explorer. После этого на экран выводится диалоговое окно свойств выделенного элемента.
9.Интерфейс с системой Simulink
Вразделе 5 события в программном средстве Stateflow задавались, чтобы сформировать вход из системы Simulink, и данные определялись так, чтобы использовать их в качестве выходных для передачи в систему Simulink. Кроме того, Stateflow обеспечивает множество других параметров для организации взаимодействия между моделями Simulink и диаграммами Stateflow.
9.1. Входы
Имеются два основных типа входов из системы Simulink в диаграммы Stateflow. Первый тип входа – событие. Чтобы задать входное событие, необходимо выбрать команду Event меню Add окна программного средства Stateflow (или окна Stateflow Explorer) и в меню второго уровня выбрать команду Input from Simulink. Входное событие из системы Simulink может быть или событием типа "пересечение сигналом нулевого значения" или "вызов функции". В разделе 5 события типа "пересечение нулевого значения" создавались с использованием блоков Hit crossing системы Simulink. Если событие является событием типа "пересечение нулевого значения", то нет необходимости использовать блок Zero-crossing, т. к. диаграмма Stateflow по умолчанию настроена на автоматическое обнаружение данного типа событий.
24
Событие типа "вызов функции" возникает в одной диаграмме Stateflow и передается в другую диаграмму в той же самой модели системы Simulink посредством линии связи системы Simulink.
Все входные события диаграммы Stateflow проходят через один единственный входной порт. Если имеется более одного события, они должны быть объединены в векторный сигнал. Порядок следования элементов векторного входного сигнала должен соответствовать порядку следования событий, заданных в программном средстве Stateflow, где обеспечивается возможность редактирования порядка входных событий с использованием окна Stateflow Explorer путем изменения индекса события в соответствующем диалоговом окне.
С целью получения входных данных из модели Simulink для каждой входной переменной в программном средстве Stateflow создается отдельный входной порт. Данные могут передаваться в виде вектора или скаляра. Для задания входа необходимо выбрать команду Data меню Add окна программного средства Stateflow и в меню второго уровня выбрать команду
Input from Simulink.
9.2. Выходы
Диаграммы Stateflow могут содержать в себе два типа выходов: данные и события. В разделе 5 выходные данные задавались с использованием команды Output to Simulink меню второго уровня, доступ к которому осуществляется с помощью команды Data меню Add окна программного средства Stateflow (либо окна Stateflow Explorer). Выходные данные могут быть представлены в виде векторов или скаляров. Каждая выходная переменная связана с отдельным выходом, имя которого соответствует имена переменной.
Диаграммы Stateflow обеспечивают возможность формирования выходных событий. Чтобы задать выходное событие, необходимо выбрать команду Event меню Add окна Stateflow и в меню второго уровня выбрать команду Output to Simulink. Триггерные события могут быть использованы для активации других диаграмм Stateflow или подсистем.
Событие типа "вызов функции" заставляет диаграмму Stateflow, которой адресовано данное событие, работать как подпрограмма по отношению к диаграмме Stateflow, в которой данное событие происходит. Когда происходит событие типа "вызов функции", диаграмма Stateflow передает данное событие и управление диаграмме Stateflow, которая получает данное событие. Когда диаграмма Stateflow, которая получает событие типа "вызов функции", завершает свою работу, управление возвращается диаграмме Stateflow, в которой возникло данное событие.
25

10. Настройка обновления диаграммы
Задание метода обновления диаграммы Stateflow осуществляется с использованием диалогового окна Chart Properties (рис. 15), которое вызывается с помощью команды Chart Properties меню File окна программного средства Stateflow. Список Update method данного окна содержит три пункта: Triggered or Inherited, Sampled и Continuous. Ниже приводится описание данных параметров.
Рис. 15. Диалоговое окно Chart Properties
По умолчанию установлен метод обновления Triggered or Inherited, при котором диаграмма Stateflow обновляется на основании данных, поступающих на входы диаграммы. Как было указано выше, имеются два типа выходов – события, которые заставляют программу обновляться при их возникновении, и входные данные, которые заставляют программу обновляться с частотой квантования сигнала. Если входной сигнал является непрерывным, то диаграмма будет обновляться на каждом шаге интегрирования.
Если установлен метод обновления Sampled, диаграмма будет обновляться через промежуток времени, указанный в текстовом поле Sample time. Этот метод обновления может быть полезен, если необходимо обновлять диаграмму с частотой, отличной от частоты квантования входного сигнала.
Если установлен метод обновления Continuous, диаграмма будет обновляться на каждом шагу интегрирования, включая промежуточные шаги.
26

Опции Triggered or Inherited и Continuous обеспечивают схожие результаты. Разница между двумя методами в том, что если выбрана опция Continuous, то система Simulink поддерживает дополнительную копию данных диаграммы, что позволяет системе Simulink точнее определять момент пересечения сигналом нулевого значения и, как следствие, более точно производить обновление программы. Если в блоке состояния задан параметр during action, который обеспечивает выход, являющийся функцией текущего входа диаграммы, то следует использовать метод обновления Continuous.
Пример 1. Флюгерное управление Привязные спутниковые система состоят из малых спутников,
прикрепленных с помощью длинного фала к орбитальной базовой системе, например такой, как транспортный космический корабль. Длина фала может достигать 30 000 м. Одна из проблем управления, которая встает перед проектировщиками такого спутника – это устранение колебаний (качаний) при минимальном расходе находящего на борту ракетного топлива.
Одним из подходов к решению данной проблемы является так называемый алгоритм флюгерного (Yo-yo) управления. Рассмотрим данный подход на примере стабилизации длинного маятника.
Предположим, маятник состоит из гибкого 100-метрового шнура, на конце которого находится груз массой 1 кг (рис. 16).
Рис. 16. Yo-yo – система
Вершина маятника прикреплена к катушке, посредством которой можно изменять длину шнура, опуская или поднимая груз. Верхний предел длины шнура – 105 м, а нижний – 95 м. При изменении катушкой длины шнура скорость изменения длины является постоянной и равна 20 м/с. Уравнение движения маятника имеет вид:
mP l 2θ&& + 2mP l&lθ& + mP gl sinθ = 0
где mP представляет собой массу спутника, l - длину шнура, и θ - угол отклонения маятника.
Из уравнения движения видно, что когда угловая скорость θ& равна нулю, угловое ускорение не зависит от l&. Когда угол θ равен нулю, угловая скорость θ& достигает своего максимального значения, и значение l& имеет максимальное
27

влияние на угловое ускорение. Суть алгоритма "Yo-yo" заключается в следующем: когда угол θ достигает нулевого значения, катушка быстро разматывается так, чтобы длина шнура стала максимальной и груз опустился бы вниз, что, в свою очередь, вызвало бы уменьшение углового ускорения. В том случае, когда угловая скорость θ& достигаем нулевого значения, катушка наматывает на себя шнур так, чтобы длина шнура стала минимальной. Так как l& при этом не влияет на угловое ускорение θ&&, то уменьшение длины шнура не приводит к увеличению углового ускорения шнура. Данный процесс повторяется до тех пор, пока колебания не достигнут допустимого значения.
Алгоритм управления "Yo-yo" можно было бы реализовать с использованием стандартных блоков системы Simulink, но модель получилась бы слишком громоздкой. Данный закон регулирования описывается простым конечным автоматом, и поэтому может быть реализован с помощью программного средства Stateflow. Модель системы Simulink на рис. 17 описывает уравнение движения и обеспечивает обнаружение момента наступления события пересечения сигналом заданного значения (в данном случае θ = 0 и θ& = 0 ). Модель также обеспечивает обнаружение ряда дополнительных событий данного типа, когда длина шнура достигает своего минимального или максимального значения, а также когда полная энергия (сумма кинетической и потенциальной энергии) достигает значения 0,001.
Рис. 17. Модель алгоритма управления Yo-yo
Логическое устройство управления, реализованное на диаграмме Stateflow, приведено на рис. 18. Типичная траектория движения приведена на рис. 19; на верхнем графике показана зависимость угла θ от времени, на нижнем – зависимость длины шнура от времени.
28

Возможности полученной модели можно расширить так, чтобы при превышении полной энергией некоторого порогового значения процесс управления по алгоритму "Yo-yo" выполнялся вновь.
Рис. 18. Диаграмма Stateflow алгоритма управления "Yo-yo"
Рис. 19. Траектории движения модели, управляемой по алгоритму "Yo-yo"
29

11. Диаграммы потоков
Программное средство Stateflow обеспечивает возможность представления алгебры логики с использованием диаграмм потоков, реализованных посредством составных переходов. Данная возможность обеспечивает необходимые средства для моделирования стандартных диаграмм потоков, включая этап принятия решения и выполнение цикла. В данном разделе рассматриваются вопросы создания диаграммы потоков и её элементов.
Диаграмма потоков может быть включена в любую диаграмму Stateflow. Однако удобнее реализовать диаграмму потоков как автономную подпрограмму. Основная структура блока Stateflow диаграммы потоков приведена на рис. 20 и 21. В начале при запуске диаграммы Stateflow происходит переход по умолчанию к стартовому соединению. Затем, диаграмма потоков выполняется путем вычисления составного перехода от стартового соединения до конечного состояния. Если достигается конечное состояние, каждый последующий запуск диаграммы потоков начинается с внутреннего перехода и прекращается в конечном состоянии. Два главных компонента диаграммы потоков – блок принятия решения (рис. 20) и блок цикла (рис. 21).
Рис. 20. Диаграмма потоков |
Рис. 21. Диаграмма потоков |
реализующая принятие решения |
реализующая цикл |
Сегмент принятия решений диаграммы потоков состоит по крайней мере из одного условного перехода и одного безусловного перехода (оператор else). Метка перехода содержит условие (заключённое в квадратные скобки) и, что необязательно, действие условия (заключённое в фигурные скобки). На рис. 20 приведена простая диаграмма потоков с одним шагом решения. В данной диаграмме каждый раз при инициализации диаграммы Stateflow проверяется значение переменной А. Если А=1, то b=1, в противном случае b=0.
После оператора присваивания в действиях условия ставится точка с запятой. Если точка с запятой отсутствует, то результаты присвоения будут
30