Como @Mishyoshi sugiere que necesitas tener una forma de obtener la longitud de la cadena a medida que la extiendes dinámicamente.
Puede hacerlo enviando un comando que haga que el último módulo responda, sin embargo, eso implica que cada módulo sabe cuándo hay un socio conectado conectado.
En el RS232 convencional, haría esto con CTS / RTS para que sepa que hay un cliente conectado al puerto de salida. Dado que esto implica cables adicionales, estoy seguro de que desearía evitarlo como una solución.
Como un protocolo simple sin ninguna prueba de conexión entre módulos, puede enviar un comando al que cada módulo responde con su número de ID, por lo que para un solo comando de comando, recibirá una respuesta de un carácter de cada módulo ... para 4 módulos al sur del maestro, obtendrías cuatro caracteres en secuencia de regreso al maestro.
Envíe el comando de forma regular y tendrá un esquema viable. Aquí tiene cada módulo identificado por separado (si tiene números de ID de módulo únicos, lo que es una buena idea de IMO) con el orden de caracteres que le indica su posición en la cadena.
La desventaja aquí es que cuando el comando de salida llega al final de la cadena del módulo, tiene que usar un valor de tiempo de espera para saber que se llegó al final de la cadena.
Si desea reducir la cantidad de respuestas de caracteres involucradas o no tiene números de ID para los módulos, una idea es usar un detector de corriente en la línea de alimentación Vin. Dibuje, diga un número fijo de mA (su MCU descendente puede ser suficiente) y suponga que si se extrae la corriente, hay un cliente conectado al sur. El último módulo ahora sabe si hay otro módulo conectado y, si no lo está, envía un carácter de respuesta. Así que el comando obtiene una respuesta de un solo carácter del comando de consulta.
Para obtener un conteo de cadenas, los módulos tendrían que incrementar el conteo para el carácter de retorno a medida que pasa a través de cada módulo en el camino de regreso al maestro. Cada módulo registra el valor de conteo como su propio número de posición en la cadena. Por lo tanto, los módulos tienen un valor de conteo desde el extremo sur que comienza en 1.
Mientras abordamos el tema de Vin, sugeriría que sería mejor utilizar una tensión de alimentación mucho mayor (por ejemplo, 48 V CC) para reducir la corriente que fluye por los cables. Tendrás una caída de voltaje para enfrentar tanto en Vin como en Gnd, de modo que al aumentar el voltaje se reduce este problema.
Si está utilizando RS232 Tx / RX, entonces su velocidad de transmisión debe reflejar la distancia entre los módulos, con 10 m No sugeriría más de 9600 baudios ... esto le da un espacio de caracteres de aproximadamente 1 ms y usted Necesito decidir si esto es lo suficientemente rápido para su aplicación.