Dispositivo Modbus RS-485 a MCU

3

Tengo un dispositivo (un medidor de energía) que envía datos a través de RS-485 (protocolo Modbus). Y quiero recogerlo con MCU. Lo importante es que estoy tratando de diseñar un tablero y quiero que sea escalable. Eso significa que podría tener 1 dispositivo conectado, o tal vez 2 o 3 dispositivos conectados (con diferentes ID de esclavo). Tengo las siguientes preguntas:

  • Creo que necesito MCU con un UART y luego necesito agregar el controlador RS-485 ( como este ) y estoy bien? Me refiero a que Modbus es solo un protocolo, así que en la etapa de diseño no debería preocuparme por eso.
  • ¿Debo considerar una MCU con 1 UART o necesito más? ¿MCU con un signle UART es capaz de comunicarse con múltiples dispositivos? Quiero decir que un UART solo proporcionará líneas Rx y Tx, por lo que es fácil de conectar a un dispositivo. ¿Pero cómo manejar más?
  • ¿Debo manejar todas las cosas de Modbus manualmente? Se puede hacer fácilmente con una PC, pero ¿cómo puedo hacerlo con mi MCU? ¿Tendré que definir códigos de función, disposición de datos y todo esto desde cero? ¿O hay bibliotecas disponibles para algunos MCU?

Gracias de antemano!

    
pregunta GAttuso

2 respuestas

2

Sí, obviamente necesitas un UART. Su conductor también se ve bien. Un UART es suficiente. No intente construir su proyecto cuando no esté familiarizado con términos como: Sistema de bus, RS485, Capa física, UART, RS232, semidúplex, topología maestro-esclavo, arbitraje de bus. Con eso entenderá qué es un sistema de bus y cómo funcionan varios dispositivos en una sola línea. Un buen punto de partida son las notas de aplicación de algunos proveedores y tutoriales de rs485, por ejemplo, éste .

Personalmente, usé el ST3485, que tiene una nota de aplicación que explica algunas cosas básicas here pero también puede encontrar la misma información de todos los demás proveedores.

Para su descifrado de Firmware y Protocool hay muchas bibliotecas por ahí. En primer lugar, debe saber si desea construir un dispositivo maestro o esclavo. Por todo lo anterior: Google es tu amigo. ¡Pero para que Google encuentre las cosas correctas, debe conocer la terminología (qué buscar)!

    
respondido por el jwsc
1

Es posible que desee considerar el hardware en una etapa temprana si se trata de MODBUS-RTU. El protocolo MODBUS-RTU tiene una condición MARK de 3-1 / 2 caracteres para indicar START / END, que un UART normal puede no admitir.

Con MODBUS ASCII no existe tal problema: el carácter de dos puntos y CR / LF se utilizan como delimitadores. Por supuesto, el inconveniente es que es mucho más lento.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas