Объединить преимущества программирования конечного автомата с полной функциональностью MATLAB®, создайте автономный Stateflow® график за пределами Simulink® модель. Сохраните автономную диаграмму с расширением .sfx
и выполните его как объект MATLAB. Уточните свой проект с помощью анимации графиков и графических инструментов отладки.
С автономными диаграммами можно создать такие приложения MATLAB, как:
Пользовательские интерфейсы MATLAB App Designer, которые используют логику режима для управления поведением виджетов. Смотрите Проект человека-машины при помощи диаграмм 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.
В диалоговом окне «Экспорт в предыдущую версию» укажите имя файла для экспортированного графика.
В списке Save as type выберите более раннюю версию, в которую нужно экспортировать график.
Нажмите Save.
Используя более раннюю версию Stateflow, откройте и повторно сохраните экспортированный график.
Чтобы экспортировать график из Командного окна MATLAB, вызовите функцию Stateflow exportToVersion
. Для получения дополнительной информации смотрите Экспорт графика в более раннюю версию MATLAB.
Примечание
Попытка выполнить экспортированный график перед повторным сохранением приведет к ошибке.
Объект диаграммы 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')
Содержимое, характерное для Simulink:
Шаг расчета и семантика в непрерывном времени.
Язык действий на C.
Функции Simulink и подсистемы Simulink как состояния.
Входные, выходные и параметрические данные.
Данные памяти хранилища данных.
Выход и локальные события.
Входные, выходные и локальные сообщения.
Другие ограничения:
Нет семантики Мили или Мура.
Нет таблиц переходов состояний.
Нет функций Таблица.
Нет локальных данных или функций, родившихся в состоянии.
Никаких переходных действий (действия, которые выполняются после выхода исходного состояния для перехода, но до ввода целевого состояния).
disp
| edit
| exportAsClass
| exportToVersion
| help
| sfclose