Conexión de dispositivos RS-485 de forma transparente

Tengo una computadora principal que tiene una placa RS-485. Se comunica con sus subsistemas a través de esta placa de comunicación.
También tengo una computadora de prueba conectada a la placa principal a través del canal RS-485. Se utilizará para probar y actualizar los subsistemas utilizando estos canales RS-485.

Quiero que la computadora principal se comporte de manera transparente para probar la computadora para que la computadora principal no sepa sobre el algoritmo de prueba. No quiero actualizar la computadora principal cuando cambien los algoritmos de prueba.
Si hubiera diseñado mi hardware, usaría un FPGA para conectar físicamente la computadora de prueba a los subsistemas para que la computadora de prueba conectara los subsistemas directamente y la computadora principal no supiera sobre las pruebas, pero uso una computadora estándar y una comunicación. tarjeta.

¿Qué haría para conectar la computadora de prueba y los subsistemas sin agregar algoritmos relacionados con la prueba a la computadora principal?

diagrama de bloques

RS-485 permite el cableado multipunto. En esa configuración, podría haber tan solo un único bus RS-485 común, donde cada nodo individual simplemente está tocando los cables, sin conmutación ni reproducción de ningún paquete.

Respuestas (1)

Bueno, hay muchas soluciones posibles... pero no ha proporcionado suficiente información sobre cómo se ve la comunicación entre la computadora de prueba y los subsistemas. ¿Depende completamente de usted qué implementar? Asumiré que lo es, pero la solución probablemente cambiaría si el protocolo sobre RS485 ya está definido o seleccionado.

La mayoría de los protocolos de comunicaciones en este tipo de nivel contendrán algún tipo de direccionamiento incorporado.

Si se siente cómodo enviando estructuras binarias, simplemente defina una estructura con la que comience cada mensaje que contenga:

  • La longitud en bytes de todo el mensaje.
  • La dirección del subsistema con el que intenta hablar
  • La dirección del subsistema desde el que está hablando (opcional)
  • El comando que está tratando de enviar al subsistema

Comenzaría cada mensaje con este encabezado, luego pasaría los datos necesarios y, finalmente, opcionalmente (pero es muy recomendable en los enlaces de estilo RS485) enviaría una suma de verificación o CRC del encabezado y los datos.

La computadora principal en ese punto no necesita hacer nada más que leer el encabezado del mensaje, ver la longitud y pasarlo al subsistema apropiado. Ni siquiera tiene que saber dónde están las direcciones... simplemente puede transmitir el mensaje a los tres subsistemas. A medida que los comandos cambian y los datos cambian, el formato del mensaje no cambia... por lo que la lógica de la computadora principal puede permanecer igual.

La respuesta del subsistema debe estar en el mismo formato.

Es útil poner la dirección del nodo FROM para que el subsistema sepa a quién responder. En algunas situaciones, eso nunca va a cambiar, por lo que puede codificarlo. Por lo general, prefiero poner la dirección del nodo FROM de todos modos, ya que nunca se sabe cómo podría cambiar la topología de la red más adelante.

En última cosa. Dado que llama a esto la "computadora principal", asumo que puede estar hablando de una PC real. Con las PC reales que ejecutan un sistema operativo moderno como Windows, OS/X o Linux, tendrá una latencia en la rapidez con la que puede responder la aplicación en esa computadora... así que cree tiempos de espera adecuadamente grandes en su protocolo. Muchos protocolos basados ​​en serie son un verdadero dolor de cabeza en las PC modernas debido a los tiempos de espera ajustados permitidos en las respuestas, etc. Probablemente no podría pasar MODBUS a través de una PC moderna de la manera que describe, por ejemplo... al menos no sin controladores de dispositivos seriales especiales o sin violar el tiempo (que a veces está bien para soluciones fijas) Para cuando la computadora principal leyó la respuesta de la computadora de prueba, la transmitió a los subsistemas, obtuvo las respuestas,

Es terriblemente difícil incluso implementar Modbus en una PC moderna de una manera que cumpla con todos los tiempos de espera. Pero Modbus es probablemente el mejor punto de partida como referencia para el tipo de cosas en las que pensar. Principalmente porque está probado en el campo, existe desde hace un tiempo y está muy bien documentado en numerosos niveles.