В том случае, когда логика работы управляющей подсистемы является жесткой, а внешние условия относительно стабильны, говорят о трансформационных системах. Для таких систем фазы получения информации, её обработки и выдачи выходных сигналов четко разграничены. На момент обращения к системе все входные сигналы определены. Сигналы на выходах образуются после некоторого периода вычислений. Вычисления производятся по некоторому алгоритму, трансформирующему (преобразующему) входной набор данных в выходной.
Рис.1. Трансформационная система
В противоположном случае систему относят к классу управляемых событиями или реактивных. Реактивная - это такая динамическая система, которая воспринимает внешние дискретные воздействия и отвечает своими реакциями на эти воздействия. Причем реакции системы различны и сами зависят как от воздействий, так и от состояния, в котором система находится. Основное отличие реактивных систем от трансформационных - в принципиальной непредсказуемости моментов поступления тех или иных воздействий. Эта непредсказуемость - следствие изменчивости условий, в которых такие системы работают.
Рис.2. Реактивная система
Пример простой реактивной системы - контроллер светофора, управляемого пешеходами. Его входы никогда не приобретут законченного вида - сигналы на них поступают постоянно и в неизвестной заранее последовательности.
Последние десятилетия характеризуются повсеместным распространением реактивных систем. Количество таких систем в мире превышает по некоторым оценкам число 1010 . Не удивительно, что в соответствии с изменением окружающего нас мира меняются и подходы к его анализу. Моделирование физики технологических процессов (непрерывная составляющая поведения системы) дополняется моделированием логики работы управляющих ими устройств (дискретная компонента). Математический аппарат описания в данном случае - это система уравнений, но не дифференциальных, а дифференциально-алгебраическо-логических, для которых отсутствует стройная теория и единый подход. Так же обстоит дело и с наглядностью. Визуализация протекания физических процессов обеспечивалась графиками изменения во времени тех или иных величин. Попытка такого графического представления процессов в реактивных системах может закончиться неудачно. Основными причинами этого являются многократное возрастание количества отображаемых величин и отсутствие на графиках информации о причинно-следственных связях между изменяющимися переменными состояния.
В настоящее время для моделирования дискретной динамики реактивных систем широко используется предложенный Д. Харелом [1] визуальный формализм - Statechart (диаграммы состояний и переходов). Основные неграфические компоненты таких диаграмм - это событие и действие, основные графические компоненты - состояние и переход.
Событие - нечто, происходящее вне рассматриваемой системы, возможно требуя некоторых ответных действий. События могут быть вызваны поступлением некоторых данных или некоторых задающих сигналов со стороны человека или некоторой другой части системы. События считаются мгновенными (для выбранного уровня абстрагирования).
Действия - это реакции моделируемой системы на события. Подобно событиям, действия принято считать мгновенными.
Состояние - условия, в которых моделируемая система пребывает некоторое время, в течение которого она ведет себя одинаковым образом. В диаграмме переходов состояния представлены прямоугольными полями со скругленными углами.
Переход - изменение состояния, обычно вызываемое некоторым значительным событием. Как правило, состояние соответствует промежутку времени между двумя такими событиями. Переходы показываются в диаграммах переходов линиями со стрелками, указывающими направление перехода.
Каждому переходу могут быть сопоставлены условия, при выполнении которых переход осуществляется.
С каждым переходом и каждым состоянием могут быть соотнесены некоторые действия. Действия могут дополнительно обозначаться как действия, выполняемые однократно при входе в состояние; действия, выполняемые многократно внутри некоторого состояния; действия, выполняемые однократно при выходе из состояния.
Рассмотрим в качестве примера диаграмму состояний и переходов цифровых часов, представленную на рис. 3.
Рис. 3. Диаграмма состояний и переходов цифровых часов
На часах имеется две кнопки: ModeButton и IncButton (Кнопка Образа Действия и Кнопка Увеличения). Нажатие любой из них генерирует событие, которое может вызывать переход из одного состояния в другое. Имеются три состояния: Display, Set Hours and Set Minutes (Дисплей, Установка Часов и Установка Минут). Состояние Дисплей - начальное состояние (что обозначается стрелкой, направленной от блока перехода по умолчанию в виде черного круга). В состоянии Set Hours (Установка Часов), событие ModeButton вызывает переход к состоянию Set Minutes (Установка Минут), тогда как событие IncButton увеличивает текущее время (число часов), которое отображается на экране, причем это происходит без изменения состояния. Каждому состоянию часов соответствует действие, записанное ниже горизонтальной линии. Оно начинает выполняться после того, как переход в это состояние произошел.
Уже в таком виде диаграммы состояний и переходов являются достаточно выразительным языком описания реактивных систем. Для сравнения эффективности представления на языке диаграмм состояний и переходов с альтернативным (в виде автомата с конечным числом состояний) рассмотрим 10-битовый счетчик, подсчитывающий количество событий aи выдающий сообщение overflow (переполнение) после 1024-го события (рис. 4).
Рис. 4. Альтернативные
варианты описания 10-битового счетчика
Как видно из рисунка, представление с использованием языка диаграмм состояний и переходов Statechart компактнее примерно в 1000 раз. Однако при описании большой системы даже такое описание может оказаться слишком трудным для восприятия.
Для предотвращения эффекта возрастания сложности при моделировании больших систем были предложены дальнейшие усовершенствования. Наряду с состояниями теперь могут использоваться гиперсостояния (суперсостояния), объединяющие несколько состояний, имеющих идентичную реакцию на одно и то же событие. При этом вместо изображения таких переходов в некоторое состояние из всех состояний, охватываемых гиперсостоянием, изображается только один переход из гиперсостояния в указанное состояние (обобщение переходов). Гиперсостояния теоретически могут иметь произвольную глубину вложения. Переходы из гиперсостояния связаны со всеми уровнями вложения. Гиперсостояния могут объединять ИЛИ-состояния (последовательные состояния) и И-состояния (параллельные состояния). В первом случае, перейдя в гиперсостояние, система может находиться только в одном из состояний. Во втором случае система, перейдя в гиперсостояние, будет пребывать одновременно в нескольких состояниях.
Диаграммы состояний и переходов в настоящее время широко используются для моделировании сложных систем. Достаточно упомянуть унифицированный язык моделирования (Unified Modeling Language (UML)), одним из элементов которого являются диаграммы состояний и язык "Графсет", который используются при программировании логических контроллеров систем автоматизации.
Существенно повышает степень наглядности модели использование имитации, отображающей изменения в системе, сопровождающиеся переходами от одного состояния к другому. Построение таких имитационных моделей возможно с использованием программ Stateflow и Simulink, входящих в состав пакета MATLAB. MATLAB обеспечивает доступ к различным типам данных, высокоуровневому программированию и инструментальным средствам визуализации. Simulink поддерживает проектирование непрерывных и дискретных динамических систем в графической среде (в виде блок-схем). Stateflow -диаграммы, использующие визуальный формализм Д. Харела, включаются в Simulink -модели, чтобы обеспечить возможность моделирования процессов, управляемых событиями. Stateflow обеспечивает ясное описание поведения сложных систем, используя диаграммы состояний и переходов.
Комбинация MATLAB-Simulink-Stateflow является мощным универсальным инструментом моделирования реактивных систем. Дополнительная возможность следить в режиме реального времени за процессом выполнения диаграммы путем включения режима анимации делает процесс моделирования реактивных систем по-настоящему наглядным.
Stateflow - мощный графический инструмент проектирования и моделирования комплексных систем локального управления и супервизорного логического контроля. Используя Stateflow, можно:
Stateflow позволяет использовать диаграммы потоков (flow diagram) и диаграммы состояний и переходов (state transition) в одной диаграмме Stateflow. Система обозначений диаграммы потоков - логика, представленная без использования состояний. В некоторых случаях диаграммы потоков ближе логике системы, что позволяет избежать использования ненужных состояний. Система обозначений диаграммы потоков - эффективный способ представить общую структуру программного кода как конструкцию в виде условных операторов и циклов.
Stateflow также обеспечивает ясное, краткое описание поведения комплексных систем, используя теорию конечных автоматов, диаграммы потоков и диаграммы переходов состояний. Stateflow делает описание системы (спецификацию) и проект ближе друг другу. Создавать проекты, рассматривая различные сценарии и выполняя итерации, намного проще, если при моделировании поведения системы используется Stateflow.
В настоящее время фирмой MathWorks разработана уже пятая версия программы Stateflow. Для работы Stateflow 5 требует, чтобы были установлены следующие программные продукты:
Рис. 5. Программная среда Stateflow
Stateflow состоит из следующих компонентов:
При проектировании моделей реактивных систем Stateflow используется вместе с Simulink и по желанию - с RTW (Real-Time Workshop - мастерская реального времени) под управлением MATLAB.
Вы можете проектировать модель, начиная с Stateflow (управляющей) части, а позднее скомпоновать модель Simulink . Вы можете также проектировать модель, начинающуюся с Simulink (алгоритмической) части, а позже прибавить диаграмму Stateflow . Вы можете улучшить существующую модель Simulink , заменяя логические блоки Simulink на диаграммы Stateflow . Подход, который Вы используете, определяет, в какой последовательности Вы разрабатываете различные части модели.
Совокупность всех Stateflow блоков в модели Simulink - это машина. При использовании Simulink вместе с Stateflow для моделирования, Stateflow генерирует S-функцию (MEX-файл) для каждой Stateflow машины, чтобы поддерживать моделирование. Этот сгенерированный код для моделирования называется sfun кодом Stateflow.
Если необходима работа модели в реальном масштабе времени, Stateflow Coder позволит сгенерировать целочисленный или с плавающей точкой код, основанный на Stateflow машине. RTW сгенерирует код для Simulink части модели и обеспечит структуру для выполнения сгенерированного кода Stateflow в реальном масштабе времени. Код, сгенерированный Stateflow Coder включен в код, сгенерированный RTW . Вы можете получить код, сгенерированный обоими продуктами для специфической платформы. Этот сгенерированный код - специфический RTW код, который в пределах Stateflow называется rtw кодом.
Итак, основные варианты использования: