Automatisch rangieren eines Zuges (Rocnet + MQTT)

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby RedTrain » 23.06.2018, 17:10

eporocrail wrote:Die Wagen mit SMD Widerstände auf einen Achs werden richtig detektiert wenn die rollen. Wenn die still stehen wird der eine oder andere Wagen nicht gemeldet. Ich werde erst mal zwei Achsen einen Widerstand verpassen. Der Wert bleibt bei 15k.

Hallo Ellard

Ja, es gibt immer was zu verbessern :)
Beide Achsen ist sicher zuverlässiger, die Kontaktprobleme/Unterbrüche sind bei den leichten Wagen und nur einer Achse bei einem einzelnen Wagen vermutlich schon häufig 8)
Beste Grüsse kind regards, Carlo

[H0m 2L DCC] Layout "Rhaetian Flyer" Proto-Freelance Swiss meter gauge RhB+MGB+zB; 7% completed, stage 1 operational
W10-64, WLANmaus, Rocweb, andRoc; CANbus GC1e, GC3-ORD3, GC2, GC6; Bemo, Peco, handlaid;
RedTrain
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 24.06.2018, 15:14

Hallo Rocrailer

Jetzt haben alle Achsen einen Widerstand. Das gibt viel bessere Resultate.

Ich habe versucht das trennen der Wagen zu verbessern.
Es stellt sich heraus das der Form von die Kupplungen (vom Haken) gleich ist aber der Länge vom "Stiel" ist unterschiedlich gross und das ergibt ein Problem. Die Distanz zwischen den Wagen ist nicht immer gleich.
Wenn ich die letzte Kante von einen Wagen mit der IR Schranke detektiert habe, gibt es eine einstellbare Verzögerung eher der Entkuppler die Wagen trennt. Weil der Distanz nicht immer gleich ist liegt die Stelle wo der Entkuppler angreift nicht fest.
Ich habe versucht zu reagieren auf die Kante von den nächste Wagen. Aber durch die Verzögerung im System reagiert der Entkuppler dann zu spät.
Also habe ich solange gefummelt mit die einstellbare Verzögerung das das ganze gut funktioniert.

Wieder ein Problem beseitigt.

Viel Spass.
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 28.06.2018, 16:39

Hallo Rocrailer

Um den Ablauf vom Prozess richtig verfolgen zu können lass ich jeden Schritt darstellen in Rocview.
Mit nur einen Durchlauf gab es kein Problem.
Wo ich jetzt eine weitere Schleife um das Program hinzu füge, überschneiden sich die Meldungen.
Um die Meldungen zu puffern habe ich das ganze Mechanismus um MQTT Berichte zu verschicken überarbeitet.

Das war ein bisschen größeren Programmier Aufwand!

Ist heute eingebunden. Morgen muss ich das ganze richtig testen und dann erst geht es weiter.

Viel Spass.
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 04.07.2018, 10:28

Hallo Rocrailer

Zwischendurch habe ich gelernt wie mann das SX1509 Modul einsetzt.
Ich habe es in der Praxis umgesetzt mit ein Portal auf den FiddleYard.

Das Portal befindet sich über die Gleise. Oberhalb von jedem Gleis ist ein zweifarbiges LED eingebaut worden. Damit lassen sich drei Farben herstellen: Rot, Grün und Gelb.
Oben auf dem Portal gibt es zwei Par Orange farbigen LEDs die pro Par in ein eigenes Tempo blinken.

Folgendes ist vorgesehen:
Alle LEDs oberhalb die Gleise sind Rot.
Wenn der FY sich bewegt, blinken die Orange farbigen LEDs.
Während die Bewegung ist das LED vom Zielgleis Gelb.
Wenn der FY seine Position erreicht hat, wird das LED vom Zielgleis Grün.
Alsbald als der FY sich wieder bewegt, wird das LED vom vorherigen Zielgleis wieder Rot.

Hardware und Software sind fertig.
Das Portal wird in die noch nicht abgeschlossene Tests von den FY eingebunden.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 08.07.2018, 16:10

Hallo Rocrailer

Ich habe mal berichtet das während der Boot Vorgang vom FY Dekoder die Brücke bewegt wird. Ich habe jetzt den wirklichen Grund gefunden.
Ich habe die Angewohnheit die IO Ports der Reihe nach an zu schliessen. So ist Wemos IO D4 angeschlossen worden an Stift GCA145 J5-9.
Und gerade das ist falsch. D4 geht mahl auf LOW während der Boot Vorgang. Und wenn J5-9 auf LOW geht, bedeutet das eine Bestätigung von der gerade an J5 anliegende Position.
Also bewegt sich die Brücke zu dieser Position falls nicht schon da.

Ich habe J5-9 an D7 gelegt.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 28.07.2018, 16:03

Hallo Rocrailer

Obwohl es sehr warm ist beschaeftige ich mich ab und zu doch mit mein Software. Ich bin so weit das der Loc auf Knopfdruck drei Wagen wieder einsammelt. Ein merkwürdiges Geschehen habe ich noch nicht im Grif. Wenn der Loc gestartet ist zur Rampe wird ab und zu mahl ein "Stop Befehl" ausgelöst. Dann hilft nur das abschalten und wieder einschalten vom Fahrstrom. Warum das passiert ist mir unklar.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 04.08.2018, 15:26

Hallo Rocrailer

Ich habe sämtliche Kontakte noch mahl überprüft und da habe ich anscheinend ein Wackelkontakt behoben.

Blieb mir nur noch das ab und zu einen RFID Tag nicht richtig erkannt wurde. Dafür habe ich auch eine Lösung gefunden. Seit ich einen Bibliothek von Seeed Studio einsetze werden die Tags richtig erkannt. Der Bibliothek ist hier erhältlich https://github.com/Seeed-Studio/RFID_Library

Die RFID Tag Nummern werden nicht als einzelne Bytes aber als eine Summe ausgegeben. Funktioniert auch gut.

Aber das bedeutet das ich die Software Teile für das Eingeben von den Ziel Gleisen überarbeiten muss.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 09.08.2018, 08:32

Hallo Rocrailer

Ich habe das GUI fertig für die Eingabe von den Daten für das Ganze.

Die Bezeichnung von Wagen, RFID codes und den Winkel vom Servo können ueber eine Webseite eingegeben werden.

Ich setze nicht "websockets" ein aber "EmbAJAX". Vorteil ist das das GUI besser aus sieht aber viel wichtiger ist das die Daten Austausch zwischen Browser und Wemos Modul im Hintergrund statt findet. Das immer wieder erneuern vom Webseite nach jeden Eingabe entfällt völlig.

Ich habe es so weit fertig dass die Daten die übertragen werden auch auf dem seriellen Monitor aus gegeben werden.

Shunt1.jpg


Shunt2.jpg


Shunt3.jpg


Wenn ich dieses Projekt fertig habe, werde ich die Software für die Eltraco Decoder noch mahl ganz überarbeiten und es auf denn neuesten Stand bringen.

Viel Spass
Ellard
You do not have the required permissions to view the files attached to this post.
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 18.08.2018, 07:40

Hallo Rocrailer

Jetzt ist es so weit das ich die EmbAJAX Bibliothek ausreichend im Griff habe. Es war nicht sehr einfach. Die Bibliothek ist dokumentiert mit Doxygen, also reichlich wenn man ein erfahrene C++ OOP Programmierer ist. Und gerade das bin ich nicht. Also habe ich viel neue Erfahrungen gesammelt!
Es sieht folgender masen aus mit dieser EmbAJAX Bibliothek:
Die Handhabung von die einzelne Funktionselemente ist ausreichend beschrieben worden mit Beispiele. Die Elemente die ich benutze sind Radiogroup, TextInput, Slider und CheckButton. Es sind Element die eingesetzt werden um eine interaktive Webseite zu gestalten.
Was nicht beschrieben worden ist, ist die Gestaltung von den Wiedergabe von die Daten auf dem Bildschirm. Da habe ich viel Zeit gebraucht um heraus zu kriegen was wohl und was überhaupt nicht funktioniert. (also Herrn CSS und Kompane muss man selber entdecken).

Der nächste Schritt war das aufgreifen und verarbeiten von die Daten die zwischen Wemos Modul und Browser auf den Client ausgetauscht werden. Das ist ziemlich dürftig dokumentiert worden für eine Laie wie ich. Aber es funktioniert eigentlich ganz gut. Aber wie immer wenn man es weiss ist es einfach.

Eine etwas andere Geschichte ist es wenn man die Daten in EEPROM ablegen und beim hochfahren vom Modul aus den EEPROM lesen und benutzen möchte.
Es stellt sich heraus das alles gut funktioniert, und vor allem der Austausch von Daten im Hintergrund zwischen Server und Client für die meiste Funktionselemente. Wo eine Anomalie auftaucht ist mit die Einspeisung von gespeicherte Tekst Daten. Da werden die Daten nicht im Hintergrund aus getauscht. Man mus mit eine "page refresh" den Austausch auslösen. Das erkannt man weil der Link Status nicht "OK" aber "FAIL" anzeigt.
Das bedeutet das man eine Seite mit Text Daten benutzen kann aber wenn man fertig ist mit den Eingabe von Daten muss man einmal die Seite neu laden.
Das ist eigentlich der wichtigsten Punkt der verbessert werden müsste.

Ein zweiter Punkt den ich gefunden habe ist das man aus sein eigenes Programm zwar ein CheckButton auf "wahr" aber nicht auf "unwahr" stellen kann.
Also das Häkchen kann man setzen aber nicht entfernen von sein eigene Software heraus.

Beide Themen habe ich beim Hersteller von der Bibliothek angesprochen. Er hat mich bisher freundlich unterstützt und daher denke ich das diese beide Punkte wo möglich gelöst werden.

Der Einsatz vom "Slider" um die beide Winkel von einem Servo zu justieren ist einfacher in der Handhabung wie mit der "websockets" Bibliothek. Funktioniert einwandfrei.

Also im Fazit ein sehr gute Bibliothek für die Erstellung von eine interaktive Website auf Wemos.

Dem nächst integriere ich dieses Software Teil in mein Rangier Software.

Mit die Entwicklung von das Rangier Projekt habe ich dermaßen viel neue Sachen gelernt die zu gute Resultate führen das ich die Software für die Eltraco Dekoder ziemlich weitgehend erneuern werde.

Also das war es erstmal.
Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 19.08.2018, 07:20

Hallo Rocrailer

Das Problem mit den Daten Ausgleich im Hintergrund ist behoben worden!

Also für mich ist diese Bibliothek SUPER!

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 27.08.2018, 07:58

Hallo Rocrailer

Um das Testverfahren gut im Griff zu kriegen habe ich einen Ablaufdiagramm vom Prozess von alle drei Module gemacht. Dabei handelt es sich nur um den Struktur von die Steuerung innerhalb die Module und den Berichten Austausch zwischen die Module. Das sind zwei ziemlich einfache und ein mehr komplexes Diagramm geworden.
Damit wird es moeglich systematisch vor zu gehen und alle Fehler auf zu decken.

Beim RFID Decoder hat sich heraus gestellt das beim manuelles schnell bewegen von Wagen über den RFID Lesegerät der Decoder ganz blockiert. Auf den seriellen Monitor tut sich überhaupt nichts mehr. Um das zu beheben hilft nur ein Software reset vom Modul(ESP.reset()). Aber jetzt ist das Verhalten vom RFID Decoder stabil und zuverlässig.

Wieder was neues dazu gelernt.
Weiter geht es.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 28.08.2018, 07:23

Hallo Rocrailer

Als letzter ist der Decoupler Decoder an der Reihe. Damit ist folgendes los: der Zeitpunkt das der Loc anhält ist nicht dicht genug an den Zeitpunkt heran das der IR Lichtschranke die Lücke zwischen zwei Wagen detektiert. Dadurch geht der Stift vom Decoupler ein wenig zu spät in die Höhe und auch nicht immer gleich spät. Und das ist der Grund warum ein Wagen der entkuppelt wird, in der Höhe geht statt das der Kupplung bedient wird.

Also bin ich daran gegangen das Programm so schnell wie moeglich funktionieren zu lassen.

Bis jetzt habe ich mich nicht beschäftigt mit "Interrupt Routinen". Ich habe die Sensoren abgefragt mit "Polling".
Bei ESP8266 ist es moeglich jeder digitalen IO mit einem Interrupt Routine zu verknüpfen. Damit braucht man die IO nicht mehr ab zu fragen. Wenn einer IO an GND gelegt wird wird sein Interrupt Routine angesprochen. Sogar ein laufendes Prozess wird dafür untergebrochen.

Zudem habe ich die Prozessor Geschwindigkeit von 80 auf 160 erhöht und die Ausgabe von Meldungen am seriellen Monitor unterbunden.

Das hat insgesamt nicht zu einer wahrnehmbare Verbesserung geführt.

Also weiter.
Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 28.08.2018, 10:18

Hallo Rocrailer

Ich habe mir dieses Resultat noch mal durch den Kopf gehen lassen und bin zur folgende Schlussfolgerung gekommen:
Bei ein Prozess wo Daten Übertragung via MQTT eingebunden ist, ist die Verbesserung von Abläufe im ESP Modul Nebensache. Im Verhältnis dauert die Daten Übertragung via MQTT viel länger wie die sonstige im Modul.

Wo es sich hier handelt um ein Stop Befehl zu Rocrail ist eine Verkürzung der Dauer vom Prozess nicht möglich.

Damit habe ich eine Grenze von ELTRACO gefunden.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby rjversluis » 28.08.2018, 10:32

Hi Ellard,

ich denke das für Zeitkritische Anwendungen MQTT nicht geeignet ist.
Zwischen Server und Rocview spielt diese Zeitverzögerung keine Rolle.
Wenn es Zeitkritisch wird kommt man nicht um CAN oder RS485 usw. herum.
Mit MQTT, und WLAN gibt es zu viele zwischen Stationen welche alle ihre Zeit brauchen.
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBUS - CANGCx ] - [ G: CBUS - CANGCx ]
rjversluis
Site Admin
 

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 28.08.2018, 10:58

Hi Rob,

Das gestehe ich dir zu.

Aber immerhin denke ich das WLAN und MQTT sehr gut zu benutzen sind in dieser Art von Anwendung.
Obwohl Züge sich bewegen hat es mit "Echtzeit" wenig zu tun.

Also weiter geht es.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

PreviousNext

Return to Arduino (DE)