Índice general Foros Digital, Electricidad e Informática Interface programable XpressNet

Interface programable XpressNet

Moderador: 241-2001



Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Hola a todos:

Necesito una interface programable para XpressNet que me permita interactuar con la central, para leer estados de decóders y modificarlos si es preciso. Hoy en día probablemente habrá que basarla en Arduino / C++, lo que es un alivio porque no me apaño nada bien en ensamblador.

Buscando en internet he encontrado estas dos posibilidades:

1. Librería XpressCommand de Nicolas Zin (Canadá) disponible en https://github.com/nzin/xpressnet_arduino. El chico ha subido un vídeo https://www.youtube.com/watch?v=JcD7iC3VbOw donde muestra que ha logrado interactuar con un Multimaus. Hay otro yutúber italiano que también lo ha conseguido gracias a las librerías del canadiense. Mirad aquí: http://ilplasticomodulare.blogspot.it/2013/06/ancora-arduino-e-xpressnet.html.

2. Librería XpressNet de gathow (creo que alemán) disponible en http://sourceforge.net/projects/pgahtow/files/Arduino%20%28v1.0%29%20libaries/. De este trabajo no he visto muestras.

Este hilo pretende ser una llamada para los que podáis aportar otras alternativas o vuestra experiencia con alguna de las anteriores. Gracias.
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 6372
Registrado: 19 Ago 2009 20:39

Si crees que te he servido de ayuda, puedes invitarme a un café alfredpuro (a) telefonica .net

l'Alfred, el Fantito.


Desconectado
Mensajes: 6372
Registrado: 19 Ago 2009 20:39

Si crees que te he servido de ayuda, puedes invitarme a un café alfredpuro (a) telefonica .net

l'Alfred, el Fantito.


Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Gracias Fantito. Me temo que sí, que conozco muy bien las aportaciones de Paco Cañada, al que admiro, y he estudiado a fondo el código ASM de su XbusTCO. Pero desgraciadamente está en lenguaje ensamblador...

XbusTCO_ASM.png
Código fuente de Paco Cañada (lenguaje ensamblador)
XbusTCO_ASM.png (32.23 KiB) Visto 22848 veces


...y para mi vergüenza debo repetir que...

...no me apaño nada bien en ensamblador.


Y en cuanto a sus soluciones basadas en el bus que denomina "RS" y que también me ofreces, se trata de productos comerciales de los que, me parece, no hay código fuente publicado. De manera que gracias, pero debo reiterar mi solicitud de ayuda sobre interfaces programables en C++ o algo medianamente elaborado (no ensamblador) que probablemente utilicen Arduino.

Y cuando digo "probablemente" lo hago consciente de que hay una tercera posibilidad, de un checo llamado Jindrich, que ha desarrollado un dispositivo denominado DCC Xbus FBO y que puede verse en http://www.fucik.name/masinky/Xbus_FBO/. Está basado en un controlador de Microchip, no en un Arduino. Pero no ofrece el código tampoco.
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 203
Registrado: 20 Ene 2014 20:04
Pues allá tú.

El Asembler (ensamblador en español), se aprende en la Universidad (a fondo). Y se medio aprende en cualquier curso de microcontroladores, microprocesadores, o electrónica. Luego, sólo tienes que aplicarlo a lo que te gusta (que, en nuestro caso, son los treness).

El C de ardúino es un pseudolenguaje. Por poner un ejemplo, la estrutura do......while, se hace con un simple bucle en ensamblador:

mov cx, xxx : siendo xxx el numero de veces del bucle
etiqueta:
;........
loop etiqueta ; siendo etiqueta el lugar donde entra la reiteración del bucle

Por poner otro ejemplo (más fácil de entender), la instrucción delay (), también se ejecuta con el mismo bucle.

Y para rematar la tarea, el ensamblador es muchísimo más rápido que el C de Arduino ya que cualquier instrucción de ensamblador, se ejecuta en ciclos de reloj (de 1 a 10 de media). Y un ciclo de reloj tarda nanosegundos (10 a la -9 segundos, en ejecutarse). Necesitándose, miles de millones de ciclos (nanosegundos) de ciclos de reloj, para cubrir un sólo segundo......

Saludos para todos.

P.D. Este código, por supuesto, es para el 80x86 en modo real. Realizarlo para arduino, requeriría conocer qué microcontrolador (o microprocesador) posee o usa.

Lo dicho, saludos para todos.
Última edición por astatron el 27 Ene 2015 13:25, editado 7 veces en total


Desconectado
Mensajes: 203
Registrado: 20 Ene 2014 20:04
BORRAR. REPETIDO.


Desconectado
Mensajes: 17
Registrado: 12 Feb 2012 11:44
Yo tambien estoy buscando algo parecido. He encontrado este link, aún lo estoy intentando digerir (está en francés).

Primera parte
http://www.locoduino.org/spip.php?article17

y la segunda parte
http://www.locoduino.org/spip.php?article18

Edito para indicar que está en francés.


Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
No es eso lo que yo busco. Esos artículos se refieren a cómo convertir un Arduino en una central DCC. Yo quiero leer la información que circula entre los dispositivos conectados al bus XpressNet, según el protocolo de comunicación de Lenz. No tiene que ver con generar la señal DCC, que es de lo que va ese tutorial en francés.

Anoche pude estudiar el archivo XpressNet_Trottle.ino de John Alexander Stewart, creado en C++ para Arduino Uno. Formaba parte de los ejemplos que acompañaban a la librería XpressNet de gathow que ya cité en el primer mensaje.(http://sourceforge.net/projects/pgahtow ... 0libaries/. Curiosamente hoy ya no forma parte de dichos ejemplos, de manera que no se puede descargar ya desde ese sitio, pero andará por ahí.

Afortunadamente conservo mi copia, que es la que pretendo adaptar a mis propósitos. Seguiré informando.

XpressNet_Trottle_ino.png
El código que me sirve de muestra
XpressNet_Trottle_ino.png (29.13 KiB) Visto 22756 veces
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 17
Registrado: 12 Feb 2012 11:44
Lo siento, lo que vi en dicha web fue un TCO xpressnet (http://www.locoduino.org/spip.php?article42) pero una vez revisada detenidamente, vi que se basaba en las librerias creadas por Nicolas Zin, a las cuales ya reseñas en tu primer post.

Un saludo.


Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
En efecto, el artículo que indicas ahora trata de los logros de Nicolas Zin y está escrito por él mismo. Seguro que es buen código, pero tiene el problema de necesitar un Arduino 2560 y ahora no tengo ninguno.

He estado viendo con todo detalle el código de Stewart, que compila bien para Arduino Uno (de ese sí tengo) y me descubro ante él. No solo está comentado con todo detalle, lo que facilita absolutamente la interpretación de su programa, sino que exhibe una técnica muy depurada, lo que denota a un experto. Me alegro porque contiene todo lo que necesito para mi proyecto, y aunque me exigirá bastante trabajo para adaptarlo, confío en que al final saldrá bien.

Primero voy a intentar cablear el prototipo que él también describe, y una vez cargado el programa, verificaré si funciona como debe. Entonces acometeré mi modificación.
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 497
Registrado: 25 Dic 2009 20:14

Bon dia ,gracias por vuestras aportaciones compañeros Norber ,Fantito y Kropt (por riguroso orden de intervencion en el hilo),lo vuestro es compartir informacion y aportar conocimientos ,todo unejemplo.
Josep Aleixandre Navarro ,en mi canal de You Tube podeis ver mis videos http://www.youtube.com/channel/UCYtyUd5EOJEHQZxAe-GHvfg

En mi flickr : http://www.flickr.com/photos/ali63ali63/sets/] mis fotos.


Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Bueno, pues ya está :D .
El código que encontré por casualidad de John Alexander Stewart ya está depurado y probado.
Gracias a un sencillo montaje en el que transformo los niveles de tensión del bus XpressNet a niveles TTL para Arduino (circuito integrado Max485), puedo introducir la señal del bus en el procesador y, mediante un potenciómetro y un sencillo puente de cable, mover adelante y atrás a la velocidad deseada mi locomotora nº13. Esto se hace "oyendo" y "hablando" en el bus con el lenguaje XpressNet.

Arduino_Throttle_Norber.jpeg
El montaje de prueba


Aquí dejo el código, que desde hace unos días resulta difícil de encontrar, pese a que se ofreció libremente desde 2010 para uso público, etc.

NOR_XpressNet_Throttle.zip
Código C++ para Arduino del XpressNet Throttle
(11.87 KiB) 828 veces


Está muy bien comentado, tanto por el Sr. Stewart como algo más por mí. A partir de aquí cada uno que progrese como quiera: el bus del Multimaus está a nuestro alcance para lograr lo que se nos antoje. La imaginación es el límite.

Ánimo y suerte!
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 3120
Ubicación: Salamanca
Registrado: 07 Nov 2008 10:51
Buenas noches! Eres insaciable norber, da vértigo la puerta que acabas de abrir. Me siento obligado a ponerme con el arduino con urgencia, lo veo muy útil para muchos de mis inventos y sobre todo para la afición. El próximo día en el local propondré un brindis por ti, conocimiento y persistencia aun doliendo la cabeza, esto va a ser muy grande! !! Saludos.


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola,

muchas gracias Norber. Aunque yo no utilizo sistemas comerciales y no tengo ni idea del manejo del bus XpressNet, voy a mirar el código que adjuntas. En estos foros siempre se aprende algo con estas aportaciones.

Saludos,

Germán


Conectado
Mensajes: 2185
Registrado: 21 Mar 2014 12:52
Gracias Norber.
Realmente lo encuentro estimulante.
Ahora toca bucear en el código :)

Un saludo.


Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Ya he logrado mover desvíos e indicar con leds su posición.
El código todavía no está para enseñar.
Cuando tenga algo sólido lo mostraré.
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 6372
Registrado: 19 Ago 2009 20:39

¿Te indica la última orden dada o la posición real del desvío?
Si crees que te he servido de ayuda, puedes invitarme a un café alfredpuro (a) telefonica .net

l'Alfred, el Fantito.


Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Lo primero.
Lo de posición real no sé qué significa para ti, pero para mis propósitos ambas cosas son lo mismo porque reinicio los controles al arrancar el programa de manera que siempre leo de la central la posición correcta del desvío. Al menos por ahora, que solo llevo un día haciéndolo :lol:
Si te refieres a poner interruptores accesorios de fin de carrera y eso, que luego me llenen todo de cables y me entorpezcan continuamente, pues no, no lo pienso hacer, ni ahora ni nunca. Si algo bueno tiene lo digital es que con dos cablecillos del Xbus controlo decenas y decenas de cosas de no importa dónde están. Y al principio parece magia, aunque luego es como todo, te acostumbras y buscas hacer más...
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 6372
Registrado: 19 Ago 2009 20:39

Es lo que te he intentado explicar, que la red Xpresnet no es bidireccional y solo lograras indicar la última orden emitida, no la posición real del desvío que, evidentemente, se tiene que hacer mediante interruptores.

Hay varias maneras de implementar esta bidireccionalidad: una de ellas es mediante RailCom como lo hacen los decóderes SwitchPilot de Esu, o por medio de la señal RS de Lenz (hay otras más minotiratias como la Loconet).

Usando la red Xpresnet, que es una simplificación de la red Ethernet, puedes crear con poco esfuerzo una red Ethernet (o con conectores RJ45) que pasamos de tener 2 pares a tener 4 pares de hilos y podemos usar uno de los pares para hacer llegar la señal RS y así tener una retrodeñalización completa. Además, podemos hacer llegar por la señal RS la ocupación de los distintos tramos de vía y poder programar una especie de enclavamiento.

No soy tecnico, y por lo tanto tampoco uso el lenguaje técnico, si no que mis conocimientos son el fruto de la experimentación.
Si crees que te he servido de ayuda, puedes invitarme a un café alfredpuro (a) telefonica .net

l'Alfred, el Fantito.


Desconectado
Mensajes: 2
Registrado: 20 Dic 2014 00:00
Hola a todos, es la primera vez que escribo en el foro y probablemente hacerlo así, sin una presentación formal no es lo más apropiado, solo decir que empece a interesarme en este mundillo hace un par de meses, tengo material y una MultiMaus pero aún no tengo construida mi primera maqueta :? pero bueno en ello estoy.

Sobre este tema, yo he migrado a C el código de XbusTCO de Paco Cañada con algunas modificaciones y lo tengo corriendo en un PIC18f26k80, pero quiero ir un poco más alla y ahora estoy integrando ese diseño con el cliente Z21 Android de Roco, ya he conseguido pasar los comando del cliente Z21 a la estación MultiMaus, pero aún necesita depuración, este es el esquema básico :

Z21 client (android) ----- Wifi-------- Mi diseño ( PIC+modulo WiFly) ---- XBus ----- MultiMaus.

Resumiendo emulo una estación Z21 ( a lo pobre :P ) Un pequeño video aqui: http://youtu.be/ZNyo55tNaMI

Seguire contando avances por si alguien está interesado.
Saludos.

Siguiente

Volver a Digital, Electricidad e Informática

Síguenos en Facebook Síguenos en Youtube Síguenos en Instagram Feed - Nuevos Temas
©2017   -   Información Legal