Para conectar el arduino uno con el medidor de energía

0

¿Cómo interactúo entre el medidor de energía que tiene el protocolo MODBUS RTU con la comunicación RS485 a Arduino Uno? Estoy utilizando MAX 485 para convertir RS485 a TTL. Y he hecho la codificación en la biblioteca ModbusMaster. Siempre obtengo un error de tiempo de espera o un error de identificación de esclavo. Por favor, ayúdame a salir de esta situación.

    
pregunta user104215

1 respuesta

2

Si el dispositivo con el que desea hablar presenta sus datos a través de Modbus a través de RS-485, tendrá que implementar RS-485 en hardware y un maestro Modbus en firmware.

Necesitará un chip de transceptor RS-485 entre las señales UART de su micro y el bus RS-485.

La parte difícil es saber cuándo configurar el transceptor de bus en modo de transmisión en lugar de en modo de recepción. La mayoría de los UART que vienen con micros no incluyen esto. Si lo hace, simplemente conecte la línea de dirección de datos a la línea de dirección del transceptor, posiblemente requiriendo una inversión en el medio. De lo contrario, tendrá que crear la señal de dirección en el firmware en su controlador UART.

Una forma sencilla de hacer esto en el firmware es tener una interrupción periódica que se ejecuta varias veces por byte de datos. Esto será útil para implementar el tiempo Modbus también. Cada vez que la aplicación escribe un byte en el controlador UART, la línea de dirección está configurada para enviarse antes de que se haga algo más. La interrupción periódica luego establece la línea de recepción si no hay bytes en espera en el software FIFO de escritura, en el hardware de UART, y el UART termina de marcar el último carácter.

Probablemente querrá usar esta misma interrupción periódica para cronometrar el espacio entre los bytes recibidos. De alguna manera, se comunica a la aplicación si el espacio antes de cada byte recibido fue lo suficientemente largo como para indicar el inicio de un nuevo paquete o no. La lógica Modbus restante se puede manejar por encima de la capa del controlador UART de bajo nivel.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas