Anlage von egos

  • Nach einem weiteren Halbtag läuft das Programm im Arduino. Wird die Messzeit länger als 11 Sekunden, wird automatisch die Messstrecke um eine Lichtschranke verkürzt. Das Ganze kann zweimal geschehen, dann ist die kürzeste Strecke von 35 cm erreicht. Nachher muss die Fahrstufe um 1 reduziert werden, was die Messzeit weiter verlängert. Irgendwann ist die tiefste Fahrstufe (nein, nicht 0!) erreicht. Mit der nächsten Lok soll die Eichung wieder auf Stufe 31 starten, Arduino ist jetzt aber auf die Messstrecke 35 cm fixiert. Eine Mindest-Messzeit von 1,5 Sekunden für 35 cm wird von Arduino erkannt und die Messstrecke wird sofort wieder auf die gesamte Länge vergrössert.

    Das funktioniert jetzt alles.

    Nun muss die Java-Seite programmiert werden, damit die übermittelten Messwerte sinnvoll verwertet werden können.

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Oski, das scheint mir ein gutes Lösungs-Konzept zu sein. Du verzichtest auf Real-Time-Übermittlung der Lichtschranken-Unterbrechungen, machst jede Messung lokal (im Arduino, d.h. sehr genau) und übermittelst jeweils die genaue Geschwindigkeit nach erfolgter Messung. D.h. wie schnell oder wie langsam diese Übermittlung ist, spielt überhaupt keine Rolle. 👍


    Noch viel Erfolg beim Entwickeln der Java-Seite!

  • Danke Röbi, der Besuch bei dir hat mir sehr gut getan! Deine Nachlieferungen waren super. Gut haben wir wenigstens anständig zu Mittag gegessen. Das machen wir wieder so.

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • ….wieder eine schlechte Falle mache.

    … make a bad trap again.🤔

    Gruss Roger


    95 von 121 grünen Ae 6/6


    Die Katze schläft im Lärm; nur die Stille weckt sie, wenn die Mäuse rascheln.

  • Nach diesen Einlagen in Englisch, arbeite ich dort weiter, wo es etwas bringt...

    Die ersten Versuche bei Röbi mit der Resultatübermittlung als String sahen vielversprechend aus. Heute ging es zwar auch, aber der String enthielt Steuerzeichen, die im ASCII-Code als nicht darstellbar gelten. Das hat mich dann schon gewundert. Wenn ein Programm im Kanton Aargau läuft, muss es das doch auch im Kanton Zürich, oder nicht? Mehrmals habe ich die Messungen wiederholt. Immer wieder gab es falsche Zeichen. Und nichts kam in Java an. :thumbdown: Der Serial Monitor auf der Arduino IDE musste zuerst wieder abgeschaltet werden. Dann entstand irgendwann ein Lesefehler in Java auf dem Arduino-Port. Den habe ich auch nicht sofort gesehen, weil das MessagLog-File viel zu viele Daten enthielt. Nach etwa einer Stunde habe ich den ganzen Mist abgeschaltet und alles wieder neu gestartet. Jetzt kommen die Resultate bei mir wie im Kanton Aargau an. :love:

    Nun kann es weiter gehen...

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Heute hatte ich fast keine Zeit, noch etwas weiter zu programmieren. Es kam, wie es kommen musste. Die Vereinfachungen kürzten den Code um mindestens 30 Zeilen. Nachher lief nichts mehr! Dabei hatte ich nur Deklarationen mit dem Namen eines Panels gelöscht. Was ich übersah: die ganze Messwertgeschichte wird genau auf einem Panel dargestellt. Röbi braucht keines, das ermunterte mich, alle diese Zeilen auch zu inaktivieren. Während dem Nachtessen kam mir die Erleuchtung: Ich hätte nicht die ganzen Zeilen als Kommentar zu bezeichnen sollen, sondern nur den Namen so zu ändern, dass eben kein Panel mehr geladen wird. Soeben habe ich das kontrolliert. Es war genau so. Nun läuft es auch im Kanton Zürich. Morgen wird das so verbessert, dass wieder ein Bild hochgeladen werden kann.

    Ich freue mich auf morgen (Nachts kann ich leider nicht mehr arbeiten).

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Heute war wieder einmal ein verflucht strenger Tag! Röbi wird sich "einen Schranz" lachen. Guten Mutes habe ich weiter programmiert und stiess dann auf einen Vergleich der Messrichtung. Unglücklicherweise versuchte ich das mit dem Vergleich zweier String-Variablen. Das hat mich den ganzen Nachmittag und abends eine halbe Flasche Wein gekostet :thumbdown: . Leider ist in Java der Vergleich (==) nicht wirklich ein Vergleich der geschriebenen Worte sondern ein Vergleich der Speicherorte. Mehrere Stunden lang schrieb das Programm den Messwert immer in die falsche Kolonne. Alle Tests (If's) nützten nichts, die Antworten waren immer 'false', auch wenn für Anfänger wie ich eigentlich ein 'true' herauskommen sollte. Nachher versuchte ich es mit der Function equals(), aber das gab dermassen viele Anpassungen und damit neue Fehler, dass ich die Strategie änderte. Nun teilte ich der Messrichtung eine Integer-Zahl zu. Int vergleichen habe ich im Griff. Jetzt läuft es richtig:

    Es ist natürlich noch nicht fertig. Aber ich kann jede beliebige Fahrstufe einzeln ausmessen, löschen oder zufügen. Die nächste Herausforderung wird die Steuerung der Lok sein.

    Aber die Anlage mit 4 Lichtschranken funktioniert sehr zufriedenstellend.

    Die Zahl in der Tabelle stimmt sogar (gerundet) mit dem Messwert überein! :love:


    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Röbi wird sich "einen Schranz" lachen

    Oski, einen Schranz lachen tue ich natürlich nicht. Das wäre schmerzhaft, schädlich und auch taktlos. Aber wenn ich ehrlich sein will, hätte ich jetzt nicht erwartet, dass du darauf reinfällst. Eine String-Variable ist eine Instanz vom Typ String und Instanzen werden im Java mit Pointer (oder in der Java-Terminologie besser gesagt mit Referenzen) verwaltet. Mit == vergleichst du die Referenzen (also die Adressen) der beiden String-Instanzen. Nur Variablen der primitiven Datentypen darf man mit == vergleichen, aber String ist ein Klassen-Typ.

    Aber ich denke mit dieser Erfahrung, die dich heute einige Stunden gekostet hat, wird dir das kein weiteres Mal passieren.


    Jetzt läuft es richtig

    Das ist die Hauptsache ...


    Aber die Anlage mit 4 Lichtschranken funktioniert sehr zufriedenstellend

    ... und das ist sehr erfreulich.

  • Heute war wieder ein erfreulicher Tag!

    Ich war heute bei Kurt ( Uri-Stier ) zu einem Instruktionsnachmittag bezüglich ESU-Decoder-Programmierung. Es war sehr interessant. Nicht immer habe ich alles verstanden, aber ich habe nun den Dreh raus, um weiter zu üben. Richtig Dusel hatte ich eigentlich gestern, als mir in den Sinn kam, einmal einen Zugriff auf einen Decoder zu versuchen. Zuerst kam die Meldung "Kein Decoder erkannt". Da aber die Hag-Lok einen eindeutigen LokPilot 4 Bei-Zettel hatte, konnte das nur falsch sein. Also war Fehlersuche angesagt. Der dritte mögliche Fehler war "verschmutztes Gleis". Das war es dann auch.

    Nun führte mich Kurt behutsam in die Welt der Decoder ein. Eine der beiden Loks war schon so alt, dass der Decoder mit einer neuen Firmware ausgestattet werden musste. Dass so etwas ohne Internet geht, war mir auch nicht klar, aber es ging. Nun erwartete ich, dass irgend ein CV-Wert auf eine bestimmte Zahl eingestellt werden müsste, um die Höchstgeschwindigkeit auf etwa 100 km/h zu begrenzen. Weit gefehlt! Kurt konnte mit seinem Gefühl eine Schätzung für den massgebenden Wert abgeben. Auf seiner Anlage konnte über die vorhandene Eichstrecke mit dem Programm Win-Digipet die erreichte Geschwindigkeit ermittelt werden.

    Mit der gebogenen Geschwindigkeitskurve bin ich mir noch nicht im Klaren, weil diverse Ratgeber sagten, es müsse eine "lineare Kurve" sein. Sicher geht es auch so, es wird aber vielleicht weniger genau in der Positionsberechnung?

    Nun habe ich also die Kenntnisse, die für die Eichung notwendig sind. Auf meiner Anlage fehlt die Eichstrecke, auch wenn sie im Programm eingebaut ist. Das wäre nun meine nächste Aufgabe. Ich muss in den Keller.

    Ich berichte wieder...

    Vor allem danke ich aber Kurt, dass er einen ganzen Nachmittag für solche Anfängerprobleme geopfert hat! :)

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

    Einmal editiert, zuletzt von egos () aus folgendem Grund: Edith meint: ein doppeltes Wort gelöscht.

  • Heute kam ein Rückschlag!

    Die Programmier-Einrichtung habe ich (vermutlich) genau so aufgebaut, wie bei Kurt. Dort hatte die Sache funktioniert. Bei mir geht es nur noch zum Teil. Also den Decoder kann ich mit dem Programmer erkennen, das geht. Aber die einzelnen CV-Werte kann ich weder lesen noch schreiben. Das bei Kurt erzeugte Projekt kann ich einlesen. Aber fahren mit der Einstellung Führerstand geht nicht, Licht einschalten auch nicht.

    Was könnte falsch sein, wenn der Decoder erkannt wird aber nicht verändert werden kann?

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Salü Oski

    Ja das ist jetzt die spezielle Einstellung der Protokolle. Habe Dir eine Mail geschrieben. Versuchsmal es sollte dann gehen.

    En Gruess Kurt

  • Gestern war die GV des Moba Forums. Da konnte ich weitere Profis mit meinem kleinen Problem beackern. Dann glaubte ich, verstanden zu haben, woran es liegen könnte. (Denkste :D )

    Nachdem ich wieder einen ganzen Tag versuchte, irgend ein bisschen Leben in die veränderten beiden Loks zu bringen, holte ich eine originale neue Hag Lok aus dem Keller. Und siehe da. Nachdem Einlesen der Decoder-Daten liess sich die Lok auf dem Programmiergleis bewegen. Logischerweise hat sie die Adresse 3. Allerdings kann ich das Licht nicht im Stillstand zuschalten und die Fahrrichtung umschalten geht auch nicht. Da das Programmiergleis kurz ist, bleibt auch die Freude über die Fahrbewegung eher kurz. Nun werde ich mal schauen, welche Eigenschaften weggeklickt werden müssen, bis sie nicht mehr läuft. Aber morgen ist auch ein Tag, mir macht die Zeit Umstellung doch etwas zu schaffen.

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

    Einmal editiert, zuletzt von egos ()

  • Heute hat es laut gerasselt: einen ganzen Sack voll Zwanziger sind runtergefallen. Auslöser dieser Flut war ein Telefonat mit Kurt (Uri-Stier). Nun klappt die Sache. Es hat sehr viele Einstellungen an den modernen Decodern. Wer hätte denn gedacht, das der Lokprogrammer "nur" DCC lesen und schreiben kann, wenn es in der Lok einen V4/M4 Decoder hat und in den Eistellungen der Sonderfunktionen ausgerechnet DCC ausgeschaltet ist, weil die Lok ja mit Selectrix fahren soll? Aber spannend ist die Sache allemal! Es gibt immer wieder Wunder: Die Re 6/6 Aarberg zum Beispiel hatte kein Licht im Stillstand. Licht einschalten war wirkungslos. In der Fahrstufe 1 kam aber das Licht, in der Stufe 2 war es wieder weg. Immer die ungeraden Fahrstufen zeigten Licht, bei den geraden löschte es wieder. Der Fehler lag natürlich an den Einstellungen. Statt DCC-128 war DCC-28 angewählt. Nun ist auch das korrekt eingestellt.

    Der heisse Dank geht an Kurt für die wertvolle und professionelle Unterstützung :love:

    Mittlerweile habe ich es auch geschafft, eine lineare Kennlinie einzugeben, so dass im Java-Programm das Fahrverhalten berechenbar wird.

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Mittlerweile habe ich es auch geschafft, eine lineare Kennlinie einzugeben, so dass im Java-Programm das Fahrverhalten berechenbar wird

    Oski, mit einer linearen Kennlinie hast du in den oberen Geschwindigkeiten eine etwas bessere Auflösung, als mit einer gekrümmten. Aber es ist nicht so, dass es erst mit einer linearen Kennlinie berechenbar wird. Wir haben einige Loks mit einer krummen Kennlinie. Das funktioniert auch und wir merken in der Praxis eigentlich keinen Unterschied.

  • Danke Röbi,

    Du sagtest mir früher, es sei ein Vorteil, eine lineare Kennlinie einzustellen, darum habe ich das so probiert. Weisst du das: wenn ich die maximale Geschwindigkeit im Decoder drossle, wird dann die Kennlinie auf diese Geschwindigkeit umgerechnet?

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Du sagtest mir früher, es sei ein Vorteil, eine lineare Kennlinie einzustellen, darum habe ich das so probiert.

    Ja, dieser Meinung bin ich immer noch. Aber eben: Das heisst nicht, dass es mit einer krummen nicht gehen soll.



    Weisst du das: wenn ich die maximale Geschwindigkeit im Decoder drossle, wird dann die Kennlinie auf diese Geschwindigkeit umgerechnet?

    Wenn du die Höchstgeschwindigkeit mit CV53 (*) drosselst, bleibt die Kennlinie auf die neue Geschwindigkeit erhalten.


    (*) Die Geister scheiden und die Experten streiten sich, ob man die Höchstgeschwindigkeit mit CV5 oder mit CV53 einstellen soll. Ich gehöre zum CV53-Lager und habe immer gute Erfahrungen gemacht, die Höchstgeschwindigkeit mit CV53 einzustellen.

  • Hoi Röbi

    Danke für die Erklärung. Nun habe ich in der Anleitung des Lokprogrammers nachgeschaut: ESU empfiehlt CV5 zu ändern für die Höchstgeschwindigkeit. Das ist der oberste Wert bei der Drei-Punkte-Kennlinie, der normal auf 255 eingestellt ist. Auch die Geschwindigkeitskennlinie hat beim obersten Punkt CV94 = 255, aber hier kann der Wert nicht geändert werden. Bei CV53 ist angegeben, es sei der unterste von 4 Parametern (CV53 - CV56) für die Lastregelung.

    Bei meinen beiden Loks ist CV5 verändert. Ich lasse das mal so.

    Gruss Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!