¿Qué es el retardo de respuesta y el turnaround en Modbus serial?
En Modbus RTU, el maestro no puede simplemente enviar una solicitud y leer la respuesta en el instante que quiera, porque el protocolo exige huecos de silencio entre tramas y el hardware necesita un momento para cambiar la línea de transmitir a recibir. Con estos pequeños tiempos mal ajustados en un radio lento o un enlace RS-485, los mensajes chocan o se pierden, aunque nada esté realmente descompuesto. Esta página explica la temporización a nivel de trama de Modbus RTU: el intervalo de silencio de 3.5 caracteres que separa las tramas, el turnaround del transceptor en una línea compartida y cómo ajustar la espera entre solicitud y respuesta. Es distinto del timeout total de la solicitud, que se trata de rendirse por completo.
Retardo de respuesta en Modbus serial en una línea: El retardo de respuesta y el tiempo de turnaround en Modbus serial son la temporización a nivel de trama que gobierna los pequeños huecos alrededor de un intercambio Modbus RTU. RTU exige un intervalo de silencio de al menos 3.5 tiempos de carácter entre el fin de una trama y el inicio de la siguiente para que los dispositivos distingan las tramas, y un enlace RS-485 semidúplex necesita tiempo de turnaround para que el transmisor libere la línea antes de poder recibir la respuesta. Ajustar estos retardos, y no solo el timeout general, es lo que mantiene confiables los radios lentos y los buses multipunto.
El intervalo de silencio de 3.5 caracteres
Modbus RTU no tiene marcador de inicio o fin dentro de sus tramas como otros protocolos; en su lugar marca la frontera entre un mensaje y el siguiente con silencio. La regla es que un hueco de al menos tres caracteres y medio de quietud en la línea señala el fin de una trama, y cualquier actividad nueva después de ese silencio se trata como el inicio de una trama nueva. Un tiempo de carácter es simplemente lo que tarda enviar un carácter a la velocidad en baudios vigente, así que el intervalo de silencio requerido escala con los baudios: los enlaces rápidos tienen tiempos de carácter más cortos y por lo tanto huecos requeridos más cortos, y los lentos necesitan huecos más largos.
Este intervalo de silencio, a menudo llamado hueco entre tramas, es lo que permite a un receptor saber dónde termina un mensaje y empieza el siguiente en un flujo que de otro modo sería una corrida ininterrumpida de bytes. Dentro de una misma trama, los bytes deben llegar juntos, y un hueco de más de aproximadamente un carácter y medio dentro de una trama se trata en sí como un error, así que la temporización de RTU es bastante estricta tanto en mantener juntos los bytes de una trama como en separar una trama de la siguiente con suficiente silencio. Los dispositivos dependen de estos tiempos para entramar los mensajes correctamente.
Cuando el intervalo de silencio no se respeta, el entramado se rompe. Si un maestro dispara una solicitud nueva demasiado pronto tras la respuesta anterior, antes de que transcurra la quietud requerida, un esclavo puede juntar las dos o malinterpretar dónde empieza la trama, produciendo corrupción o un mensaje perdido en lugar de un intercambio limpio. Es una falla distinta de un timeout total: el dispositivo está presente y es rápido, pero el maestro amontonó las tramas. Respetar al menos el silencio de 3.5 caracteres entre transacciones, especialmente a velocidades bajas donde ese hueco es más largo en tiempo real, es la primera pieza de una temporización RTU correcta.
El cambio de sentido en una línea compartida
La segunda preocupación de temporización es el turnaround en un enlace semidúplex. El RS-485 de dos hilos usa un solo par compartido por todos los dispositivos, así que solo un dispositivo puede excitar la línea a la vez, y cada dispositivo debe conmutar su transceptor de modo transmisión a modo recepción, o al revés, alrededor de cada intercambio. Ese cambio no es instantáneo. Después de que el maestro termina de transmitir una solicitud, su driver tiene que deshabilitar su transmisor y habilitar su receptor antes de poder oír la respuesta, y el esclavo tiene que habilitar su transmisor antes de empezar a contestar. Ese cambio de transmitir a recibir es el tiempo de turnaround.
Si el turnaround se maneja mal, la respuesta puede perderse o recortarse. Si el maestro sigue sosteniendo efectivamente la línea, o aún no está escuchando, cuando el esclavo empieza a contestar, el inicio de la respuesta puede perderse o los dos pueden contender por el par compartido. Algunos equipos y drivers necesitan un pequeño retardo deliberado después de transmitir antes de empezar a recibir, y otros necesitan un retardo antes de soltar la línea, precisamente para dar tiempo a los transceptores de cambiar de sentido limpiamente. En un bus con convertidores lentos o baratos, un retardo de turnaround insuficiente se manifiesta como respuestas perdidas intermitentes que mejoran al agregar un retardo pequeño.
Los radios y módems estiran esto aún más, porque el enlace en sí agrega latencia y sus propios retardos de manipulación. Un radio licenciado o un salto serial a celular puede necesitar tiempo para activar su transmisor, llevar la solicitud y desactivarse antes de que la respuesta viaje de regreso, todo encima del cambio de sentido RS-485 en cada extremo. La consecuencia práctica es que la espera que el maestro debe permitir entre terminar su solicitud y esperar la llegada de la respuesta es mucho más larga por radio que por cable directo, y los retardos de turnaround deben fijarse con suficiente generosidad para cubrir la conmutación del radio además del cambio del transceptor, o el inicio de las respuestas se pierde.
Ajustar el retardo frente al timeout total en el SCADA
Es importante separar estos retardos de temporización de trama del timeout total de la solicitud, porque resuelven problemas diferentes. El timeout total de respuesta es cuánto espera el maestro antes de decidir que un dispositivo no responde en absoluto y rendirse, y lo cubre el tema general del timeout de Modbus. Los retardos aquí discutidos son más pequeños y estructurales: el intervalo de silencio entre tramas y el turnaround antes de poder recibir la respuesta. Un enlace puede tener un timeout total perfectamente generoso y aun así fallar porque los huecos de trama son demasiado cortos o el retardo de turnaround es demasiado pequeño, así que ajustar uno no sustituye ajustar el otro.
Ajustar estos retardos significa igualarlos al enlace físico. En un bus RS-485 rápido y directo, los tiempos integrados suelen ser adecuados y hace falta poco ajuste. En un enlace de baudios bajos el tiempo de carácter es largo, así que el intervalo de silencio requerido es más largo en tiempo real y el maestro debe espaciar sus transacciones en consecuencia. En una ruta por radio o celular, agregue retardo de turnaround y entre tramas con generosidad para cubrir la conmutación y la latencia, y reduzca la agresividad del sondeo, porque amontonar solicitudes consecutivas rápidas en un enlace lento es exactamente lo que rompe el entramado. Muchos drivers exponen ajustes como retardo entre sondeos, retardo entre tramas o retardo de turnaround de transmisión a recepción precisamente para adaptarse a un bus lento.
Para el SCADA y el monitoreo remoto, este ajuste a nivel de trama es lo que vuelve confiable un enlace serial marginal en lugar de errático. Una plataforma SCADA en la nube como Merobix que alcanza una RTU remota por un enlace serial de radio o celular depende de que estos retardos estén ajustados a la ruta, porque una configuración copiada de un bus rápido de banco amontonará las tramas y perderá respuestas en cuanto corra sobre un enlace real lento. Ajustar bien el intervalo de silencio y el turnaround, distinto de y además de un timeout total sensato, es lo que convierte un sitio serial que se comunica intermitentemente en uno que sondea limpio, que es la diferencia entre datos confiables y un sitio que marca mala calidad sin razón visible.
Preguntas frecuentes
¿Qué es el intervalo de silencio de 3.5 caracteres en Modbus RTU?
Modbus RTU marca la frontera entre mensajes con silencio en lugar de un marcador de inicio o fin, y la regla es que un hueco de quietud de al menos tres caracteres y medio señala el fin de una trama. Un tiempo de carácter es lo que tarda enviar un carácter a la velocidad en baudios vigente, así que el hueco requerido es más largo a baudios bajos. Disparar una solicitud nueva antes de que transcurra ese silencio puede hacer que un esclavo junte dos tramas y corrompa el intercambio.
¿En qué difiere el retardo de respuesta de un timeout de Modbus?
El retardo de respuesta y el turnaround son los pequeños tiempos a nivel de trama alrededor de un intercambio: el silencio entre tramas y el cambio de sentido para conmutar una línea semidúplex de transmitir a recibir. El timeout total es la ventana separada y más grande que el maestro espera antes de declarar que un dispositivo no responde en absoluto. Un enlace puede tener un timeout generoso y aun así fallar porque los huecos de trama o el turnaround son demasiado cortos, así que los dos se ajustan por separado.
¿Por qué necesito retardo de turnaround en enlaces RS-485 y de radio?
El RS-485 de dos hilos comparte un solo par, así que cada dispositivo debe conmutar su transceptor de transmitir a recibir alrededor de cada intercambio, y ese cambio no es instantáneo. Si el maestro aún no está escuchando cuando el esclavo empieza a contestar, el inicio de la respuesta puede perderse. Los radios agregan encima retardos de conmutación y latencia, así que los retardos de turnaround y entre tramas deben fijarse con suficiente holgura para cubrir tanto el cambio del transceptor como la conmutación del radio, o las respuestas llegan recortadas.
Servicios de automatización
¿Necesita convertir esta información en un sistema que funcione?
Merobix integra SCADA, programa PLC Allen-Bradley y Siemens, y diseña y fabrica tableros de control industrial.
Las solicitudes de reunión se revisan antes de confirmarse.