Взяв в качестве примера протокол передачи ZigBee, уровень PHY, уровень MAC и уровень NWK выполнили множество механизмов обработки, и уровень потери пакетов составляет почти 0,1% ~ 0,01%. Однако, если дизайн приложения не учитывает оставшуюся проблему потери пакетов 0,1%~0,01%, влияние на само приложение будет фатальным. Отказоустойчивость при потере пакетов в сетях беспроводной связи, характерная для приложений IoT, имеет следующие решения.
① Разумная повторная передача:
Повторная передача — это метод, о котором может подумать каждый.Модуль ZigBee обеспечивает обнаружение сбоев CSMA и обнаружение сбоев ACK. Обычно при возникновении двух вышеуказанных ситуаций обычной практикой является повторная передача данных. Тем не менее, повторная передача также должна быть разумной. Например, если CSMA не работает, многие узлы могут передавать сигналы одновременно, например, когда устройство включено, оно передаст информацию, когда оно включено, на шлюз DTU. Электричество определенно будет иметь высокую частоту коллизий, и сбои CSMA очень распространены. Поэтому не выполняйте повторную передачу сразу после сбоя CSMA в это время. Вы можете случайным образом задержать от 100 миллисекунд до 1 секунды перед повторной передачей. Задержка 4~8 секунд.... В случае сбоя ACK, в соответствии с характером передаваемых данных в реальном времени, он может быть задержан на фиксированное время перед повторной передачей, обычно от 1 до 5 секунд, поскольку возможно, что последняя передача не удалась из-за того, что целевой узел был "вне штата", и следующая передача может быть автоматической.
② Правила расчета времени:
Применяя беспроводную передачу данных, необходимо подумать о том, как бороться с потерей пакетов, например, при обновлениях OTA и передаче файлов. Каждый кадр данных важен и находится в правильном порядке. Следовательно, в приложении беспроводной передачи этого типа каждый пакет данных кадра должен быть помечен порядковым номером. Как только отправитель обнаруживает потерю пакета, он может повторно передать кадр данных. Принимающая сторона может быть ошибочно оценена передающей стороной, поскольку ACK не отправляется отправляющей стороне. Если принимающая сторона получает на один кадр больше или на один кадр данных меньше, об этом можно судить по порядковому номеру каждого кадра.
③ Сдавайтесь, когда вы должны сдаться:
Такие проблемы, как отсутствие принимающей стороны или помехи в канале, могут быть обнаружены на уровне MAC. Например, если ACK отказывает в течение длительного времени подряд, это может быть связано с тем, что принимающая сторона не существует; если CSMA отказывает в течение длительного времени подряд, это может быть вызвано помехами. В случае, когда принимающая сторона не существует, вполне возможно отказаться от отправки сообщений на эту принимающую сторону. При помехах в канале может быть выполнено общее переключение каналов или работа всей сети может быть приостановлена, текущее состояние может быть сохранено, а вся передача может быть возобновлена после исчезновения помех.
4. «Потеря пакетов», которая не считается потерей пакетов.
В беспроводной связи помимо потери пакетов, вызванной беспроводными сигналами, также существует потеря пакетов в программной логике. Как правило, объем передаваемых данных превышает возможности обработки отправителя или получателя. Например, скорость передачи ZigBee составляет всего 250 кбит/с, плюс задержка CSMA, маршрутизация и пересылка, фактическая скорость передачи данных может достигать 5–10 кбит/с, что очень хорошо. Если прикладная программа на передающей стороне записывает данные на передающую сторону быстрее, чем скорость передачи на передающей стороне, это также приведет к потере программных пакетов.
Обычно стек протоколов связи IEEE802.15.4 каждого производителя микросхем MCU предоставляет интерфейс обратного вызова с подтверждением отправки.После того, как прикладная программа записывает сообщение для передачи в интерфейс передачи, она получает обратный вызов с подтверждением отправки в течение от нескольких миллисекунд до десятков. миллисекунд триггер. В то же время, общий радиочастотный чип SoC также будет обеспечивать кэш для хранения записанных кадров данных.Возможно, прикладная программа одновременно записывает несколько кадров данных в радиочастотный чип, и все они кэшируются чип SOC, а затем медленно отправляются кадр за кадром, а затем один за другим запускается обратный вызов Send Confirm. Если прикладная программа записывает сообщение о передаче в RF SoC каждый раз при отправке сообщения и записывает следующее сообщение после срабатывания подтверждения отправки, проблемы потери программного пакета можно избежать.
То же самое относится и к принимающей стороне. Несколько отправляющих сторон отправляют сообщения на одну и ту же принимающую сторону. CSMA хорошо избегает конфликтов. Передающие стороны получают соответствующие ACK, но сообщения, отправленные отправляющей стороной, не получают правильных ответов на принимающей стороне. . Тогда может случиться так, что вычислительная мощность принимающей стороны ограничена, и все кумулятивные сообщения, отправленные каждой отправляющей стороной, накапливаются на принимающей стороне для обработки.В этом случае необходимо учитывать вопросы проектирования системы, чтобы уменьшить нагрузку на обработку. на принимающей стороне.