Как быстро передать информацию с XBee на другой XBee? - PullRequest
4 голосов
/ 26 марта 2012

Я использую несколько XBee Zigbee с некоторыми модулями Arduino (или микроконтроллерами, Arduino не является обязательным).Я настроил свои XBees в режиме AT / прозрачный.

Мне нужно передать информацию: при касании одного модуля каждый другой модуль должен реагировать одновременно и немедленно.

К сожалению, если яхорошие результаты скорости в режиме одноадресной передачи, в режиме широковещания много задержек.Это что-то известное и задокументированное, см. Адресация XBee ZigBee .

Данные не теряются, но они иногда буферизуются в течение нескольких секунд XBee перед отправкойснова или доставлен на мой Arduino.

Кажется, это не проблема конфигурации, это способ работы протокола вещания.Любая идея о том, как я мог бы ускорить процесс?

Единственное, что у меня есть, - это использовать режим API, чтобы каждый Arduino сохранял список адресов XBee и информацию одноадресной рассылки в списокэти адреса ... но я теряю удобство метода вещания, и я не могу легко добавить новый модуль, не обновляя каждый Arduino.

Ответы [ 2 ]

8 голосов
/ 01 апреля 2012

Передача данных с использованием широковещательной адресации с модулями XBee ZB, как правило, дает вам гораздо, гораздо меньшую производительность, чем передача индивидуальной одноадресной передачи на каждый узел, с которым вы хотите общаться.Это связано с тем, что вещание на модулях XBee ZB работает совсем иначе, чем на модулях XBee 802.15.4.

Когда вы отправляете вещание с модулями XBee 802.15.4, один кадр 802.15.4 передается насеть и все узлы, которые могут слышать передачу, принимают ее и отправляют информацию из своих последовательных UART.Сеть 802.15.4 является простой звездообразной сетью, и ни один из узлов сети не выполняет неявное повторение широковещательной передачи.С XBee ZB это не так.Модули XBee ZB действуют в ячеистой топологии и должны повторять информацию для других узлов, находящихся вне диапазона исходной передачи.

При отправке широковещательной передачи с модулями XBee ZB каждый узелПри приеме трансляции он будет ретранслироваться 3 раза, что приведет к передаче большого количества данных между узлами.Кроме того, в любой момент времени в сети может быть только определенное количество трансляций, которые «живут» в сети.Это часто удивляет людей, когда они думают, что сеть отбрасывает их данные, когда на самом деле XBee отклоняет запрос на передачу.

Если вы не отправляете данные очень редко - возможно, трансляцию раз в минуту или медленнее -часто лучше следовать этой процедуре:

  1. Создайте список всех узлов, выполнив обнаружение сети или собрав пакеты записей маршрута, включив функцию AR
  2. Отправка индивидуальной рассылки каждомуузел, который вы хотите передать на

Если вы отправляете информацию узлам в большой сети ZB (т. е. более 30 нот), вы можете прочитать эту статью: Большие сети иМаршрутизация источника

1 голос
/ 31 марта 2012

Я не думаю, что вы можете оптимизировать его намного больше, если только некоторые модули не нуждаются в получении сообщения.В этом случае вы могли бы использовать многоадресную рассылку ( может быть доступной только с Xbee 2) вместо широковещания, что принесло бы очень незначительное улучшение в целомскорость вашей сети, когда она становится достаточно большой (больше 16 узлов, то есть базовая таблица маршрутизации).

Вы пробовали сравнение между одноадресной, многоадресной и широковещательной рассылкой?Может случиться так, что создание дюжины одноадресных рассылок в среднем быстрее или, по крайней мере, более надежно, особенно если у вас есть много переходов в вашей конкретной сети (например, сеть из 12 узлов с 8 переходами).

При использовании одноадресной передачи выможно получить подтверждение или подтверждение, чтобы вы знали общее время и успех операции, а также необходимость повторной попытки или нет.

...