В этом примере показано, как использовать автономную диаграмму Stateflow®, чтобы смоделировать конечный автомат в Bluetooth®, низкая энергия (BLE) соединяет слой.
Технология Bluetooth является беспроводным интерфейсом, предназначенным, чтобы заменить кабели, соединяющие портативное и фиксированное электронное оборудование. Промышленный консорциум Специальной группы Bluetooth задает две группы стандартов для этой технологии: Bluetooth низкая энергия (BLE) и базовая скорость / улучшенная скорость передачи данных (BR/EDR) Bluetooth. Устройства BLE характеризуются низким энергопотреблением и низкой стоимостью. Эти устройства имеют операционную радиочастоту в области значений от 2,4000 ГГц до 2,4835 ГГц. Операционная полоса разделена на 40 каналов, каждого с полосой пропускания 2 МГц. Пользовательские пакеты данных передаются с помощью каналов в диапазоне от 0 до 36. Рекламные пакеты данных передаются в каналах 37, 38, и 39.
Функциональность стека протокола BLE разделена между тремя основными слоями:
Слой контроллера включает низкий энергетический физический уровень (PHY), слой ссылки (LL) и интерфейс хост-контроллера (HCI) стороны контроллера. Конечный автомат, смоделированный этим примером, является частью слоя ссылки в этом фрагменте стека протокола BLE.
Слой хоста включает HCI стороны хоста, управление логической ссылкой и протокол (L2CAP) адаптации, протокол атрибута (ATT), типовой профиль атрибута (GATT), протокол менеджера безопасности (SMP) и типовой профиль доступа (GAP). Этот слой также содержит стек mesh BLE, который состоит из рекламной несущей, сети, ниже транспортируйте, верхний транспорт, доступ, основополагающая модель и слои модели.
Слой профилей приложений и сервисов (APP) является пользовательским интерфейсом, который задает профили использования и включает функциональную совместимость между приложениями Bluetooth.
Для получения дополнительной информации смотрите то, Что Bluetooth? (Communications Toolbox), Стек Протокола Bluetooth (Communications Toolbox) и Mesh Bluetooth, Сетевая (Communications Toolbox).
В стеке протокола BLE слой ссылки управляет состоянием радио, чтобы задать роль устройства как рекламодатель или сканера. Этот слой взаимодействует через интерфейс непосредственно со слоем PHY, который использует три рекламных канала (37, 38, и 39), чтобы передать и получить пакеты данных.
В этом примере, автономная диаграмма Stateflow sf_bluetooth.sfx
задает рабочие режимы слоя ссылки. График имеет три состояния: Standby
, Advertising
, и Scanning
. Первоначально, Standby
состояние активно, указывая, что устройство неактивно. В следующем временном шаге, переходах графика к Advertising
или Scanning
состояние, в зависимости от значения локальных данных TxData
. Это значение указывает, существуют ли данные из рекламной несущей в слое хоста, доступном для передачи.
Если существуют доступные данные, переходы графика к Advertising
состояние. Когда это состояние активно, циклы устройства через три рекламных канала и передает тот же пакет данных в каждом канале. График остается в Advertising
состояние для рекламного интервала, прежде чем это возвратится к Standby
состояние. Рекламный интервал разделен на три метки времени контрольной точки, которые соответствуют трем рекламным каналам. В этом примере рекламный интервал состоит из минимума 20 миллисекунд, с метками времени контрольной точки в 1 миллисекунде (для канала 37), 9 миллисекунд (для канала 38) и 17 миллисекунд (для канала 39).
Если нет никаких доступных данных, переходов графика к Scanning
состояние. Когда это состояние активно, слой PHY пассивно сканирует один из рекламных каналов для новых данных. Если слой PHY получает пакет данных, слой ссылки передает его рекламному слою несущей. График остается в Scanning
состояние для интервала сканирования, прежде чем это возвратится к Standby
состояние. В той точке, если нет все еще никаких доступных данных, график выбирает новый рекламный канал и запускает другой интервал сканирования. В этом примере интервал сканирования состоит из 50 миллисекунд.
Скрипт sf_bluetooth_demo.m
создает расположенный на слое объект ссылки BLE bleLinkLayer
и симулирует 10 секунд коммуникаций mesh по рекламной несущей. Расположенный на слое объект ссылки использует автономную диаграмму sf_bluetooth.sfx
для управляющей логики и на объекте очереди слоя ссылки bleQueue
для того, чтобы хранить данные от рекламной несущей.
Симуляция состоит из 10 000 временных шагов. Каждый временной шаг представляет выполнение расположенного на слое объекта ссылки (который соответствует 1 миллисекунде времени симуляции), и обычно состоит из этих шагов:
Если очередь слоя ссылки не пуста, считайте пакет данных. Данные в очереди представляют рекламные пакеты данных, которые слой ссылки получает из рекламного слоя несущей.
Установите значение данных о графике TxData
и выполните автономную диаграмму. На этом шаге график определяет, действует ли устройство как рекламодатель или сканер.
Если график находится в Advertising.Transmit
утвердите, сгенерируйте слой ссылки BLE, рекламируя модуль данных о протоколе (PDU) канала с помощью данных, считанных из очереди слоя ссылки. PDU представляет передачу слоем PHY. Для получения дополнительной информации о генерации и конфигурировании рекламного PDU канала, смотрите bleLLAdvertisingChannelPDU
(Communications Toolbox) и bleLLAdvertisingChannelPDUConfig
(Communications Toolbox).
Существует два исключительных случая:
Каждые 1 000 временных шагов, скрипт продвигает данные в очередь слоя ссылки прежде, чем выполнить расположенный на слое объект ссылки. Эти данные представляют рекламные пакеты данных, которые слой ссылки получает из рекламного слоя несущей.
Каждые 2 500 временных шагов, скрипт генерирует слой ссылки BLE, рекламируя PDU канала, который представляет рекламный пакет данных, полученный слоем PHY. Затем скрипт выполняет расположенный на слое объект ссылки. Если график находится в Scanning
состояние, расположенный на слое объект ссылки пытается декодировать PDU и, если декодирование успешно, передает PDU рекламному слою несущей. Для получения дополнительной информации о декодировании PDU смотрите bleLLAdvertisingChannelPDUDecode
(Communications Toolbox).
Когда симуляция завершена, скрипт распечатывает сводные данные, которые перечисляют количество пакетов данных и байтов, переданных и полученных слоем ссылки.
Number of PDUs transmitted from link layer: 27 Number of bytes transmitted from link layer: 702 Number of PDUs received at link layer: 4 Number of bytes received at link layer: 112
Во время симуляции анимация графика обеспечивает визуальную индикацию относительно поведения во время выполнения алгоритма. Обратите внимание на то, что стройте диаграмму, анимация замедляет эффективность. Чтобы уменьшать время выполнения примера, закройте график прежде, чем запустить скрипт.
bleLLAdvertisingChannelPDU
(Communications Toolbox) | bleLLAdvertisingChannelPDUDecode
(Communications Toolbox) | bleLLAdvertisingChannelPDUConfig
(Communications Toolbox)