Autor Tema: MODBUS RTU en Ubuntu  (Leído 1381 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
MODBUS RTU en Ubuntu
« en: 09 de Octubre de 2022, 14:03:42 »
Hola compañeros, a ver si podéis echarme una manita.

Tengo un conversor USB-RS485 para comunicarme por Modbus RTU con mi inversor de placas fotovoltaicas.
Lleva un año funcionando perfectamente conectado a una Raspberry Pi que iba extrayendo los datos y enviándolos a una BBDD desde la que alimento a mi dashboard. Todo perfecto.
Pero la Raspberry Pi es un poco "cortita" en prestaciones para lo que quiero hacer (automatizaciones domóticas con Home Assistant y más cositas).

Por ello, como tenía un portátil viejo abandonado, le he instalado un Ubuntu y le he conectado el adaptador USB.
Lo detecta y me sale como /dev/ttyUSB0

Pero no soy capaz de leer el inversor, siempre que lo intento me saca un error de Timeout:

Código: [Seleccionar]
mbpoll 1.4-12 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, https://github.com/epsilonrt/mbpoll
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type 'mbpoll -w' for details.

Protocol configuration: Modbus RTU
Slave configuration...: address = [1]
                        start reference = 32016, count = 2
Communication.........: /dev/ttyUSB0,       9600-8E1
                        t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table

-- Polling slave 1... Ctrl-C to stop)
Read output (holding) register failed: Connection timed out
-- Polling slave 1... Ctrl-C to stop)
Read output (holding) register failed: Connection timed out
-- Polling slave 1... Ctrl-C to stop)
Read output (holding) register failed: Connection timed out
-- Polling slave 1... Ctrl-C to stop)
Read output (holding) register failed: Connection timed out
-- Polling slave 1... Ctrl-C to stop)
Read output (holding) register failed: Connection timed out
^C--- /dev/ttyUSB0 poll statistics ---
5 frames transmitted, 0 received, 5 errors, 100.0% frame loss

¿Alguien con experiencia en Ubuntu?, ¿tengo que hacer algo más para habilitar el conversor USB-RS485?, ¿quizás algún driver?

Gracias

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re:MODBUS RTU en Ubuntu
« Respuesta #1 en: 09 de Octubre de 2022, 17:07:27 »
Hola Nocturno,
aqui he encontrado tambien alguien con el mismo problema y ahi se lo resolvieron,
echale un vistazo
https://github.com/stephane/libmodbus/issues/556
Suerte

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re:MODBUS RTU en Ubuntu
« Respuesta #2 en: 10 de Octubre de 2022, 02:29:24 »
Hola Rafael, ese problema no es el que yo tengo. Mi conversor USB-RS485 funciona perfectamente porque cuando lo conecto a la RPi lee todos los registros sin problemas.
Mi problema es al conectarlo al PC con Ubuntu, que detecta el dispositivo, pero no es capaz de leerlo.

Gracias de todas formas

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re:MODBUS RTU en Ubuntu
« Respuesta #3 en: 10 de Octubre de 2022, 03:14:42 »
Hola maestro intenta en el terminal :

sudo usermod -a -G dialout <user>
sudo usermod -a -G tty <user>

Reemplazar <user>con el nombre de usuario real en esos comandos.
Y después de esto, reiniciar
« Última modificación: 10 de Octubre de 2022, 03:26:13 por Sispic »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re:MODBUS RTU en Ubuntu
« Respuesta #4 en: 10 de Octubre de 2022, 08:07:36 »
¡Maestro!, ¿también controlando Linux?, no se te escapa nada.

Lamentablemente he hecho lo que me indicas y sigue saliéndome error de conexión  :(

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re:MODBUS RTU en Ubuntu
« Respuesta #5 en: 10 de Octubre de 2022, 08:09:11 »
Sólo añadir que cuando listo el dispositivo USB me sale con estos permisos, no sé si esto te indica algo:
Código: [Seleccionar]
crw-rw---- 1 root dialout 188, 0 oct 10 13:06 ttyUSB0

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:MODBUS RTU en Ubuntu
« Respuesta #6 en: 10 de Octubre de 2022, 08:22:23 »
Tanto el SO de la Raspberry como Ubuntu están basados en Debian.
Una solución (si no das antes con otra más sencilla) sería instalar Debian en el portatil. Suele ser más ligero que Ubuntu aunque no tiene tantos drivers privativos.

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re:MODBUS RTU en Ubuntu
« Respuesta #7 en: 10 de Octubre de 2022, 08:27:02 »
estos comandos te diran mas cosas
lsusb
lsusb -tv
lsblk
lsusb -v

tengo tambien anotado esto no se si puede ayudar
Para obtener un listado de puertos serie en Linux es necesario revisar el contenido del buffer de mensajes del kernel,
utilizando la herramienta grep en la salida de dmesg. grep
busca dentro del contenido de archivos y dmesg es una herramienta para leer los mensajes del kernel.

dmesg | grep tty
console [tty0] enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:05: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:06: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

me costo un rato tambien ami que funcionase

Permiso ATTR {idVendor} para dispositivos USB en linux
http://www.flipandroid.com/permiso-attr-idvendor-para-dispositivos-usb-en-linux-menta-para-utilizar-tabla-mobii-protab2-xxl.html


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re:MODBUS RTU en Ubuntu
« Respuesta #8 en: 10 de Octubre de 2022, 11:10:58 »
Pues no veo nada raro, parece que lo detecta correctamente:

Código: [Seleccionar]
dmesg | grep tty
[    0.000000] printk: console [tty0] enabled
[   24.551575] usb 5-1: cp210x converter now attached to ttyUSB0

Código: [Seleccionar]
/: 
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    ID 1d6b:0001 Linux Foundation 1.1 root hub
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
        ID 10c4:ea60 Silicon Labs CP210x UART Bridge

¿Ese resultado de dmesg que tú has pegado es con un conversor usb-serie?, porque en tu resultado veo unas IRQ que en el mío no salen

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re:MODBUS RTU en Ubuntu
« Respuesta #9 en: 10 de Octubre de 2022, 14:44:48 »
¿Ese resultado de dmesg que tú has pegado es con un conversor usb-serie?, porque en tu resultado veo unas IRQ que en el mío no salen

solo era a titulo de ejemplo .

Tengo un conversor USB-RS485 para comunicarme por Modbus RTU con mi inversor de placas fotovoltaicas.

tu software que usas se le puede configurar ?
ya que RS485 se supone que necesita conmutarse TX - RX.

No sera que algun bit de este puerto tenga que estar havilitado .


tu USB-RS485  tienes mas info

es para ir dando ideas  :shock:




Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re:MODBUS RTU en Ubuntu
« Respuesta #10 en: 11 de Octubre de 2022, 11:19:30 »
Pues investigaré en eso que dices. Me resulta raro ya que como indiqué en la RPi funciona a la primera, pero lo mismo hay alguna diferencia con el Ubuntu de PC.

Este es el conversor que estoy usando:
https://www.amazon.es/gp/product/B078X5H8H7/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re:MODBUS RTU en Ubuntu
« Respuesta #11 en: 11 de Octubre de 2022, 15:11:11 »
intenta y otia que me pelee con ello y haber si es el problema .

ejecuta tu sofware desde el terminal
sudo -i
entrar contraseña  si la hay
y veras root@<usuario>
cd / <la carpeta del ejecutable >
sudo ./<ejecutable >
« Última modificación: 11 de Octubre de 2022, 16:01:09 por Sispic »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re:MODBUS RTU en Ubuntu
« Respuesta #12 en: 12 de Octubre de 2022, 14:03:53 »
Pues parece que ya tengo comunicación Modbus desde el PC.

Finalmente en un acto de desesperación intenté atacar al bus con otra herramienta diferente a mbpoll, y he instalado minimalmodbus para Python.

Y con esta herramienta sí que leo los registros del bus.

Por tanto, confirmo que el Hardware funciona, que Ubuntu lo reconoce y que todo va bien.
Ahora me queda averiguar por qué mi NodeRed no lo lee, pero eso será en otro capítulo.

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re:MODBUS RTU en Ubuntu
« Respuesta #13 en: 16 de Octubre de 2022, 03:42:33 »
instala windows  :P

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re:MODBUS RTU en Ubuntu
« Respuesta #14 en: 16 de Octubre de 2022, 11:26:09 »
Jaja, no lo descartes


 

anything