JMRI Decoder Programmierung, Rückmelde und Weichendecoder, mit Arduino, mit LOCONETSV1MODE

  • Hallo zusammen,

    ich verzweifel gerade bei der Erstellung einer JMRI Decoder Datei für einen Rückmelde und Weichendecoder.

    Im Anhang befinden sich einige Dateien zu meinen Versuchen:

    1. Public_Domain_LocoNano_UNI.xml die Hauptdatei zum Decoder

    Dann die in der Hauptdatei referenzierten Dateien

    1. enum-NanoUNIFunctionMap.xml

    2. enum-NanoUNIFunctionKeyMode1.xml

    3. enum-NanoUNIFunctionKeyMode2-8.xml

    4. enum-NanoUNIFunctionKeyMode9-16.xml

    5. pane-NanoUNI_ReadMe.xml


    Und dann noch die Beschreibung der SV's: SV_nano_UNI.pdf


    Die XML Dateien habe ich zu "Decoder.zip" gepackt. Da die enum-* und pane-* nicht auf der JMRI Webseite liegen, müssen diese Dateien in das Vereichnis /xml im "Nutzerspezifische Dokumentablogeort" entpackt werden, damit sich die Dateien über "Lokpark" > "Ablage" > "Importiere Decoderdatei" laden lassen.


    Ich versuche gerade folgendes Problem zu lösen:

    Da ja Weichenadressen (1-2048) und Sonsor Adressen (1-4096) unterschiedlich Adressräume haben, wollte ich das 7 Bit der Konfiguration dazu verwenden, um die Anzeige und den erlaubten Adressbereich entsprechend den Voragaben schon bei der Eingabe zu begrenzen und an zu zeigen.

    Das Bit 7 im Konfigurations Byte ist nur gestzt, wenn der Decoder als den entsprechenden Anschluss als Ausgang verwendet.

    Ich bekomme es aber einfach nicht hin, dass in die entsprechende Datei "enum-NanoUNIFunctionMap.xml" zu implementieren, also so. dass einmal die Version für Weichen und im anderem Fall für Sensoren geladen wird.


    Ein zwei kurze Stücke aus den entsprechenden xml Dateien: In Datei "Public_Domain_LocoNano_UNI.xml" ab Zeile 173

    In Datei "enum-NanoUNIFunctionMap.xml" ab Zeile 147, auskommentiert diverse Versuch.


    Nachfolgend noch 2 Bilder, das erste von der Seite "Loco NANO", hier soll an der rot umrandeten Stelle der entsprechende Wert erscheinen und dann von der Seite "Test"

    Seite Loco Nano.pngSeite Test.png

  • Moin Georg,


    zuerst war ich verwirrt, aber ich glaube, jetzt habe ich verstanden: Jeder Port hat eine eigene Adresse (SV4/5, SV7/8 etc.) aber das ganze Gerät hat nochmal eine eigene Adresse, die damit nichts zu tun hat (SV1/2), richtig?


    Dann schau dir für SV4/5 einmal die "qualifiers" an, die hier: https://www.jmri.org/help/en/h…eateDecoderAdvanced.shtml beschrieben sind.


    Ich vermute, die Definition sollte ungefähr so gehen:



    Ich vermute, dann kannst du in der Anzeige einfach schreiben:

    Code
    <griditem gridx="1" gridy="11">
    <display item="SV4/5: Port 1 switch"/>
    <display item="SV4/5: Port 1 sensor"/>
    </griditem>


    ...und JMRI zeigt nur die gerade aktive Variable an ("SV4/5: Port 1" existiert ja gar nicht, du definierst ja nur "SV4/5: Port 1 switch" und/oder "SV4/5: Port 1 sensor", deswegen wird bei dir vermutlich bisher gar nichts angezeigt. Tipp dazu: System Console anschauen und auf Fehlermeldungen scannen)


    Wenn das nicht klappt, also immer beide oder gar nichts angezeigt werden: Dann musst du den qualifier erst bei der Anzeige machen. Das weiß ich gerade nicht genau.


    MfG, Heiko


    P.S: Und es kann gut sein, dass ich 0 und 1 bezüglich sensor und switch vertauscht habe... außerdem noch zur englischen Version: Ich lese "address switch" als "Adressenumschaltung", würde daher da eher (wie du das im Pane ja auch hast) "switch address" oder "output address" oder was auch immer der DCC/Loconet-Standard da verwendet, empfehlen.

  • Ergänzend: Ich kenne nicht das ganze Layout des Panels. Pack evtl. zu dem <display item> erstmal noch ein <label> dazu in das <griditem>, um zu schauen, ob das überhaupt an der richtigen Stelle auftaucht oder ob die gridx und gridy falsch sind.


    MfG, Heiko

  • Hallo Heiko,

    du liegts mit den Vermutungen bezüglich SV 1 & 2 richtig, da ist die Moduladresse konfiguriert. In SV 0 liegt die Version vom Arduino. In diesem Fall ist CV = SV.

    Ich habe es gestern noch gelöst, die Ausgabe im JMRI muss ich nochmal etwas anpassen, vor allen Dingen bei den Siganalen gefällt mir das noch nicht ganz.

    Die SV 3 enthält die Konfiguartion für den 1. von 16 Ports, SV 4/5 ergeben die Adresse.

    Code
    SV   Funktion                   Default    Erlaubter Bereich            
    0    Version                      1        read only
    1    Adresse low (LN-SV)         81        1-80 und 82-127               
    2    Adresse high (LN-SV)         1        1-126
    3    Konfiguration Byte Port 1    0
    4    Adresse low Port 1           0        1-127
    5    Adresse high Port 1          0        1-15 (Switch) 1-31 (Sensor)

    pasted-from-clipboard.pngpasted-from-clipboard.png


    So sieht es jetzt der Code aus (nur Port 1). Die CV / SV 58/59 sind für das Senden von Stellbefehlen mittles Opcode hxB0 <Adresse> zum direkten absetzen von Stellbefehlen.

    Erst in der Hauptdatei, dann in der zugehörigen *pane* Datei.

    Danke trotzdem und ein frohes neues Jahr, Georg

  • Nur nochmal als Rückmeldung zum obigem Thema.

    Mittlerweile funktioniert sowohl der Sketch als auch die Oberfläche für JMRI.

    pasted-from-clipboard.png

    Bild 1: Ein "wilder" Mix von Einstellungen zum Test.


    pasted-from-clipboard.png

    Bild 2: 8 Servos, alle mit Rückmeldung und Ausgang für Herzstückpolarisierung.


    pasted-from-clipboard.png


    Bild 3: die zusätzliche Seite für Searchlight Signale.



    IMG_20240209_101620535.jpg


    Ein Foto vom Testaufbau, ganz rechts eine Signalbrücke mit zwei Searchlight Signalen, oben am linken Rand 8 Servos. In der Bildmitte drei Platinen mit Arduino Nano's.


    Vielleicht hat ja jemand noch eine Idee, wie man die ja bei Funktionsdecodern nicht benötigten Seiten "Funktionsbezeichner" und "Lokparkmedien" ausblenden kann, ist aber eher ein Schönheitsfehler.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!