В этом примере показано, как создать интерфейс между графиком Stateflow ® и приложением MATLAB ®, созданным в App Designer. Для других примеров, которые показывают, как соединить диаграмму Stateflow с приложением MATLAB, смотрите Модель Контроллера Степени и Симуляция Медиаплеера. Для версии этого примера, которая использует автономные диаграммы в MATLAB, смотрите Модель приложения Fitness при Помощи автономных диаграмм.
В этом примере приложение MATLAB моделирует фитнес-трекер. Во время симуляции можно настроить настройки трекера и выбрать действие (Сон, Отдых, Прогулка или Упражнение). Когда вы выбираете Упражнение, можно также задать интенсивность тренировки.
Диаграмма Stateflow App Interface
обеспечивает двунаправленное соединение между приложением MATLAB и системами управления и объекта в модели Simulink ®. Когда вы взаимодействуете с виджетами в приложении, график связывает ваши выборки с другими графиками в модели. И наоборот, график использует выход фитнес-трекера, чтобы обновить числовое и текстовое поля в приложение.Для примера, когда вы нажимаете кнопку Rest в приложении, App Interface
график устанавливает значение выхода activity
к перечисленному значению Activity.Rest
. The Human Simulator
график реагирует, создавая значения жизненно важных признаков, которые моделируют человека в рест. Fitness Tracker
график анализирует эти значения и устанавливает выходной сигнал status
на Activity.Rest
. The App Interface
график контролирует этот сигнал и обновляет содержимое поля Status в приложении, чтобы Rest
.
Чтобы запустить пример, откройте модель Simulink и нажмите запуск. График App Interface
открывает приложение и инициализирует Human Simulator
и Fitness Tracker
чарты. В то время как пример работает, одна секунда симуляции представляет одну минуту времени упражнения. Чтобы остановить симуляцию, нажмите кнопку Остановить или закрыть приложение.
График App Interface
настроена для связи с приложением MATLAB sf_fitness_app
.
Приложение использует свойство под названием chart
для взаимодействия с графиком App Interface
. Коллбэки приложения используют это свойство, чтобы считать входы графика и записать в выходы графика. Для примера при изменении значения одного из полей на панели Settings коллбэка обновляет значение соответствующего поля структуры output threshold
. Точно так же, когда вы выбираете новое действие или изменяете интенсивность тренировки на панели Human Simulator, коллбэк устанавливает значение выходов графика activity
и intensity
. Наконец, когда вы закрываете приложение, UIFigureCloseRequest
коллбэк устанавливает значение вывода на графике stop
на true
.
На графике действий входа в InterfaceWithApp
состояние запуска приложения sf_fitness_app
и сохраните возвращенное значение как локальный объект данных app
. График использует этот локальный объект данных, когда вызывает вспомогательные функции updateStatus
, updateClock
, updateText
, updateSteps
, и updateHeartRate
. В приложении эти вспомогательные функции изменяют содержимое полей состояния действия, часов и счетчика шагов и создают эффекты анимации в пульсирующих и стоповых отображениях. Для примера, когда график получает notification
сообщение, подсостояние MainDisplay
вызывает функцию helper updateText
. Эта функция заменяет содержимое отображения часов настраиваемым уведомлением. Через пять секунд подсостояние вызывает функцию helper updateClock
для восстановления отображения синхроимпульса.
Для получения дополнительной информации о том, как создать двунаправленное соединение между приложением MATLAB и диаграммой Stateflow, смотрите Модель Контроллера Окна Степени и Симуляция Медиаплеера.
Функции, используемые для взаимодействия с приложением, не поддерживаются для генерации кода, поэтому InterfaceWithApp
состояние сначала вызывает coder.extrinsic
функция для объявления их внешним кодом MATLAB. Для получения дополнительной информации смотрите Вызов внешних функций MATLAB в диаграммах Stateflow.
The Human Simulator
график моделирует жизненные признаки человека, участвующего в деятельности, выбранной в приложении. На графике используется структура output vitals
передать эти показатели жизнедеятельности на фитнес-трекер. Поля структуры представляют ваш пульс, скорость и количество шагов, которые вы сделали. Когда вы выбираете новое действие или корректируете интенсивность вашего тренировки, график вызывает функцию transition
чтобы гарантировать, что эти жизненно важные признаки изменяются постепенно с течением времени. Чтобы обнаружить изменения в активности или интенсивности упражнений, график вызывает hasChanged
оператор. Для получения дополнительной информации смотрите Обнаружение изменений в значениях данных.
График Fitness Tracker
моделирует базовую логику фитнес-трекера. График состоит из четырёх субдиаграмм, которые соответствуют возможным действиям. График регистрирует ваш статус активности на основе частоты сердечных сокращений и скорости, произведенных Human Simulator
график и переходы между этими субдиаграммами. Чтобы отфильтровать шум сигнала, график использует duration
оператор для реализации простой логики демпфирования. Например, когда вы находитесь в покое, можно сделать некоторые быстрые и внезапные движения, которые не соответствуют упражнениям. График определяет, что вы идете или выполняете упражнения, только если ваше движение длится больше двух минут (или двух секунд времени симуляции). График контролирует активное дочернее состояние и передает эту информацию в App Interface
отобразить через выходные данные status
. Для получения дополнительной информации смотрите Мониторинг активности состояния через данные активного состояния.
График использует другие временные логические операторы, чтобы отслеживать количество времени, которое вы проводите в каждом действии и определять, когда отправлять уведомления в приложение:
Действия выхода в каждой субдиаграмме вызывают elapsed
оператор, чтобы определить, как долго субдиаграмма был активная. График сообщает это значение, наряду с другой информацией, такой как частота сердечных сокращений и общее количество шагов, App Interface
график через структуру output display
.
На графике используются after
оператор, чтобы определить, когда вы спите или ходите дольше пяти минут, отдыхаете или упражняетесь дольше, чем порог, указанный вами в приложении, или упражняетесь с высокой интенсивностью (делая более 4 шагов в секунду) в течение более 15 минут. В каждом из этих случаев график отправляет Notification
сообщение. The App Interface
график получает это сообщение и приводит к появлению уведомления на главном отображении приложения. В зависимости от типа уведомления кнопка уведомления изменяет цвет.
after | duration | elapsed | hasChanged | coder.extrinsic
(MATLAB CODER) | Stop Simulation (Simulink)