• Hallo TT-Modellbahner, schön, dass du zu uns gefunden hast.
    Um alle Funktionen nutzen zu können, empfehlen wir dir, dich anzumelden. Denn vieles, was das Board zu bieten hat, ist ausschließlich angemeldeten Nutzern vorbehalten. Du benötigst nur eine gültige E-Mail-Adresse und schon kannst du dich registrieren.
    Deine Mailadresse wird für nichts Anderes verwendet als zur Kommunikation zwischen uns.
    Die Crew des TT-Boardes

Digital Programmierung eines Fahrpults auf dem PC für Z21

HesseR001

Foriker
Beiträge
372
Reaktionen
67
Ort
Halle(Saale)
Hallo,
ich habe ein Fahrpult auf dem PC unter powershell programmiert.
Durch einen Schieberegler kann ich die Lok beschleunigen und anhalten.
Beim Anhalten kommt es zu dem Phänomen, wenn ich den Regler von 70 auf 0 stelle, dass die Lok abrubt anhält.
Verbaut sind ESU-Decoder. Das Phänomen tritt bei allen Loks auf.

Das Programm ist so aufgebaut, dass ich ein UDP-Paket, welches den X-Bus-Befehl enthält,an die Z21 sende.
Der Befehl dazu lautet LAN_X_SET_LOCO_DRIVE.
Das UDP hat folgendes Format: Lok 3 soll mit Fahrstufe 45 vorwärts fahren fahren


X-HeaderDB0 (Fahrstufen Wahl 128)DB1(HihByte Lokadresse)DB2 Lowbyte LokadresseDB3 Bit 7 Richtung Vorwärts Bit 0-6 FahrstufeXOR
0xE40x30x00x130xC60x22


Mit dem Schieberegler 127 Stufen löse ich beim regeln ein Ereignis aus, was die Zahl entsprechend in Bit 0-6 in DB3 abändert. und das UDP an die Z21 schickt.
Beim Beschleunigen läuft das Ganze recht gut.
Schiebe ich den Regler von Fahrstufe 70 (kann auch eine andere sein) auf 0 kommt es vor, dass die Lokt abrupt ohne Verzögerung entsprechend CV4 abbremst.

Weiß jemand, warum der Decoder so reagieren könnte ?
Mit der Veröffentlichung von Quellcodes bin ich etwas vorsichtig, da wenn jemand diesen ausprobiert, und wider Erwarten durch die Nutzung was kaputt geht, stehe ich vermutlich dann in der Verantwortung.
Für Tips wäre ich dankbar.
 
Zuletzt bearbeitet:
Du bist nicht in der Verantwortung, wenn Du das Evaluationsmuster ohne Gewährleistung der Funktion veröffentlichst
 
Ich kenne mich damit nicht aus, aber rein von der Programmierung sendest du nur einen Befehl - d.h. ein verzögertes Bremsen muss entweder die Zentrale oder der Decoder machen. Ich würde die Verzögerung selbst programmieren (Schleife mit Timer und die Fahrstufen schrittweise bis zur Zielstufe senden), um unabhängig von externen Komponenten zu sein.

Gruss, iwii
 
Hallo Hesse (ulkiger Name),
DB0 muss 0x13 sein, wenn du 128 Fahrstufen wählst, und DB3 müsste 0x80 für vorwärts, Fahrstufe 0 sein, Nothalt entspricht 0x81, alles unter Lenz XBus 4.0, mal in die Doku schauen, das hilft dir sicher (Punkt 2.19.1)
Gruß Holger
 
@HesseR001 Wenn du die Spezifikation da hast und verlinken könntest, könnten wir nachlesen. Aber wenn dein Schieberegler jeden Zwischenzustand sendet, würde er auch 1 senden und dann hättest du den Nothalt, da du schneller schiebst, als die Bremskurve der Lok diese zum Stillstand bringt.

Nothalt entspricht 0x81
Ist allgemeiner Stopp für alle und nicht Lok Nothalt, oder?
 
alles unter Lenz XBus 4.0, mal in die Doku schauen, das hilft dir sicher (Punkt 2.19.1)
Gruß Holger
Das Xpressnet von Lenz ist nicht gleich dem von Roco. Zwar hatte lenz am Anfang für Roco etwas frei gegeben, die Neuerungen von Lenz sind dann aber nicht mehr voll umfänglich von Roco genutzt worden. Zumindest wurde das mal so kommuniziert. man könnte auch sagen, Roco nutzt eine abgespeckte Version des Xpressnet. Da waren wohl in der Vergangenheit auch wieder ein paar Lizenzkosten mit im Spiel, die halt von einer Seite nicht gewollt waren.
Kann also sein, das die Doku von Lenz hierr Aussagen macht, die bei Roco nicht unbedingt so vorhanden sind.
 
Naja, die Befehle zum Setzen der Lokfahrstufe werden schon noch gleich sein, da ohne sie ja praktisch nix fährt bzw. damals nix fuhr, oder?
 
Das mit dem powershell Debounce TimerDebounce werde ich testen.
Zur Sicherheit werde ich bei Rückgabe vom Schieberegler bei Fst-Byte =1 den Wert auf 0 ändern.
Damit schließe ich zu 100% aus, das der PC ein E-Brake auslöst.
 
Vielleicht läufst du über Speed 1, was Nothalt entspricht?
Der Tip war Gold wert.
Einfach ein Debounce Timer einbauen und es sollte passen.
Dein Rat hat dafür gesorgt, dass der Schieberegler nicht mehr beim Betätigen flattert.
In der Anlage habe ich die Powerscript-Datei abgelegt.
Die Benutzung des Scriptes geschieht auf eigene Gefahr. Für Schäden, die durch das Script auftreten übernehme ich keine Haftung.

Das Script ist nur in Verbindung mit einer z21 mit Netzwerkanbindung(W-LAN) möglich
Das Script habe ich mit der schwarzen Z21 laufen lassen
Es ist sicherzustellen, dass die Z21 die aktuellste Firmware hat.

Beim Benutzen der Weichenschaltfunktion achtet darauf, dass der Weichendecoder nicht dauerhaft eingeschaltet bleibt.
Sollte der Ausgang dauerhat eingeschaltet bleiben, sofort Z21 ausschalten.

Die Software läüft nur für kurze Lokadressen bis 127.

Die GUI(Grafikoberfläche) ist keine Eigenkreation. Sie ist durch eine KI entstanden. Das Gleiche gilt für die Socket.

Datei im Editor öffen
Alles Markieren und in Zwischenablage kopieren <STR+C>
Neue Textdatei erstellen und dort Inhalt aus Zwischenablage einfügen <STRG+V>
Datei speichern mit der Endung ps1.
Mit rechter Maustaste auf Datei klicken und im Kontextmenü "Mit Powershell ausführen" auswählen.
 

Anhänge

  • z21_lok_weiche.txt
    22,3 KB · Aufrufe: 25
Zuletzt bearbeitet:
Noch zur Ergänzung.
Solltet Ihr die selbe Lok mit der Multimaus etc. steuern und die Software läuft parallel werden alle Änderungen, die mit der Multimaus etc. ausgeführt in dem Script angezeigt.
Das war die größte erausforderung.
 
@Zilli,
Lenz hat das Xpressnet schon lange offen gelegt. Kann mir nicht vorstellen, dass die dafür Lizenzkosten verlangen. Mir ist nichts bekannt. Im Gegensatz zu Loconet. Aber die Fahrstufen sind immer gleich. Roco hat da eher sein eigenes Süppchen gekocht. Warum auch immer? Alleinstellungsmerkmal? :gruebel:
Hesse: Gute Arbeit!
Gruß Holger
 
stimmt das geht auch - werden das die ersten Schritte zu einem vollständigem Modellbahnsteuerungsprogramm ?
 

Anhänge

  • Screenshot 2026-06-25 101017.jpg
    Screenshot 2026-06-25 101017.jpg
    47,9 KB · Aufrufe: 34
Nur mal so aus Interesse, warum machst du dir den Spaß? Als Fingerübung? Glaube es hätte einiges an fertigen Paketen gegeben, die du nur hättest zusammen stricken müssen.
 
Ich sage mal so
Nur mal so aus Interesse, warum machst du dir den Spaß?
Natürlich gibt es Fahrerpults, auch im Maintenance Tool.
Als Hobbyprogrammiere wollte ich mal sowas selber schreiben.
Der Sinn für mich, ist man kann sehr viel lernen.
erden das die ersten Schritte zu einem vollständigem Modellbahnsteuerungsprogramm
Ich überlege perspektivisch eine Android App zu schreiben.
Habe zwar noch nie eine App geschrieben aber die Motivation ist da.
 
Laut Claude gab es noch etwas Optimierungsbedarf. Sollte noch 1:1 so funktionieren wie vorher.
Einfach die Dateierweiterung in ps1 umbenennen.
 

Anhänge

  • z21_lok_weiche_v2.txt
    14,2 KB · Aufrufe: 12
Zurück
Oben