Tomando el protocolo de transmisión ZigBee como ejemplo, la capa PHY, la capa MAC y la capa NWK han realizado muchos mecanismos de procesamiento, y la tasa de pérdida de paquetes es de casi 0.1% ~ 0.01%. Sin embargo, si el diseño de la aplicación no tiene en cuenta el 0,1 %~0,01 % restante del problema de pérdida de paquetes, el impacto en la aplicación misma será fatal. La tolerancia a fallas por pérdida de paquetes en redes de comunicación inalámbrica, que es común en las aplicaciones de IoT, tiene las siguientes soluciones.
① Retransmisión razonable:
La retransmisión es un método en el que todos pueden pensar.El módulo ZigBee proporciona detección de fallas CSMA y detección de fallas ACK. Por lo general, cuando se encuentran las dos situaciones anteriores, la práctica común es retransmitir los datos. Sin embargo, la retransmisión también debe ser razonable. Por ejemplo, si CSMA falla, muchos nodos pueden estar transmitiendo señales al mismo tiempo; por ejemplo, cuando el dispositivo está encendido, informará la información cuando se encienda a la puerta de enlace DTU. Dispositivo La electricidad definitivamente tendrá una alta tasa de colisión, y las fallas de CSMA son muy comunes. Por lo tanto, no retransmita inmediatamente cuando CSMA falle en este momento. Puede retrasar aleatoriamente de 100 milisegundos a 1 segundo antes de retransmitir. Retraso de 4 a 8 segundos.... Si el ACK falla, de acuerdo con la naturaleza en tiempo real de los datos transmitidos, se puede retrasar por un tiempo fijo antes de retransmitir, generalmente entre 1 segundo y 5 segundos, porque es posible que la última transmisión falle porque el nodo de destino estaba "fuera del estado", y la próxima transmisión podría ser automática.
② Reglas de tiempo de diseño:
Al aplicar la transmisión inalámbrica de datos, es necesario considerar cómo lidiar con la pérdida de paquetes, como actualizaciones OTA y transferencias de archivos. Cada marco de datos es esencial y en el orden correcto. Por lo tanto, en este tipo de aplicación de transmisión inalámbrica, cada paquete de datos de trama debe marcarse con un número de secuencia. Una vez que el remitente detecta la pérdida de paquetes, puede retransmitir la trama de datos. El extremo receptor puede ser juzgado erróneamente por el extremo emisor porque el ACK no se envía al extremo emisor. Si el extremo receptor recibe un cuadro más o un cuadro menos de datos, se puede juzgar por el número de secuencia de cada cuadro.
③ Renunciar cuando deberías rendirte:
Problemas como la ausencia del extremo receptor o la interferencia del canal se pueden detectar a través de la capa MAC. Por ejemplo, si el ACK falla durante mucho tiempo seguido, puede ser que el extremo receptor no exista; si el CSMA falla durante mucho tiempo seguido, puede ser que haya interferencia. En el caso de que el extremo receptor no exista, es completamente posible renunciar a enviar mensajes a este extremo receptor. Cuando se interfiere en el canal, se puede realizar el cambio de canal general o se puede suspender el funcionamiento de toda la red, se puede guardar el estado actual y se puede reanudar toda la transmisión después de que desaparezca la interferencia.
4. "Pérdida de paquetes" que no cuenta como pérdida de paquetes
En la comunicación inalámbrica, además de la pérdida de paquetes provocada por las señales inalámbricas, también existe la pérdida de paquetes en la lógica del software. Por lo general, la cantidad de datos comunicados supera las capacidades de procesamiento del remitente o el receptor. Por ejemplo, la velocidad de transmisión de ZigBee es de solo 250 kbps, más el retraso, el enrutamiento y el reenvío de CSMA, la velocidad de transmisión de datos real puede alcanzar los 5 kbps ~ 10 kbps, lo cual es muy bueno. Si el programa de aplicación en el extremo de transmisión escribe datos en el extremo de transmisión más rápido que la velocidad de transmisión del extremo de transmisión, también provocará la pérdida de paquetes de software.
Por lo general, la pila de protocolos de comunicación IEEE802.15.4 de cada fabricante de chips MCU proporcionará una interfaz de devolución de llamada de confirmación de envío.Después de que el programa de aplicación escriba el mensaje que se transmitirá a la interfaz de transmisión, recibirá la devolución de llamada de confirmación de envío dentro de unos pocos milisegundos a decenas de milisegundos disparador. Al mismo tiempo, el SoC del chip de radiofrecuencia general también proporcionará un caché para almacenar los marcos de datos escritos. Es posible que el programa de aplicación escriba múltiples marcos de datos en el chip de radiofrecuencia a la vez, y todos ellos se almacenan en caché por el chip SOC, y luego se envía lentamente cuadro por cuadro, y luego la devolución de llamada de confirmación de envío se activa una tras otra. Si el programa de aplicación escribe un mensaje de transmisión al RF SoC cada vez que envía un mensaje y escribe el siguiente mensaje después de que se activa Enviar confirmación, el problema de la pérdida de paquetes de software puede evitarse.
Lo mismo es cierto para el extremo receptor. Múltiples extremos emisores envían mensajes al mismo extremo receptor. CSMA evita bien los conflictos. Los extremos emisores reciben sus respectivos ACK, pero los mensajes enviados por el extremo emisor no obtienen las respuestas correctas en el extremo receptor. . Entonces puede ser que la capacidad de procesamiento del extremo receptor sea limitada, y todos los mensajes acumulados enviados por cada extremo emisor se amontonen en el extremo receptor para su procesamiento. En este caso, se deben considerar cuestiones de diseño del sistema para reducir la presión de procesamiento. en el extremo receptor.