В этом примере показано, как реализовать средство отслеживания фитнеса при помощи временных логических и внешних вызовов функции в Stateflow®. Средство отслеживания фитнеса состоит из модели Simulink® и пользовательского интерфейса (UI) MATLAB®, созданного при помощи App Designer. Модель имеет три компонента.
Human_Simulator является подсистемой, это моделирует ваше действие. Эти выходные сигналы подсистемы, которые представляют ваш сердечный ритм, вашу скорость и количество шагов, которые вы сделали.
Средством отслеживания фитнеса является диаграмма Stateflow, которая моделирует логику ядра средства отслеживания фитнеса. Этот график использует временную логику, чтобы определить ваше состояние действия (сон, отдых, обход или осуществление) и отправить уведомления пользовательскому интерфейсу.
Контроллером пользовательского интерфейса является диаграмма Stateflow, которая обновляет отображения средства отслеживания фитнеса в пользовательском интерфейсе. Внешние вызовы функции в этом графике и функции обратного вызова в пользовательском интерфейсе создают двунаправленную связь между моделью и пользовательским интерфейсом.
В начале симуляции модель открывает пользовательский интерфейс. В то время как пример запускается, одна секунда симуляции представляет одну минуту времени осуществления. Когда вы закрываете окно UI, блок Stop Simulation останавливает модель.
График Средства отслеживания Фитнеса управляет выходом средства отслеживания фитнеса пользовательский интерфейс. Этот график указывает ваше состояние действия на основе вашего сердечного ритма и скорости. Четыре подграфика соответствуют возможным значениям состояния действия. График контролирует активное дочернее состояние и передает эту информацию Контроллеру пользовательского интерфейса график через выходные данные Activity
.
debouncing логика в графике отфильтровывает шум сигнала при помощи duration
оператор. Например, когда вы в покое, можно сделать некоторые быстрые и внезапные перемещения, которые не соответствуют осуществлению. График решает, что вы идете или тренируетесь, только если ваше движение длится дольше, чем две минуты (две секунды времени симуляции).
Подграфики в этом графике используют другие временные логические операторы, чтобы отследить ваше действие осуществления. Эти подграфики отправляют Notification
передайте контроллеру пользовательского интерфейса график в этих ситуациях:
Вы спите или идете для дольше, чем пять минут. Выходные действия в Sleep
и Walk
подграфики вызывают elapsed
оператор, чтобы определить, сколько времени те подграфики были активны.
Вы отдыхаете или тренируетесь для дольше, чем порог, который вы задаете в пользовательском интерфейсе. Rest
и Exercise
подграфики вызывают after
оператор, чтобы определить, сколько времени те подграфики активны.
Ваш сердечный ритм превышает порог, для которого вы задаете в пользовательском интерфейсе дольше, чем одна минута. Exercise
подграфик вызывает duration
оператор, чтобы определить, сколько времени сердечный ритм остается выше порога.
Диспетчер пользовательского интерфейса строит диаграмму, обрабатывает данные от подсистемы Human_Simulator и графика Средства отслеживания Фитнеса и передает эту информацию к пользовательскому интерфейсу.
Чтобы связаться с пользовательским интерфейсом, график вызывает функции, определяемые приложения в пользовательском интерфейсе. Эти функции приложения не поддерживаются для генерации кода, таким образом, Init
состояние сначала объявляет эти функции приложения как coder.extrinsic
. Это объявление включает DISPLAY
состояние, чтобы вызвать функции приложения и обновить состояние действия, часы, продвигается счетчик и отображения сердечного ритма в пользовательском интерфейсе. Например, когда график получает уведомление, Notification_and_Clock
подсостояния вызывает функцию приложения
updateText
. Эта функция приложения заменяет отображение часов на индивидуально настраиваемое уведомление. После пяти секунд подсостояние вызывает функцию приложения updateClock
восстановить отображение часов.
В процессе моделирования можно взаимодействовать с пользовательским интерфейсом путем изменения значений в панели Настроек и нажатия кнопок действия в Человеческой панели Средства моделирования. После каждого взаимодействия пользовательский интерфейс изменяет параметр в модели Simulink путем вызова set_param
функция. Например, когда вы кликаете по остальным кнопка на пользовательском интерфейсе, в Человеческом Средстве моделирования, значении Activity
постоянный блок изменяет в перечисляемое значение Activity.Rest
. Человеческое Средство моделирования отвечает путем создания сердечного ритма и значений скорости, которые моделируют человека в покое.
Stop Simulation | после | coder.extrinsic
| длительность | прошедший | set_param