2016-06-21 8 views
0

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

В API-Mode предлагает некоторые основные команды, в основном, для выполнения адресации и говорить с XBee Сам модуль для того, чтобы сделать конфигурацию и т.д.

Отправка данных пользователя осуществляется с помощью соответствующего API XBee-Command, которая позволяет для отправки пользовательских данных с максимальной полезной нагрузкой в ​​72 байта.

Поскольку я хочу расширить это сообщение, чтобы обеспечить интеграцию большего количества машин и т. Д. Я думаю о том, как реализовать базовую систему связи, идеально подходящую для супермаксимальной полезной нагрузки всего 72 байта.

Из Интернета я обычно использовал бы какой-то JSON, но это очень быстро заполнило бы полезную нагрузку.

Также невозможно отправить кадр с информацией о лоте, поскольку это также очень быстро заполняет полезную нагрузку.

Так что я придумал другой способ общения. Вместо передачи кадров, упакованные с информацией, как насчет отправки своего рода сообщений как это:

  • Машинно-A Трансляции: Кто там?
  • машина-B Ответы: Это меня Я ххх-Machine
  • Machine-C ответы: Это я я ххх-Machine

Machine-A Теперь оценивает ответы и решает работать с Machine-B (потому что Machine-C не соответствует интерфейсу As):

  • Машина-A-B: Привет, пожалуйста, дайте мне знать!
  • машина-B в A: Там вы идете: 2,349590

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

То, что я пытался избежать, - это определение битового протокола (например, MIDI), который определяет все события как флаги на основе бит. Поскольку мы не сейчас, какое оборудование будет добавлено в будущем, я хочу, чтобы коммуникационный протокол был очень гибким и не нуждался в координаторе или брокере сообщений и т. Д.

Но поскольку это первый раз, о чем я думаю о протоколах связи. Мне любопытно узнать, могут ли быть какие-то существующие структуры, которые могут обрабатывать сложную связь на легкой полезной нагрузке.

ответ

0

Возможно, вы захотите прочитать спецификацию ZigBee Cluster Library с упором на общие команды. В нем описывается система обнаружения и извлечения атрибутов. Каждый атрибут имеет 16-битный идентификатор и тип данных (целые числа различных размеров, перечисляемые типы, растровые изображения), которые определяют его размер.

Это протокол, предназначенный для небольших загрузок сети 802.15.4, и вы можете потенциально основать свой протокол от его подмножества.Другие спецификации ZigBee - это просто список определенных атрибутов (и команд) для данного 16-разрядного идентификатора кластера.

Ваше главное устройство может пройти процесс обнаружения, чтобы получить список идентификаторов атрибутов, а затем отправить запрос на получение значений для нескольких идентификаторов за один снимок. Ответ будет упакован с 16-битным идентификатором, 8-битным типом атрибута и данными переменной длины. Даже если ваше ведущее устройство не знает, что соответствует идентификатору, оно может передавать данные вместе с другими системами (например, веб-сервером), которые действительно знают.