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

Диаграмма Stateflow App Interface обеспечивает двунаправленное соединение между приложением MATLAB и системами управления и установки в модели Simulink ®. При взаимодействии с виджетами в приложении диаграмма передает выбранные элементы другим диаграммам в модели. И наоборот, диаграмма использует выходные данные фитнес-трекера для обновления числовых и текстовых полей в приложении. Например, при нажатии кнопки «Отдых» в приложении App Interface диаграмма задает значение вывода activity к перечисляемому значению Activity.Rest. Human Simulator график отвечает, создавая значения признаков жизнедеятельности, которые моделируют человека в состоянии покоя. Fitness Tracker диаграмма анализирует эти значения и устанавливает выходной сигнал status кому Activity.Rest. App Interface диаграмма отслеживает этот сигнал и обновляет содержимое поля Состояние в приложении до Rest.

Чтобы запустить пример, откройте модель Simulink и щелкните Выполнить (Run). Диаграмма App Interface открывает приложение и инициализирует Human Simulator и Fitness Tracker чарты. Во время выполнения примера одна секунда моделирования представляет одну минуту времени упражнения. Чтобы остановить моделирование, нажмите кнопку Остановить или закрыть приложение.
Диаграмма App Interface настроен для связи с приложением MATLAB sf_fitness_app.
Приложение использует свойство с именем chart для взаимодействия с диаграммой App Interface. Обратные вызовы приложения используют это свойство для чтения входных данных диаграммы и записи в выходные данные диаграммы. Например, при изменении значения одного из полей на панели «Параметры» обратный вызов обновляет значение соответствующего поля структуры вывода. threshold. Аналогично, при выборе нового действия или изменении интенсивности тренировки на панели Симулятор человека (Human Simulator) обратный вызов задает значение выходных данных диаграммы. activity и intensity. Наконец, когда вы закрываете приложение, UIFigureCloseRequest обратный вызов задает значение вывода диаграммы stop кому true.
На диаграмме действия ввода в InterfaceWithApp состояние запустить приложение sf_fitness_app и сохранить возвращенное значение как локальный объект данных app. Диаграмма использует этот локальный объект данных при вызове вспомогательных функций updateStatus, updateClock, updateText, updateSteps, и updateHeartRate. В приложении эти вспомогательные функции изменяют содержимое полей состояния активности, часов и счетчиков шагов, а также создают анимационные эффекты на экранах контрольного сигнала и шагов. Например, когда диаграмма получает notification сообщение, подсостояние MainDisplay вызывает функцию помощника updateText. Эта функция заменяет содержимое дисплея часов пользовательским уведомлением. Через пять секунд подсостояние вызывает функцию помощника updateClock для восстановления отображения тактового сигнала.
Дополнительные сведения о создании двунаправленного соединения между приложением MATLAB и диаграммой Stateflow см. в разделах Моделирование контроллера окна питания и Моделирование медиаплеера.

Функции, используемые для взаимодействия с приложением, не поддерживаются для создания кода, поэтому InterfaceWithApp состояние сначала вызывает coder.extrinsic чтобы объявить их как внешний код MATLAB. Дополнительные сведения см. в разделе Вызов внешних функций MATLAB в диаграммах потока состояний.
Human Simulator диаграмма моделирует жизненные признаки человека, занятого деятельностью, выбранной в приложении. Диаграмма использует структуру вывода vitals передать эти жизненно важные признаки фитнес-трекеру. Поля структуры представляют частоту сердечных сокращений, скорость и количество выполненных шагов. Когда вы выбираете новое действие или настраиваете интенсивность тренировки, диаграмма вызывает функцию transition обеспечить постепенное изменение этих жизненно важных признаков с течением времени. Чтобы обнаружить изменения в активности или интенсивности упражнений, диаграмма вызывает hasChanged оператор. Дополнительные сведения см. в разделе Обнаружение изменений в значениях данных.

Диаграмма Fitness Tracker моделирует основную логику фитнес-трекера. Диаграмма состоит из четырех подчастей, которые соответствуют возможным действиям. Диаграмма регистрирует состояние вашей активности на основе частоты сердечных сокращений и скорости, производимой Human Simulator диаграммы и переходы между этими подчастями. Для фильтрации шума сигнала на диаграмме используется duration для реализации простой логики отладки. Например, когда вы находитесь в состоянии покоя, вы можете сделать некоторые быстрые и внезапные движения, которые не соответствуют упражнениям. Диаграмма определяет, что вы идете или тренируетесь, только если ваше движение длится больше двух минут (или двух секунд времени моделирования). Диаграмма отслеживает активное дочернее состояние и передает эту информацию в App Interface диаграмма через выходные данные status. Дополнительные сведения см. в разделе Мониторинг активности состояния через данные активного состояния.

Диаграмма использует другие операторы временной логики для отслеживания времени, затрачиваемого на каждое действие, и определения времени отправки уведомлений в приложение:
Действия выхода в каждом подшарте вызывают elapsed , чтобы определить, как долго был активен подшаг. Диаграмма сообщает это значение вместе с другой информацией, такой как частота сердечных сокращений и общее количество шагов, App Interface диаграмма через структуру вывода display.
Диаграмма использует after оператор определяет, когда вы спите или ходите дольше пяти минут, отдыхаете или выполняете упражнения дольше порога, указанного в приложении, или выполняете упражнения с высокой интенсивностью (делая более 4 шагов в секунду) дольше 15 минут. В каждом из этих случаев диаграмма отправляет Notification сообщение. App Interface диаграмма получает это сообщение и вызывает появление уведомления на главном экране приложения. В зависимости от типа уведомления кнопка уведомления меняет цвет.
после | продолжительность | истекший | hasChanged | coder.extrinsic (Кодер MATLAB) | Остановить моделирование (Simulink)