Чтобы объединить преимущества программирования конечного автомата с полной функциональностью MATLAB®, создайте автономную диаграмму Stateflow® за пределами модели Simulink®. Сохраните автономную диаграмму с дополнительным .sfx
и выполните его как объект MATLAB. Совершенствуйте свой проект при помощи анимации графика и графических средств отладки.
С автономными диаграммами можно создать такие приложения MATLAB, как:
Пользовательские интерфейсы App Designer MATLAB, которые используют логику режима, чтобы управлять поведением виджетов. Смотрите Логику Человеко-машинного интерфейса Проекта при помощи диаграмм Stateflow.
Протоколы связи и приложения обработки потока данных та последовательная логика использования. См. Модель Коммуникационный Протокол при помощи Объектов диаграммы.
Data Acquisition Toolbox™ или приложения Instrument Control Toolbox™, которые используют основанную на таймере логику, чтобы контролировать и управлять внешними задачами. Смотрите Реализацию Финансовая Стратегия при помощи Stateflow.
Эти приложения могут быть совместно использованы и выполнены, не требуя лицензии Stateflow. Для получения дополнительной информации смотрите Автономные диаграммы Доли.
Чтобы создать автономную диаграмму Stateflow, откройте редактора Stateflow при помощи edit
функция. Например, в командном окне MATLAB, введите:
edit chart.sfx
chart.sfx
не существует, редактор Stateflow открывает пустой график с именем chart
. В противном случае редактор открывает график, заданный sfx
файл.После того, как вы сохраняете автономную диаграмму, help
функционируйте информация об отображениях о выполнении его в MATLAB:
help chart.sfx
Чтобы закрыть автономную диаграмму от командного окна MATLAB, используйте sfclose
функция:
sfclose chart
Чтобы выполнить автономную диаграмму в 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, из которого и к который вы экспортируете.
Используя более позднюю версию Stateflow, откройте автономную диаграмму.
На вкладке State Chart выберите Save> Previous Version.
В диалоговом окне Export to Previous Version задайте имя файла для экспортируемого графика.
Из списка Save as type выберите более раннюю версию, в которую можно экспортировать график.
Нажмите Save.
Используя более раннюю версию Stateflow, откройте и повторно сохраните экспортируемый график.
Чтобы экспортировать график от командного окна MATLAB, вызовите функцию Stateflow exportToVersion
. Для получения дополнительной информации см. График Экспорта к Более ранней Версии MATLAB.
Примечание
Попытка выполнить экспортируемый график прежде, чем повторно сохранить его приведет к ошибке.
Объект диаграммы 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
то:
Если график имеет постоянный названный 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.
Стройте диаграмму локальных и постоянных данных без ограничения на тип. Смотрите Выполняются и Объекты диаграммы 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')
Содержимое, характерное для Simulink:
Шаг расчета и семантика непрерывного времени.
C язык действия.
Функции Simulink и Подсистемы Simulink как состояния.
Введите, выведите, и данные о параметре.
Данные оперативной памяти хранилища данных.
Выведите и локальные события.
Введите, выведите, и локальные сообщения.
Другие ограничения:
Никакая Мучнистая семантика или семантика Мура.
Никакие таблицы переходов состояний.
Никакие функции Таблицы истинности.
Никакие порожденные состоянием локальные данные или функции.
Никакие действия перехода (действия, которые выполняются после исходного состояния для перехода, выходится, но перед целевым состоянием, не начаты).
disp
| edit
| exportAsClass
| exportToVersion
| help
| sfclose