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

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

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

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

Создайте автономную диаграмму

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

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

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

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

help chart.sfx

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

sfclose chart

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

Чтобы выполнить автономную диаграмму в MATLAB, сначала создайте объект диаграммы Stateflow. Используйте имя sfx файл для автономной диаграммы как функция. Задайте начальные значения данных как пары "имя-значение". Например, предположите, что вы задали автономную диаграмму с объектами данных под названием data1 и data2. Затем эта команда создает объект диаграммы 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. В диалоговом окне Export to Previous Version задайте имя файла для экспортируемого графика.

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

  5. Нажмите Save.

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

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

Примечание

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

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

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

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

  • 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 можно использовать панель Символов, чтобы задать начальные значения для данных о графике. Когда вы создаете объект диаграммы, данные о графике инициализируются в алфавитном порядке согласно его осциллографу. Постоянные данные инициализируются сначала. Локальные данные инициализируются в последний раз.

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

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

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

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

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

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

  • Если график не имеет никаких данных под названием yX инициализируется путем вызова функционального 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.

  • Стройте диаграмму локальных и постоянных данных без ограничения на тип. Смотрите Выполняются и Объекты диаграммы 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 как состояния.

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

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

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

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

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

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

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

  • Никакие функции Таблицы истинности.

  • Никакие порожденные состоянием локальные данные или функции.

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

Смотрите также

| | | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте