Dispositivo RS-485 Modbus a MCU

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

  • Creo que necesito MCU con un UART y luego necesito agregar un controlador RS-485 ( como este ) y estoy bien. Quiero decir que Modbus es solo un protocolo, por lo que en la etapa de diseño no debería preocuparme por eso.
  • ¿Debo considerar una MCU con 1 UART o necesito más? ¿La MCU con un UART signle es capaz de comunicarse con múltiples dispositivos? Quiero decir que un UART proporcionará solo líneas Rx y Tx, por lo que es fácil de conectar a un dispositivo. Pero, ¿cómo manejar más?
  • ¿Necesito manejar todas las cosas de Modbus manualmente? Se puede hacer fácilmente con 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 algunas MCU?

¡Gracias de antemano!

Le recomendamos que descargue las especificaciones de Modbus.org

Respuestas (2)

Sí, obviamente necesitas un UART. Tu conductor también se ve bien. Un UART es suficiente. No intente construir su proyecto si 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, comprenderá 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, este .

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

Para el descifrado de Firmware y Protocool, existen muchas bibliotecas. 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 lo correcto, ¡necesita conocer la terminología (qué buscar)!

Gracias por la info. Su primer enlace es una buena visión general. Tienes razón en que uno puede encontrar cualquier cosa si usa Google correctamente, pero eso no siempre es fácil de hacer. Dio una buena idea para buscar en las especificaciones / tutoriales de los proveedores. Hasta ahora solo he hecho comunicación simple punto a punto. Así que la comunicación multipunto es un poco oscura para mí.

Es posible que desee considerar el hardware en una etapa temprana si es MODBUS-RTU. El protocolo MODBUS-RTU tiene una condición de MARCA de 3-1/2 caracteres para indicar INICIO/FIN, que es posible que un UART común no admita.

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

Para MODBUS-RTU, una solución es conectar también la entrada RXD a una entrada de temporizador. De esa manera, puede detectar la condición de MARCA usando un temporizador.
@KubaOber Exactamente, por lo que debe considerarlo en una etapa temprana, dedique (muy probablemente) un pin adicional y algún hardware de temporizador interno.
Gracias. Este es un tipo de escollo del que no he sido consciente. Según tengo entendido, no hay forma de estimar rápidamente una determinada MCU si ese es el caso y solo se puede encontrar en una especificación profunda.
Sí, tendrá que estudiar las características de los periféricos de la CPU si necesita admitir ese tipo de Modbus.