Создайте диаграммы Stateflow для выполнения в качестве объектов MATLAB

Объединить преимущества программирования конечного автомата с полной функциональностью MATLAB®, создайте автономный Stateflow® график за пределами Simulink® модель. Сохраните автономную диаграмму с расширением .sfx и выполните его как объект MATLAB. Уточните свой проект с помощью анимации графиков и графических инструментов отладки.

С автономными диаграммами можно создать такие приложения MATLAB, как:

Эти приложения можно использовать совместно и выполнять, не требуя лицензии Stateflow. Для получения дополнительной информации см. раздел «Совместное использование автономных диаграмм».

Построение автономной диаграммы

Чтобы создать автономную диаграмму Stateflow, откройте Редактор Stateflow с помощью edit функция. Для примера в Командном Окне MATLAB введите:

edit chart.sfx
Если файл chart.sfx не существует, Редактор Stateflow открывает пустой график с именем chart. В противном случае редактор открывает график, заданную как sfx файл.

После сохранения автономной диаграммы, help функция отображает информацию о ее выполнении в MATLAB:

help chart.sfx

Чтобы закрыть автономную диаграмму из Командного окна MATLAB, используйте sfclose функция:

sfclose chart

Создайте объект диаграммы Stateflow

Чтобы выполнить автономную диаграмму в MATLAB, сначала создайте объект диаграммы Stateflow. Используйте имя sfx файл автономной диаграммы как функции. Задайте начальные значения данных как пары "имя-значение". Для примера эта команда создает объект графика chartObject, инициализирует data1 и data2, и выполняет переход по умолчанию:

chartObject = chart('data1',value1,'data2',value2)

Для отображения информации о графике, такой как синтаксис для выполнения, значения данных диаграммы и список активных состояний, используйте disp функция:

disp(chartObject)

Выполнение автономной диаграммы

После определения объекта диаграммы Stateflow можно выполнить автономную диаграмму, вызвав step функция (со значениями данных, при необходимости):

step(chartObject,'data1',value1,'data2',value2)

Также можно вызвать одну из входа функций события:

event_name(chartObject,'data1',value1,'data2',value2)

В любом случае значения присваиваются локальным данным перед выполнением графика.

Если ваш график имеет графические функции или функции MATLAB, можно вызвать их непосредственно в Командном Окне MATLAB. Вызов функции графика не выполняет автономную диаграмму.

function_name(chartObject,u1,u2)

Примечание

Если вы используете nargin в графической функции или функции MATLAB на графике, nargin считает объект графика как один из входных параметров. Значение nargin является тем же самым, вызываете ли вы функцию из графика или из Командного окна MATLAB.

Можно выполнить автономную диаграмму, не открывая Редактора Stateflow. Если график открыт, Редактор Stateflow подсвечивает активные состояния и переходы через анимацию диаграммы.

В целях отладки и модульного тестирования можно выполнить автономную диаграмму непосредственно из редактора Stateflow. Во время выполнения вы вводите значения данных и транслируете события из пользовательского интерфейса. Для получения дополнительной информации смотрите Выполнение и Модульный тест Диаграммы Stateflow объектов.

Можно выполнить автономную диаграмму из скрипта MATLAB, модели Simulink или пользовательского интерфейса App Designer. Для получения дополнительной информации смотрите:

Выполнение стопового графика

Чтобы остановить выполнение графика, уничтожите объект графика, вызвав delete функция:

delete(chartObject)

После удаления объекта графика все указатели на объект графика остаются в рабочей области, но становятся недопустимыми. Чтобы удалить недопустимый указатель из рабочей области, используйте команду clear:

clear chartObject

Если вы очистили допустимый указатель на объект графика и есть другие указатели на тот же объект графика, объект графика не будет уничтожен. Для примера, когда вы выполняете график, Редактор Stateflow содержит внутренние указатели на объект графика. Удаление указателя на объект графика из рабочей области не уничтожает объект графика или не удаляет подсветку анимации графика в редакторе. Чтобы сбросить подсветку анимации, щелкните правой кнопкой мыши полотно графика и выберите Remove Highlighting.

Совместное использование автономных диаграмм

Вы можете совместно использовать автономные диаграммы с сотрудниками, у которых нет лицензии Stateflow.

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

Примечание

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

Если ваши сотрудники имеют более раннюю версию MATLAB, экспортируйте автономную диаграмму в формат, который они могут использовать. Можно экспортировать только в R2019a и более поздние релизы. Чтобы завершить процесс экспорта, вам нужен доступ к версиям Stateflow, из которых и в которые вы экспортируете.

  1. Используя более позднюю версию Stateflow, откройте автономную диаграмму.

  2. На вкладке State Chart выберите Save > Previous Version.

  3. В диалоговом окне «Экспорт в предыдущую версию» укажите имя файла для экспортированного графика.

  4. В списке Save as type выберите более раннюю версию, в которую нужно экспортировать график.

  5. Нажмите Save.

  6. Используя более раннюю версию Stateflow, откройте и повторно сохраните экспортированный график.

Чтобы экспортировать график из Командного окна MATLAB, вызовите функцию Stateflow exportToVersion. Для получения дополнительной информации смотрите Экспорт графика в более раннюю версию MATLAB.

Примечание

Попытка выполнить экспортированный график перед повторным сохранением приведет к ошибке.

Свойства и функции объектов диаграммы Stateflow

Объект диаграммы Stateflow инкапсулирует данные и операции в одну структуру путем предоставления:

  • Частная собственность, которые содержат переменные внутреннего состояния для автономной диаграммы.

  • A step функция, которая вызывает различные операции, реализующие семантику графика.

Объекты диаграммы могут иметь другие свойства и функции, которые соответствуют различным элементам, присутствующим на графике.

Автономные диаграммыЭлементы объекта графика
Локальные и постоянные данныеОбщественная собственность
Входные событияФункции, которые выполняют график
Графические функции и функции MATLABФункции, которые можно вызвать из Командного окна MATLAB

Опции строения объекта графика

Когда вы создаете объект графика, можно задать поведение графика, включив эти опции строения в качестве пар "имя-значение".

Опция строенияОписаниеПример
-animationDelayЗадайте задержку, которую использует анимация на графике для подсветки каждого сегмента перехода. Значение по умолчанию 0.01 секунд. Чтобы создать график без задержек анимации, установите значение нуля.

Создайте объект графика, который имеет медленную анимацию путем определения задержек на одну секунду.

chartObject = chart('-animationDelay',1)

-enableAnimationВключите анимацию графика и отладку инструментирования. Значение по умолчанию true.

Создайте объект графика, который имеет отключённое инструментирование анимации и отладки.

chartObject = chart('-enableAnimation',false)

-eventQueueSizeУкажите размер очереди, используемой для событий и временных логических операций. Значение по умолчанию 20. Чтобы отключить постановку событий в постановку в очередь, установите значение нуля. Для получения дополнительной информации см. раздел События в автономных диаграммах.

Создайте объект графика, который игнорирует все события без предупреждения, если они происходят при обработке графиком другой операции.

chartObject = chart('-eventQueueSize',0)

-executeInitStepВключите начальное выполнение переходов по умолчанию. Значение по умолчанию true.

Создайте объект графика, но не выполняйте переход по умолчанию.

chartObject = chart('-executeInitStep',false)

-warningOnUninitializedDataВключите предупреждение о пустых данных графика после инициализации объекта графика. Значение по умолчанию true.

Исключить предупреждение при создании объекта графика.

chartObject = chart('-warningOnUninitializedData',false)

Инициализация данных графика

В редакторе Stateflow можно использовать панель Символы (Symbols), чтобы задать начальные значения для данных графика. Когда вы создаете объект графика, данные графики инициализируются в алфавитном порядке в соответствии с его возможностями. Сначала инициализируются постоянные данные. Локальные данные инициализируются последним.

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

  • Использование значений других данных на графике.

  • Вызов функций в пути поиска файлов.

Например, предположим, что вы задаете начальное значение для локальных данных x при помощи выражения y. Затем:

  • Если график имеет константу, вызываемую y, y инициализируется перед x. Локальный x данных присваивается то же начальное значение, что и y.

  • Если на графике есть локальные данные, называемые y, x инициализируется перед y. Локальный x данных назначается пустому массиву. Если опция строения -warningOnUninitializedData установлено в true, происходит предупреждение.

  • Если на графике нет названий данных y, x инициализируется вызовом функции y. Если файл y.m не находится в пути поиска файлов, возникает эта ошибка:

    Undefined function or variable 'y'.

Stateflow не ищет в рабочем пространстве MATLAB, чтобы разрешить начальные значения, поэтому эта ошибка возникает, даже если существует переменная, вызываемая y в рабочем пространстве MATLAB.

Возможности и ограничения

Поддерживаемые функции

  • Классическая семантика графика с MATLAB в качестве языка действий. Можно использовать полную функциональность MATLAB, включая те функции, которые ограничены для генерации кода в Simulink. Смотрите Выполнение объектов диаграммы Stateflow через скрипты и модели.

    Примечание

    В автономных диаграммах Stateflow символ команды операционной системы ! не поддерживается. Чтобы выполнить команды операционной системы, используйте функцию system.

  • Эксклюзивное (OR) и параллельное (AND) разложение состояний с иерархией. См. «Разложение состояний» и «Иерархия состояний».

  • Потоковые графики, графические функции и функции MATLAB. См. Переиспользуемые компоненты в графиках.

  • Преобразование кода MATLAB в графические функции с помощью Pattern Wizard. См. Преобразование кода MATLAB в Stateflow Flow Графиков.

  • Отобразите локальные и постоянные данные без ограничения по типу. Смотрите Объекты Диаграммы Stateflow выполнения и модульного тестирования.

  • Входные события. Смотрите Проект человека-машины при помощи диаграмм Stateflow.

  • Операторы hasChanged, hasChangedFrom, и hasChangedTo который обнаруживает изменения в значениях локальных данных.

    Примечание

    Автономные диаграммы Stateflow не поддерживают обнаружение изменений в элементе массива матрицы или поле в структуре.

  • Временные логические операторы:

    • after, at, и every работать с количеством входа событий, вызовов на графике (tick), и абсолютное время (sec). Используйте эти операторы в состоянии on действия и как триггеры перехода.

    • count работает с количеством вызовов на графике (tick).

    • temporalCount действует на абсолютное время (sec, msec, и usec).

    • elapsed действует на абсолютное время (sec).

    Автономные диаграммы определяют временную логику в абсолютном времени с точки зрения настенного времени, которая ограничена точностью 1 миллисекунда.

  • Функциональные getActiveStates для доступа к состояниям, которые активны во время выполнения графика. Чтобы сохранить активные состояния в виде массива ячеек, введите:

    states = getActiveStates(chartObject)

  • Функция Stateflow exportAsClass который экспортирует автономную диаграмму как эквивалентный класс MATLAB. Используйте эту функцию для отладки ошибок времени выполнения, которые в противном случае трудно диагностировать. Например, предположим, что вы столкнулись с ошибкой при выполнении диаграммы Stateflow, которая управляет приложением MATLAB. Если вы экспортируете график как файл класса MATLAB, можно заменить график классом в вашем приложении и диагностировать ошибку с помощью отладчика MATLAB. Экспорт графика chart.sfx как файл класса chart.m, введите:

    Stateflow.exportAsClass('chart.sfx')
    При выполнении класса MATLAB Редактор Stateflow не анимирует исходный график.

Ограничения

Содержимое, характерное для Simulink:

  • Шаг расчета и семантика в непрерывном времени.

  • Язык действий на C.

  • Функции Simulink и подсистемы Simulink как состояния.

  • Входные, выходные и параметрические данные.

  • Данные памяти хранилища данных.

  • Выход и локальные события.

  • Входные, выходные и локальные сообщения.

Другие ограничения:

  • Нет семантики Мили или Мура.

  • Нет таблиц переходов состояний.

  • Нет функций Таблица.

  • Нет локальных данных или функций, родившихся в состоянии.

  • Никаких переходных действий (действия, которые выполняются после выхода исходного состояния для перехода, но до ввода целевого состояния).

См. также

| | | | |

Похожие темы