В этом примере показано, как моделировать конечный автомат канального уровня для установления соединения между устройствами Bluetooth ® с низким энергопотреблением (BLE) с использованием библиотеки Communications Toolbox™ Library для протокола Bluetooth и Stateflow ®. Механизм работы канального уровня описан в терминах конечного автомата, состоящего из этих пяти состояний: «Standby», «Advertising», «Scanning», «Initiating» и «Connection». На основе этих состояний устройства Bluetooth могут быть рекламодателями, сканерами, инициаторами, ведущими или подчиненными. В этом примере представлена модель для демонстрации процесса установления соединения между ведущим и ведомым посредством переходов между различными состояниями конечного автомата канального уровня. Результаты моделирования отображают время, затраченное на установление соединения между ведущим и ведомым. Кроме того, этот пример также предоставляет графики, показывающие изменение времени установления соединения как функции параметров конфигурации, таких как интервал рекламы и помехи.
Спецификация ядра Bluetooth [1] включает версию с низким энергопотреблением (LE) для низкоскоростных беспроводных персональных сетей, называемых BLE или Bluetooth Smart. Стек BLE состоит из: Generic Attribute Profile (GATT), Attribute Protocol (ATT), Security Manager Protocol (SMP), Logical Link Control and Adaptation Protocol (L2CAP), канального уровня (LL) и физического уровня (PH). BLE была добавлена в стандарт Bluetooth Special Interest Group (SIG) [1] для устройств с низким энергопотреблением, генерирующих небольшой объем данных, таких как уведомления, используемые в таких приложениях, как домашняя автоматизация, здравоохранение, фитнес и Интернет вещей (IoT).

BLE работает в диапазоне 2,4 ГГц ISM на частоте 2400 - 2483,5 МГц. Он использует 40 радиочастотных каналов и каждый канал имеет ширину 2 МГц.
BLE классифицирует эти 40 радиочастотных каналов на три рекламных канала (индексы каналов: 37, 38, 39) и 37 каналов данных (индексы каналов: 0 - 36). Рекламные каналы в основном используются для создания соединения между устройствами BLE посредством передачи рекламных пакетов, пакетов запросов/ответов сканирования и пакетов индикации соединения. Каналы данных используются в основном после установления соединения для обмена пакетами данных.
Модель в этом примере демонстрирует процесс установления соединения между двумя устройствами BLE, где одно устройство действует как ведущее, а другое - как подчиненное. Главное устройство начинает сканирование рекламных пакетов на рекламных каналах. Подчиненное устройство начинает отправлять рекламные пакеты по рекламным каналам. После выбора рекламодателя ведущий инициирует соединение с ним с помощью пакета индикации соединения. Соединение устанавливается, когда ведомый сервер принимает этот пакет. После этого ведущие и подчиненные устройства могут обмениваться пакетами данных.

Конечный автомат канального уровня реализуется с использованием Stateflow ®, как показано ниже.

Канальный уровень поддерживает конечный автомат, состоящий из следующих пяти состояний:
Standby: это состояние по умолчанию на канальном уровне. Устройство не отправляет и не принимает пакеты в этом состоянии. Он может выйти из состояния ожидания, чтобы войти в одно из состояний рекламы, сканирования или инициирования.
Реклама: В этом состоянии устройство передает рекламные пакеты с периодическими интервалами, называемыми рекламными событиями. Эти устройства называются рекламодателями.
Сканирование: В этом состоянии устройство прослушивает рекламодателей на рекламных каналах и переходит в состояние ожидания для выбора рекламодателя для инициирования соединения.
Инициирование: В этом состоянии устройство прослушивает конкретного рекламодателя и инициирует с ним соединение. Устройство перейдет в состояние «Соединение» после получения рекламного пакета от выбранного рекламодателя. Эти устройства называются инициаторами.
Соединение: В этом состоянии устройство передает пакеты данных с периодическими интервалами, называемыми событиями соединения.
После установления соединения инициатор становится ведущим (центральным) устройством, а рекламодатель - подчиненным (периферийным) устройством.

Рекламное устройство передает рекламные пакеты по трем рекламным каналам циклически (начиная с индекса 37 канала). Каждый цикл рекламы называется рекламным мероприятием. Та же процедура используется сканирующим или инициирующим устройством, которое прослушивает на трех рекламных каналах циклическим образом, называемым скан-событием.
Подключенное устройство переходит на новый канал данных для каждого события соединения. Событие соединения - это временной кадр для обмена последовательностью пакетов данных между двумя подключенными устройствами, который повторяется через регулярные интервалы. Все пакеты в событии соединения передаются по одному и тому же каналу данных. Новое событие подключения использует новый канал данных. Два альтернативных алгоритма выбора каналов определяются спецификацией ядра Bluetooth (см. раздел 4,5,8, часть B, Vol-6 [1]). Эти алгоритмы используются для выбора канала данных для каждого события соединения.
На этом рисунке показан процесс установления соединения между двумя устройствами BLE с использованием событий канального уровня:

Модель конечного автомата канального уровня, показанная в этом примере, использует два блока библиотеки: Device и Wireless Medium.
Можно обновить конфигурацию устройства с помощью параметров маски блока «Устройство» в модели. На основе выбранной роли GAP (центральная/периферийная) маска будет обновлена с помощью соответствующих свойств.
Можно также настроить помехи статистически для каждого рекламного канала (37, 38 и 39) в блоке беспроводной среды.
Результаты, полученные в этом моделировании:
Время установления соединения:
Эта модель выводит время, затраченное в миллисекундах на установление соединения. Это значение времени сохраняется в базовой переменной рабочей области timeTakenToEstablishConnection.
Последовательность скачкообразной перестройки канала:
Последовательность транзитных участков канала, используемых ведущими и подчиненными устройствами, отдельно показана на диаграмме объема.

Обмен пакетами между устройствами
Пакеты, которыми обмениваются ведущий и ведомый, регистрируются в файле формата PCAP с именем BLEPacketExchange e.pcap. Этот файл PCAP можно открыть с помощью любого программного обеспечения для анализа пакетов сторонних производителей.

Журнал диагностики для операций с устройствами
Журнал сообщений можно включить или отключить с помощью настроек блока «Устройство».

При моделировании можно изменять интервалы и пересечения, чтобы наблюдать изменение времени установления соединения. Результаты моделирования показаны ниже:
Результаты моделирования без пересечений:
На этом графике показано, как время установления соединения изменяется в зависимости от рекламного интервала. Здесь окно сканирования составляет 10 миллисекунд с интервалом сканирования 100 миллисекунд, т.е. 10% активного периода сканирования.

Запустите сценарий helperBLEPlotConnityTimeWithedInterference (долгосрочное моделирование) для создания вышеуказанных результатов.
Результаты моделирования с пересечениями:
На этом графике показано, как среднее время установления соединения изменяется с различными уровнями помех. На графике также показана вариация для нескольких значений рекламных интервалов. Здесь окно сканирования составляет 100 миллисекунд с интервалом сканирования 100 миллисекунд, т.е. 100% активного периода при сканировании. Эти значения времени установления соединения усредняются в течение 100 прогонов моделирования для различных значений интервалов рекламы и уровней помех.

Запустите сценарий helperBLEPlotConnityTimeWireInterference (долгосрочное моделирование) для создания вышеуказанных результатов.
Помимо рекламного интервала, время установления соединения изменяется в отношении множества параметров, таких как интервал сканирования, окно сканирования, длительность сканирования, продолжительность рекламы и помехи. Для дальнейшего изучения можно изменить любой из этих параметров. Оба вышеупомянутых моделирования выполняются с продолжительностью сканирования и рекламы 1 и 10 секунд соответственно.
Этот пример иллюстрирует модель конечного автомата канального уровня для установления соединения между двумя устройствами BLE, а именно: ведущим и ведомым. Эта модель предоставляет подробную информацию о различных состояниях и событиях канального уровня. Диаграммы перехода состояний, представленные в этом примере, ясно объясняют процесс установления соединения между Ведущим и Ведомым. Полученные результаты моделирования отображают время, затраченное на установление соединения между устройствами BLE. Кроме того, полученные графики также показывают, что время установления соединения изменяется в зависимости от параметров конфигурации, таких как интервал объявления и помехи.
В примере используются следующие функции:
bleLLAdvertisingChannelPDU: Создание рекламного канала LL PDU
bleLLAdvertisingChannelPDUDecodeДекодировать рекламный канал LL PDU
bleLLAdvertisingChannelPDUConfigСоздание объекта конфигурации для генерации и декодирования PDU рекламного канала LL
bleLLDataChannelPDUСоздание PDU канала данных LL
bleLLDataChannelPDUDecodeДекодирование PDU канала данных LL
bleLLDataChannelPDUConfigСоздание объекта конфигурации для генерации и декодирования PDU канала данных LL
bleLLControlPDUConfigСоздание объекта подконфигурации, используемого при формировании и декодировании PDU канала данных
bleGAPDataBlockСоздание информации о рекламе GAP и отклике на сканирование
bleGAPDataBlockDecodeДекодирование информации о рекламе GAP и откликах сканирования
bleGAPDataBlockConfigСоздание объекта конфигурации для генерации и декодирования блока данных GAP
bleChannelSelectionСоздание системного объекта, используемого для выбора нового канала данных для передачи пакета данных
blePCAPWriter: Создание объекта записи файлов BLE PCAP или PCAPNG
В примере используются следующие помощники:
helperBLELLConneyEvent: Создание объекта для событий подключения BLE LL
helperBLELLConnateEventStatus: Перечисление для указания состояния событий подключения LL BLE
helperBLINGtateMachineEnumeration: Перечисление для указания строк, используемых в модели конечного автомата BLE LL
helperBLEGenerateRandomDeviceAddress: Создание случайного адреса устройства для устройства Bluetooth
helperBLEGetDurationInSteps: Вычисление количества шагов, необходимых для параметров синхронизации в модели, на основе степбита
helperBLEPlotConniceTimeWitherInterference: Выполнение нескольких имитаций с изменяющимся интервалом рекламы без помех
helperBLEPlotConniceTimeWeyInterference: Выполнение нескольких симуляций, изменяющих интервал рекламы с помехами
Веб-сайт технологии Bluetooth ®. «Веб-сайт Bluetooth Technology | Официальный веб-сайт Bluetooth Technology». Доступ состоялся 8 июля 2020 года. https://www.bluetooth.com/.
«Development/LibpcapFileFormat - Wiki Wiki Wieshark». Доступ состоялся 8 июля 2020 года. https://wiki.wireshark.org/Development/LibpcapFileFormat.