В этом примере показано, как использовать автономный график Stateflow ® для моделирования конечного автомата на слое ссылки ® с низкой энергией (BLE).
Технология Bluetooth является беспроводным интерфейсом, предназначенным для замены кабелей, соединяющих портативное и фиксированное электронное оборудование. Отраслевой консорциум Bluetooth Special Interest Group определяет две группы стандартов для этой технологии: Bluetooth low energy (BLE) и Bluetooth basic rate/enhanced data rate (BR/EDR). Устройства 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), Стек (Communications Toolbox) и Bluetooth Mesh Networking (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
для логики управления и объекта ссылки слоя queue bleQueue
для хранения данных от рекламного носителя.
Симуляция состоит из 10 000 временных шагов. Каждый временной шаг представляет выполнение объекта ссылки слоя (что соответствует 1 миллисекунде времени симуляции) и обычно состоит из следующих шагов:
Если ссылка слоя очередь не пуста, считайте пакет данных. Данные в очереди представляют пакеты рекламных данных, которые канальный слой получает от рекламного слоя-носителя.
Установите значение данных графика TxData
и выполните автономную диаграмму. На этом этапе график определяет, действует ли устройство как рекламодатель или сканер.
Если график находится в Advertising.Transmit
В состоянии сгенерируйте модуль данных протокола рекламного канала (PDU) канального слоя BLE, используя данные, считанные из очереди канального слоя. PDU представляет передачу слоем PHY. Для получения дополнительной информации о генерации и конфигурировании PDU канала рекламы смотрите bleLLAdvertisingChannelPDU
(Communications Toolbox) и bleLLAdvertisingChannelPDUConfig
(Communications Toolbox).
Существует два исключительных случая:
Каждые 1000 временных шагов скрипт выталкивает данные в очередь канального уровня перед выполнением объекта канального уровня. Эти данные представляют пакеты рекламных данных, которые канальный слой получает с рекламного слоя-носителя.
Каждые 2500 временных шагов скрипт генерирует PDU рекламного канала канального уровня BLE, который представляет пакет рекламных данных, принимаемый слоем 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) | bleLLAdvertisingChannelPDUConfig
(Communications Toolbox) | bleLLAdvertisingChannelPDUDecode
(Communications Toolbox)