В этом примере показано, как создать приложение, состоящее из нескольких автономных диаграмм Stateflow ® и приложения MATLAB ®. Автономные диаграммы моделируют системы управления и установки для приложения и интерфейса с приложением MATLAB. Дополнительные сведения о подключении автономной диаграммы к приложению MATLAB см. в разделе Проектирование логики интерфейса человека и машины с помощью Statef Версию этого примера, использующую диаграммы Stateflow в модели Simulink ®, см. в разделе Модель фитнес-трекера.
В этом примере приложение MATLAB моделирует фитнес-трекер. При запуске приложения можно настроить параметры трекера и выбрать действие (Сон, Отдых, Прогулка или Упражнение). При выборе Упражнение, вы также можете установить интенсивность тренировки.

Автономная диаграмма sf_fitness_interface обеспечивает двунаправленное соединение между приложением MATLAB и другими автономными диаграммами в примере, sf_fitness_human и sf_fitness_tracker. Эти диаграммы моделируют симулятор человека и обеспечивают основную логику для фитнес-трекера соответственно. Когда вы взаимодействуете с виджетами в приложении, sf_fitness_interface диаграмма передает выбранные элементы другим диаграммам в примере. И наоборот, диаграмма использует выходные данные фитнес-трекера для обновления числовых и текстовых полей в приложении.
Эта принципиальная схема иллюстрирует передачу информации между приложением и диаграммами в примере.

Для запуска примера выполните команду sf_fitness_sfx_app app. Приложение создает объект диаграммы для sf_fitness_interface. Эта диаграмма, в свою очередь, создает объекты диаграммы для двух других диаграмм в примере. Диаграмма также создает MATLAB timer объект, который выполняет все три диаграммы с частотой, пропорциональной частоте сердечных сокращений в диаграмме симулятора человека. Во время выполнения примера одна секунда моделирования представляет одну минуту времени упражнения. Чтобы остановить пример, закройте приложение.
Диаграмма sf_fitness_interface настроен для связи с приложением MATLAB sf_fitness_sfx_app.
Диаграмма использует локальный объект данных app для взаимодействия с приложением MATLAB. Диаграмма использует этот локальный объект данных при вызове вспомогательных функций updateStatus, updateClock, updateText, updateSteps, и updateHeartRate. В приложении эти вспомогательные функции изменяют содержимое полей состояния активности, часов и счетчиков шагов, а также создают анимационные эффекты на экранах контрольного сигнала и шагов. Например, когда появляется новое уведомление от фитнес-трекера, подсостояние MainDisplay вызывает функцию помощника updateText. Эта функция заменяет содержимое дисплея часов пользовательским уведомлением. После небольшой задержки подсостояние вызывает функцию помощника updateClock для восстановления отображения тактового сигнала.
Приложение использует свойство с именем chart для взаимодействия с диаграммой. Приложение использует это свойство для чтения локальных данных диаграммы. Например, вспомогательные функции updateHeartRate и updateSteps считывать локальные данные диаграммы heart_rate и total_stepsсоответственно. Кроме того, при закрытии приложения UIFigureCloseRequest обратный вызов использует chart для остановки выполнения диаграмм в примере путем удаления их объектов-диаграмм.
Дополнительные сведения о том, как создать двунаправленное соединение между приложением MATLAB и автономной диаграммой Stateflow, см. в разделе Проектирование логики человеко-машинного интерфейса с помощью диаграмм Stateflow.
![]()
Чтобы установить связь с человеческим тренажером и картами фитнес-трекера, sf_fitness_interface диаграмма сохраняет объекты диаграммы в виде локальных данных human и tracker. Функции MATLAB на уровне диаграммы updateHuman и updateTracker используйте эти объекты для записи и чтения из локальных данных в диаграммах. Например, при выборе нового действия или изменении интенсивности тренировки на панели «Симулятор человека» приложения, updateHuman устанавливает значение локальных данных activity и intensity на карте симулятора человека. Аналогично, при изменении значения одного из полей на панели «Параметры» приложения updateTracker обновляет значение соответствующих локальных данных в диаграмме фитнес-трекера.
Схема имитатора человека sf_fitness_human моделирует жизненно важные признаки человека, участвующего в деятельности, которую вы выбираете в приложении. На диаграмме эти жизненно важные признаки (представляющие частоту сердечных сокращений, скорость и количество шагов, которые вы предприняли) хранятся в виде локальных переменных, к которым может получить доступ фитнес-трекер. Когда вы выбираете новое действие или настраиваете интенсивность тренировки, диаграмма вызывает функцию transition обеспечить постепенное изменение этих жизненно важных признаков с течением времени. Чтобы обнаружить изменения в активности или интенсивности упражнений, диаграмма вызывает hasChanged оператор. Дополнительные сведения см. в разделе Обнаружение изменений в значениях данных.
![]()
Диаграмма sf_fitness_tracker моделирует основную логику фитнес-трекера. Диаграмма состоит из четырех подчастей, которые соответствуют возможным действиям. Диаграмма регистрирует состояние вашей активности на основе частоты сердечных сокращений и скорости, полученных с помощью диаграммы симулятора человека, и переходов между этими подшаблонами. Для фильтрации шума сигнала на диаграмме используется count для реализации простой логики отладки. Например, когда вы находитесь в состоянии покоя, вы можете сделать некоторые быстрые и внезапные движения, которые не соответствуют упражнениям. Диаграмма определяет, что вы идете или выполняете упражнения, только если ваше движение длится дольше двух оценок объекта диаграммы.
![]()
Диаграмма использует другие операторы временной логики для отслеживания времени, затрачиваемого на каждое действие, и определения времени отправки уведомлений в приложение:
Действия выхода в каждом подшарте вызывают elapsed , чтобы определить, как долго был активен подшаг.
Диаграмма использует after оператор определяет, когда вы спите или ходите дольше пяти минут, отдыхаете или выполняете упражнения дольше порога, указанного в приложении, или выполняете упражнения с высокой интенсивностью (делая более 4 шагов в секунду) дольше 15 минут. В каждом из этих случаев диаграмма обновляет значение локальных данных. notification. sf_fitness_interface диаграмма считывает это значение и вызывает появление уведомления на главном экране приложения. В зависимости от типа уведомления кнопка уведомления меняет цвет.
количество | истекший | hasChanged