Краткое описание пакета Stateflow?
Цель работы
Ознакомление с пакетом Stateflow и получение навыков его использованием для моделирования систем.
Краткое описание пакета Stateflow?
Stateflow - инструмент для численного моделирования систем, характеризующихся сложным поведением. К числу таких систем относятся гибридные системы. Примерами гибридных систем могут служить системы управления, используемые в промышленности (автоматизированные технологические процессы), в быту (сложные бытовые приборы), в военной области (высокотехнологичные виды вооружений), в сфере космонавтики, транспорта и связи. Все эти системы состоят из аналоговых и дискретных компонентов. Поэтому гибридные системы - это системы со сложным взаимодействием дискретной и непрерывной динамики. Они характеризуются не только непрерывным изменением состояния системы, но и скачкообразными вариациями в соответствии с логикой работы управляющей подсистемы, роль которой, как правило, выполняет то или иное вычислительное устройство (конечный автомат).
В том случае, когда логика работы управляющей подсистемы является жесткой, а внешние условия относительно стабильны, говорят о трансформационных системах. Для таких систем фазы получения информации, её обработки и выдачи выходных сигналов четко разграничены. На момент обращения к системе все входные сигналы определены. Сигналы на выходах образуются после некоторого периода вычислений. Вычисления производятся по некоторому алгоритму, трансформирующему (преобразующему) входной набор данных в выходной.
В противоположном случае систему относят к классу управляемых событиями или реактивных. Реактивная - это такая динамическая система, которая воспринимает внешние дискретные воздействия и отвечает своими реакциями на эти воздействия.
Причем реакции системы различны и сами зависят как от воздействий, так и от состояния, в котором система находится. Основное отличие реактивных систем от трансформационных - в принципиальной непредсказуемости моментов поступления тех или иных воздействий. Эта непредсказуемость - следствие изменчивости условий, в которых такие системы работают.
Пример простой реактивной системы - контроллер светофора, управляемого пешеходами. Его входы никогда не приобретут законченного вида - сигналы на них поступают постоянно и в неизвестной заранее последовательности.
Моделирование физики технологических процессов (непрерывная составляющая поведения системы) дополняется моделированием логики работы управляющих ими устройств (дискретная компонента). Математический аппарат описания в данном случае - это система уравнений, но не дифференциальных, а дифференциально – алгебраическо - логических, для которых отсутствует стройная теория и единый подход. Так же обстоит дело и с наглядностью. Визуализация протекания физических процессов обеспечивалась графиками изменения во времени тех или иных величин. Попытка такого графического представления процессов в реактивных системах может закончиться неудачно. Основными причинами этого являются многократное возрастание количества отображаемых величин и отсутствие на графиках информации о причинно-следственных связях между изменяющимися переменными состояния.
В настоящее время для моделирования дискретной динамики реактивных систем широко используется предложенный Д. Харелом [1] визуальный формализм - Statechart (диаграммы состояний и переходов). Основные неграфические компоненты таких диаграмм - это событие и действие, основные графические компоненты - состояние и переход.
Событие - нечто, происходящее вне рассматриваемой системы, возможно требуя некоторых ответных действий. События могут быть вызваны поступлением некоторых данных или некоторых задающих сигналов со стороны человека или некоторой другой части системы. События считаются мгновенными (для выбранного уровня абстрагирования).
Действия - это реакции моделируемой системы на события. Подобно событиям, действия принято считать мгновенными.
Состояние - условия, в которых моделируемая система пребывает некоторое время, в течение которого она ведет себя одинаковым образом. В диаграмме переходов состояния представлены прямоугольными полями со скругленными углами.
Переход - изменение состояния, обычно вызываемое некоторым значительным событием. Как правило, состояние соответствует промежутку времени между двумя такими событиями. Переходы показываются в диаграммах переходов линиями со стрелками, указывающими направление перехода.
Каждому переходу могут быть сопоставлены условия, при выполнении которых переход осуществляется.
С каждым переходом и каждым состоянием могут быть соотнесены некоторые действия. Действия могут дополнительно обозначаться как действия, выполняемые однократно при входе в состояние; действия, выполняемые многократно внутри некоторого состояния; действия, выполняемые однократно при выходе из состояния.
Для предотвращения эффекта возрастания сложности при моделировании больших систем были предложены дальнейшие усовершенствования. Наряду с состояниями теперь могут использоваться гиперсостояния (суперсостояния), объединяющие несколько состояний, имеющих идентичную реакцию на одно и то же событие. При этом вместо изображения таких переходов в некоторое состояние из всех состояний, охватываемых гиперсостоянием, изображается только один переход из гиперсостояния в указанное состояние (обобщение переходов). Гиперсостояния теоретически могут иметь произвольную глубину вложения. Переходы из гиперсостояния связаны со всеми уровнями вложения. Гиперсостояния могут объединять ИЛИ-состояния (последовательные состояния) и И-состояния (параллельные состояния). В первом случае, перейдя в гиперсостояние, система может находиться только в одном из состояний. Во втором случае система, перейдя в гиперсостояние, будет пребывать одновременно в нескольких состояниях.
Диаграммы состояний и переходов в настоящее время широко используются для моделировании сложных систем. Достаточно упомянуть унифицированный язык моделирования (Unified Modeling Language (UML)), одним из элементов которого являются диаграммы состояний и язык "Графсет", который используются при программировании логических контроллеров систем автоматизации.
Существенно повышает степень наглядности модели использование имитации, отображающей изменения в системе, сопровождающиеся переходами от одного состояния к другому. Построение таких имитационных моделей возможно с использованием программ Stateflow и Simulink, входящих в состав пакета MATLAB. MATLAB обеспечивает доступ к различным типам данных, высокоуровневому программированию и инструментальным средствам визуализации. Simulink поддерживает проектирование непрерывных и дискретных динамических систем в графической среде (в виде блок-схем). Stateflow -диаграммы, использующие визуальный формализм Д. Харела, включаются в Simulink -модели, чтобы обеспечить возможность моделирования процессов, управляемых событиями. Stateflow обеспечивает ясное описание поведения сложных систем, используя диаграммы состояний и переходов.
Комбинация MATLAB-Simulink-Stateflow является мощным универсальным инструментом моделирования реактивных систем.
Дополнительная возможность следить в режиме реального времени за процессом выполнения диаграммы путем включения режима анимации делает процесс моделирования реактивных систем по-настоящему наглядным.
Используя Stateflow, можно:
1. Визуально моделировать комплексные реактивные системы.
2. Проектировать детерминированные системы супервизорного управления.
3. Легко изменять проект, оценивать результаты изменений и исследовать поведение системы на любой стадии проекта.
4. Автоматически генерировать программный код (целочисленный или с плавающей точкой) непосредственно по проекту (для этого требуется Stateflow Coder).
5. Пользоваться преимуществами интегрирования со средами MATLAB и Simulink в процессе моделирования и анализа систем.
Stateflow позволяет использовать диаграммы потоков (flow diagram) и диаграммы состояний и переходов (state transition) в одной диаграмме Stateflow. Система обозначений диаграммы потоков - логика, представленная без использования состояний. В некоторых случаях диаграммы потоков ближе логике системы, что позволяет избежать использования ненужных состояний. Система обозначений диаграммы потоков - эффективный способ представить общую структуру программного кода как конструкцию в виде условных операторов и циклов.
Рассмотрим работу с редактором SF-диаграмм. Возьмем простой пример — источник переменного напряжения, подключенный к нагрузке — осциллографу. Зададим эту модель в окне Simulink и мышью перетащим в это окно блок Chart. Вначале этот блок при активизации мышью создает пустую SF-диаграмму — заготовку для создания действующей диаграммы. Если активизировать мышью пустой блок Chart, то появится окно редактора SF-диаграмм. Перетаскивая мышью пиктограммы панели инструментов, находящейся в правой части окна редактора, можно поместить в SF-диаграмму нужные компоненты — см. рис. 1.1 с построенной простой SF-диаграммой для нашей модели.
Рис.1.1. Создание простой модели и ее SF-диаграммы
Целесообразно сохранить Simulink-модель вместе с SF-диаграммой. Сохраним модель под именем sfdemo. Можно приступить к установке параметров моделирования и пробному запуску.
Рассмотрим установку параметров запуска. Перед запуском Simulink-модели следует установить параметры моделирования. Для этого в окне моделей Simulink надо выполнить команду меню Simulati -on > Parameters... Необходимые установки представлены на рис. 1.2.
Рис.1.2 Установка параметров запуска
На вкладке Solver надо установить начальное Start time и конечное Stop time время моделирования, затем режимы Fixed-step (с фиксированным шагом) и discrete (поскольку работа выключателя носит дискретный характер).
Запуск производится, как обычно, командой меню Simulation, Start или нажатием кнопки Start в панели инструментов. Можно наблюдать работу модели и SF-диаграммы. Для этого обычно необходимо щелкнуть мышью на блоке SF-диаграммы, чтобы она появилась на переднем плане окна моделей Simulink. Можно запускать ее и отдельно, что описано ниже.
Однако пока вместо всего этого мы увидим ряд окон с указанием на обнаруженную в диаграмме ошибку — неверную запись команды Switch.
Для коррекции ошибок используется редактор SF-диаграмм. Закройте окна ошибок и, открыв редактор SF-диаграмм, исправьте неверные надписи у переходов на правильные — Switch. Заодно исправим и ошибку в наименовании блока Роwer_off (отсутствие последней f). Проверьте и при необходимости скорректируйте установки параметров. Теперь модель будет иметь вид, представленный на рис.1.3.
Теперь наша модель должна запускаться как из окна модели Simulink, так и из окна редактора SF-диаграмм.
Рис. 1.3. Окончательный вид модели выключателя с SF-диаграммой
Поскольку данная модель проста, то моделирование происходит быстро и трудно уследить за его ходом. Поэтому целесообразно воспользоваться специальным отладчиком SF-диаграмм. Его окно (рис.1.4) появляется при выполнении в окне SF-диаграммы команды меню Tools > Debug...
Рис.1.4 иллюстрирует начало моделирования при нажатии кнопки Start отладчика (она после этого меняет название на Continue). Нетрудно заметить, что сначала активизируется альтернативный переход и состояние Power_off. Они отображаются жирными красными линиями. Активное состояние Power_off означает, что выключатель отключает нагрузку (в нашем случае осциллограф) от источника переменного тока. Поэтому осциллограммы на экране осциллографа нет.
Рис.1.4. Начало моделирования
Рассмотрим средства отладки SF-диаграмм. SF-модель, как программа системы MATLAB+Simulink, является типичной S-функцией. По составлению S-функций имеется специальное фирменное руководство. Однако визуально-ориентированное программирование, используемое в пакетах Simulink и Stateflow, позволяет без использования S-функций создавать достаточно надежные программы и сводит к минимуму (хотя и не исключает вообще) возможности возникновения синтаксических ошибок. Тем не менее Stateflow имеет развитые средства отладки программ. Главное из них — синтаксический анализатор, который запускается командой меню Tools > Parse редактора SF-диаграмм.
В этом окне имеется информация о текущей SF-диаграмме и наличии ошибок, если они есть. В нашем примере ошибок нет, поскольку он был отлажен. Однако следует иметь в виду, что анализатор проверяет только синтаксические ошибки. Более каверзные семантические ошибки, например, в выборе алгоритмов построения SF-диаграмм, не выявляются. Устранение таких ошибок — это дело пользователя.
Для выделенного в окне анализатора сообщения можно открыть окно построителя целевого кода — Simulation Target Builder (рис 1.5).
Кнопка Target Options открывает окно опций построителя целевого кода. Другая кнопка — Coder Options — открывает окно опций специального компонента Stateflow - генератора программного кода Stateflow Coder. Здесь, прежде всего надо отметить флажок Enable Debugging/Animation, который разрешает анимацию SF-диаграммы и по умолчанию включен.
Рис 1.5. Окно построителя целевого кода
Ряд других флажков служит для управления процессом генерации кодов. Кнопка Build открывает окно, подобное окну Parse, но с именем Build в заголовке. Обычно это окно используется для представления сообщений о создаваемой после нажатия кнопки Build DF-диаграмме.
Таким образом, рис.1.5 показывает все основные средства отладки SF-диаграмм. Как правило, эти средства нужны только в том случае, когда возникают проблемы с работой SF-диаграмм. Кроме того, они полезны и для обеспечения должного уровня надежности программ.