RS232 Modbus a cableado USB

Tengo un dispositivo RS232 que envía datos siguiendo el protocolo modbus. Tengo problemas para comunicarme con él y creo que mi cableado está mal. Dado que la mayoría de los dispositivos modbus funcionan con RS485, es difícil encontrar información al respecto.

Este es el cable del sensor:cable sensor

Tengo un convertidor USB a RS232 y un cable RS232. Pelé un lado del cable RS232 y conecté los cables RXD, TXD y GND a los cables correspondientes del sensor. siguiendo este diagrama:

ingrese la descripción de la imagen aquí

El sensor está alimentado por una fuente de alimentación externa de 5v. No recibo ninguna comunicación con el sensor. Probé esto invirtiendo el RXD y el TXD y también en una raspberry pi con alimentación para el sensor proveniente de la pi.

También he intentado usar un convertidor RS485 a USB, obtengo datos de esta manera pero no tienen ningún sentido siguiendo el protocolo modbus, parecen aleatorios. He usado el módulo de python minimalmodbus y herramientas de prueba en serie. El sensor es un Calex PyroCube S, según la hoja de datos, utiliza una tasa de combate de 9600, paridad ninguna y 2 bits de parada. Creo que el número de esclavo es 1?

algo obvio, pero: ¿conectó TX en el sensor a RX en el USB a RS232 y RX en el sensor a TX en el cable? (Pregunto porque dices ...correspondiente... ). Modbus es un protocolo, puede funcionar sobre RS485 o RS232 o cualquier otro nivel eléctrico (el manual de su dispositivo dice que está en RS232, por lo que puede olvidarse de RS485). El manual del dispositivo se ve muy pobre, ni siquiera pude encontrar la identificación del esclavo, tal vez haya una configuración en el menú del dispositivo. Si alguien más ha usado el sensor antes, tenga en cuenta que la velocidad en baudios podría haber cambiado.
En la configuración de su software, debe deshabilitar el control de flujo
Consulte el mapa de registro de Modbus en el manual de su sensor para saber qué solicitar, aunque, si solicita un registro inexistente, al menos debería obtener una respuesta de error = un mensaje completo en respuesta, en lugar de silencio. . Puede intentar escanear las ID de los esclavos en una secuencia. El espacio de direcciones de las ID de esclavos es 0..254 si la memoria sirve.
En mi experiencia, la forma correcta de hacerlo es aplicar el enfoque de depuración general. Divide y conquistaras. Camine a lo largo de la cadena de señales y aplique una sonda/toque para ver hasta dónde puede ver alguna señal. O puede comenzar desde la "capa" más baja donde sea accesible. RS232 es bueno porque es relativamente lento. Debe verificar si está obteniendo algunos pulsos / bordes del pin TX de la PC (DB9 pin 3). Un osciloscopio sería la herramienta óptima, pero dudo que tengas uno. A 9600 bps, pruebe con un LED en serie con una resistencia de 1k. O un altavoz activo, coloque una resistencia de 100k en serie con la entrada de línea.
Si puede ver sus solicitudes, intente verificar las respuestas; la misma sonda, entiende la idea. En cuanto al lado del software, no conozco la API de Python para dispositivos en serie. Pero estoy un poco familiarizado con las API nativas subyacentes en Linux y Win32. Si está basado en Windows, intente usar RealTerm: configure el puerto COM e intente enviar algunas secuencias de bytes binarios, que incluyen solicitudes de Modbus (la única parte difícil es la suma de verificación). Si tiene algunas sondas en RS232 y no puede ver nada, primero verifique las sondas: deshabilite el control de flujo y comience a 2400 bps.
Por cierto, la prueba de bucle invertido más simple es acortando los pines 2 y 3 en el DB9. Asegúrese de poder distinguir el loopback físico de un posible eco local basado en SW en su terminal (debería estar desactivado de forma predeterminada). Esta prueba funciona bien en cualquier emulador de terminal: masilla, hiperterminal, minicom, lo que sea. Es la primera comprobación de cordura de su entorno.
¿Qué sensor es este? Una hoja de datos estaría bien.

Respuestas (1)

Si tiene RXD y TXD no es RS485. Me parece un RS-232 normal que tiene datos Modbus RTU.

ingrese la descripción de la imagen aquí

Pruebe y lea el registro de titular 0x0040 con QModMaster a una velocidad de transmisión de 9600 baudios.