Создайте диаграммы 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

Создайте объект диаграммы 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.

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

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

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

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

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

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

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

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

Параметры конфигурации объекта диаграммы

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

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

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

chartObject = chart('-animationDelay',1)

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

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

chartObject = chart('-enableAnimation',false)

-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, every, и temporalCount работайте с количеством вызовов (tick), абсолютное тактовое стеной время (sec, msec, и usec), и входные события.

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

    • elapsed работает с абсолютным тактовым стеной временем (sec).

    Примечание

    В автономных диаграммах Stateflow абсолютное время временная логика не поддержана в переходах с условиями.

  • Функциональный 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 как состояния.

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

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

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

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

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

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

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

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

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

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

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

| | |

Похожие темы