TODOPIC
FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: Nocturno 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:
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
-
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
-
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
-
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
-
¡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 :(
-
Sólo añadir que cuando listo el dispositivo USB me sale con estos permisos, no sé si esto te indica algo:
crw-rw---- 1 root dialout 188, 0 oct 10 13:06 ttyUSB0
-
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.
-
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
-
Pues no veo nada raro, parece que lo detecta correctamente:
dmesg | grep tty
[ 0.000000] printk: console [tty0] enabled
[ 24.551575] usb 5-1: cp210x converter now attached to ttyUSB0
/:
/: 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
-
¿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 .
(https://misterelectronico.files.wordpress.com/2015/05/pines.png?w=322&h=277)
tu USB-RS485 tienes mas info
es para ir dando ideas :shock:
-
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
-
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 >
-
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.
-
instala windows :P
-
Jaja, no lo descartes