comunicación RxTx con múltiples esclavos usando una RaspberryPi

4

Soy un programador que intenta construir un circuito con conocimiento limitado de EE. Con tantas opciones (al menos es nuevo en esto), solo quiero asegurarme de que voy por el camino correcto.

Lo que estoy tratando de construir es un dispositivo maestro con una RaspberryPi y muchos esclavos plug and play (relés y sensores con cantidades muy pequeñas de transferencia de datos). Parece que usar modbus / rs485 / pic / 75176 (LTC485) sería la mejor solución.

  1. Dispositivo del consumidor, por lo que los costos de los componentes son importantes y un producto comercial no funcionará.
  2. Cuantos más dispositivos pueda conectar, mejor. (Según tengo entendido, Modbus puede hacer 250 dispositivos de manera predeterminada, pero puedo hacer un registro doble (16 bits) para obtener 65k, pero el ancho de banda probablemente lo cortará en al menos la mitad, lo que está bien)
  3. Los esclavos pueden repetirse muchas veces. Es decir 10 de los mismos sensores de temperatura. Comprendo que no necesariamente tengo que definir el ID de esclavo en modbus y puedo definirlo sobre la marcha. Corríjame si me equivoco, ya que no puedo pedirle a un consumidor que establezca la ID manualmente si hay más de 1.
  4. Necesito que el consumidor (verdadero usuario final no corporativo) simplemente conecte un dispositivo y haga que el sistema reconozca qué es y pueda identificarlo de forma única.
  5. El verdadero tiempo real no es necesario, un segundo retraso no es un gran problema.
  6. Todo será una llamada del maestro para obtener datos del esclavo. Nada originado de los esclavos.
  7. Planee usar un cable rj45 estándar con una distancia máxima de 100 m, ya que es para lo que están clasificados (estándar simple y barato).
  8. Por último, planeo tener una opción inalámbrica en el futuro, así que si algo de eso puede encajar bien, eso es una ventaja.

Encontré este ejemplo que parece ser lo que estoy buscando. Hacer mi código en c ++, pero debería ser fácil de convertir. enlace

Una vez más, tengo mucho que aprender, pero estoy cansado de seguir un montón de caminos equivocados, por lo que cualquier consejo sería genial.

Gracias de antemano.

    
pregunta VirtualLife

3 respuestas

3
  
  1. Dispositivo del consumidor, por lo que los costos de los componentes son importantes y un producto comercial no funcionará.
  2.   

Cuando no importa en la industria;)

  
  1. Cuantos más dispositivos pueda conectar, mejor. (Según tengo entendido, Modbus puede hacer 250 dispositivos de manera predeterminada, pero puedo hacer un registro doble (16 bits) para obtener 65k, pero el ancho de banda probablemente lo cortará en al menos la mitad, lo que está bien)
  2.   

Técnicamente, solo puedes darles a los esclavos la dirección 1-247, ya que 248-250 están reservados. Podría duplicar la dirección de registro, pero entonces no sería compatible con ningún otro dispositivo Modbus ya que ya no está utilizando el Protocolo Modbus.

  
  1. Los esclavos pueden repetirse muchas veces. Es decir 10 de los mismos sensores de temperatura. Comprendo que no necesariamente tengo que definir el ID de esclavo en modbus y puedo definirlo sobre la marcha. Corríjame si me equivoco, ya que no puedo pedirle a un consumidor que establezca la ID manualmente si hay más de 1.
  2.   

¿Qué quieres decir con "diseño sobre la marcha"? Si no va a permitir que su usuario final defina sus propias ID de esclavo, le recomiendo que inicie sus propias ID de esclavo a un número más alto, como 150+. Si su dispositivo está conectado a una red Modbus preexistente, es posible que se encuentre con el problema de esclavos preexistentes que ya utilizan direcciones que usted asignó. ¡YIKES! Tenga en cuenta que la mayoría de los usuarios finales comenzarán a asignar dispositivos a la dirección 1, ¡pero no siempre es así!

  
  1. Necesito que el consumidor (verdadero usuario final no corporativo) simplemente conecte un dispositivo y haga que el sistema reconozca qué es y pueda identificarlo de forma única.
  2.   

Muy fácil de hacer, pero como se indica en la viñeta 3, si su ID de esclavo codificada ya existe en su sistema, tendrá múltiples dispositivos que se comunicarán con el mismo maestro.

Todo lo que dijiste se parece a las especificaciones estándar de Modbus RTU, por lo que deberías estar bien allí. Recomendaría buscar los protocolos Modbus TCP para cuando use la transmisión inalámbrica. Aquí hay un enlace útil a un sitio web que analiza todos los Protocolos Modbus, así como un análisis en profundidad sobre cómo deben verse las respuestas y las respuestas de Modbus.

Simplemente Modbus

    
respondido por el R. Johnson
0

Puede configurar una PC como modbus master y comprar microprocesos baratos para sus clientes. Hay muchas marcas baratas y confiables que se pueden programar usando bloques de funciones. La unidad de 1-6 IO cuesta alrededor de USD90.00, pero hará lo que quiera de forma inmediata, sin necesidad de programación en C ++ ni electrónica de lujo. Solo conecta tus sensores. Busque un PLC que admita tanto TCP como RTU. Xlogic tiene un modelo de wifi que se adapta a lo que estás tratando de hacer.

La función Modbus 40 se utiliza para identificar dispositivos, pero tendrá que asignar manualmente cada ID de dispositivo.

    
respondido por el chambers
0

Echa un vistazo a 1-Wire . Existe una gama de sensores y chips de E / S digitales que se identifican de forma exclusiva. Un montón de software para ir con ellos, incluidas algunas técnicas de sondeo muy inteligentes para descubrir qué hay en la red.

El sistema puede funcionar con 2 cables (1-Wire se refiere a un cable de datos, sospecho), pero un sistema de tres cables que separa a +5 V, los datos y la GND son más confiables.

[Editar]

Echa un vistazo a Pautas para redes confiables de 1-Wire de línea larga . También aborda problemas con la topología en estrella, etc. Utilicé sensores de temperatura de 1 cable con un RPi e invirtí en un 1-Wire-Pi basada en el chip del controlador DS2482S-100. Esto cuidó toda la precisión de conducción y sincronización y hizo que la tarea fuera sencilla y confiable.

    
respondido por el Transistor

Lea otras preguntas en las etiquetas