Fixed: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Alle Fragen und Probleme zur Konfiguration und um den manuellen Betrieb
Post Reply
felix
Posts: 4
Joined: Thu Feb 02, 2023 2:50 pm

Fixed: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by felix »

Hallo zusammen,

aus Interesse habe ich versucht, RailControl und die alten Märklin Central Unit 6021 + Interface 6051 in Kombination mit k73-Decodern ist zum laufen zu bringen.
Dabei ist mir aufgefallen, dass die Magnetspulen der M-Gleisweichen nach einem Schaltvorgang nicht abschalten und daher Gefahr laufen durchzubrennen.

In der Dokumentation zum Interface 6051 ist dazu beschrieben, dass ca. 150 (min. 80 - 1000) Millisekunden nach einem Schaltvorgang ein zusätzliches Magnetabschaltsignal (32) gesendet werden muss.

Hierzu habe ich bereits ein Issue im Git Repo angelegt: https://github.com/teddych/railcontrol/issues/3
Als Rückmeldung habe ich erfahren, dass es bereits einen Ausschaltbefehl in der Methode Hardware::HardwareInterface::AccessoryOnOrOffStatic() gibt.

Zudem wurde ich gebeten die Diskussion hier fortzusetzen sowie einmal die Schaltdauer in der Konfiguration zu verlängern.
Eine verlängerte Schaltdauer hat jedoch keinen wirklichen Einfluss bei mir.

Das Logging zeigt unauffällig die Schaltvorgänge:

Code: Select all

2023-02-02 20:04:43.385713: Info: Webserver: HTTP connection 3: Request: GET /?cmd=switchstate&state=straight&switch=1
2023-02-02 20:04:43.385822: Info: Interface 5061: Setting accessory 16/green to on
2023-02-02 20:04:47.277358: Info: Interface 5061: Setting accessory 16/green to off
2023-02-02 20:04:55.159050: Info: Webserver: HTTP connection 3: Request: GET /?cmd=switchstate&state=turnout&switch=1
2023-02-02 20:04:55.159125: Info: Interface 5061: Setting accessory 16/red to on
2023-02-02 20:05:01.250221: Info: Interface 5061: Setting accessory 16/red to off
Beim Debugger der Methode Hardware::HardwareInterface::AccessoryOnOrOffStatic() ist mir folgendes aufgefallen:
  • die Variable DataModel::AccessoryPulseDuration duration null ist
  • ein Methodenaufruf hardware->AccessoryOnOrOff(protocol, address, state, false); vorhanden ist, dieser aber im weiteren Verlauf "nur" den Steuerbefehl 34 für rund/rot an die entsprechende Magnetartikeladresse sendet .
Meiner Meinung nach liegt auch hier das Problem, da entsprechend der Doku der Abschaltbefehl 32 zum Beenden des Schaltvorganges erwartet wird.

Was meint Ihr dazu ?

Gruß
Felix
Last edited by felix on Thu Feb 02, 2023 9:21 pm, edited 1 time in total.
User avatar
teddy
Site Admin
Posts: 428
Joined: Thu May 07, 2020 2:39 pm
Contact:

Re: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by teddy »

Hallo Felix

Danke für das Log!

Ich hatte für die Entwicklung eine geliehene 6051. Leider aber verständlich musste ich diese zurückgeben. Ich kann deshalb nicht überprüfen, was genau passiert.

Könntest du mal versuchen:
1. Das Logging in den Einstellungen auf Debug setzen. Damit sollten weitere Infos ins Log geschrieben werden.
2. Die Schaltzeit kann in den Einstellungen und auch pro Weiche separat eingestellt werden. Kannst du mal versuchen damit zu spielen?

Danke und Gruss
Teddy
felix
Posts: 4
Joined: Thu Feb 02, 2023 2:50 pm

Re: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by felix »

Hallo Teddy,

das Logging schaut im Debug Modus gleich aus:

Code: Select all

2023-02-02 21:24:12.744683: Info: Webserver: HTTP connection 4: Request: GET /?cmd=switchstate&state=turnout&switch=1
2023-02-02 21:24:12.744775: Info: Interface 5061: Setting accessory 16/red to on
2023-02-02 21:24:12.849774: Info: Interface 5061: Setting accessory 16/red to off
2023-02-02 21:24:13.865729: Info: Webserver: HTTP connection 4: Request: GET /?cmd=switchstate&state=straight&switch=1
2023-02-02 21:24:13.865879: Info: Interface 5061: Setting accessory 16/green to on
2023-02-02 21:24:13.966335: Info: Interface 5061: Setting accessory 16/green to off
Die Schaltzeit hat keinen Einfluss da nach meinem Verständnis der Abschaltbefehl falsch ist bzw. fehlt:
Debug Trace:
1. Einstieg in die genannte Methode
1-AccessoryOnOrOffStatic.png
2. Step in die M5061 entsprechende Implementierung
2-M6051AccessoryOnOrOff.png
3. Step in die SendTwoByte Methode wo final die gesendeten Bytes angezeigt werden
3-SendTwoBytes.png
Hier sieht man das ein Befehl 34 an die Weiche mit Adresse 16 gesendet wird anstatt einer 32.

Gerne zeige ich dir das entsprechende Verhalten auch in einem Zoom Call oder so. :)

Gruß
Felix
felix
Posts: 4
Joined: Thu Feb 02, 2023 2:50 pm

Re: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by felix »

Hallo Teddy,

ich hab mir den Programmfluss nochmal im Detail im Debugger angeschaut und muss als erstes Sagen das ich die Implementierung sehr gut und übersichtlich finde! So schnell finde ich mich selten in fremden Source Code zurecht :)

Mir ist aufgefallen, dass die on bool nie ausgewertet wird in der Methode M6051::AccessoryOnOrOff.
Daher habe ich den Source Code um eine Auswertung erweitert bzw. das setzten des Befehls 32 bei !on eingebaut (siehe Zeile 151)
Add-state-evaluation.png
Nun passt das Verhalten in meinem Testbaufbau bzw. muss man die Switching duration auf min. 100 setzten.
Das Entkupplungsgleis mit dem k73 Decoder kann nun äquivalent einer Ansteuerung mittels 6040 Keyboard konfiguriert werden.

Falls die Lösung für dich passt, würde ich einen Pull Request auf GitHub stellen.

Gruß
Felix
User avatar
teddy
Site Admin
Posts: 428
Joined: Thu May 07, 2020 2:39 pm
Contact:

Re: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by teddy »

Hallo Felix

Ich bin heute unterwegs und habe nur bedingt Zugriff auf meine Daten. Deine Änderung sieht aber plausiebel aus. Von dem her: mach mal eine Request. Ich schau mir das morgen in Ruhe an.

Danke für deine Unterstützung!

Gruss
Teddy
User avatar
teddy
Site Admin
Posts: 428
Joined: Thu May 07, 2020 2:39 pm
Contact:

Re: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by teddy »

Hallo Felix

Ich habe deinen Änderungsvorschlag mit einer kleinen Änderung übernommen und in den Code aufgenommen.

Vielen Dank für deine Unterstützung!

Ich habe vermutlich beim Testen endabgeschaltete Weichen verwendet und so nicht bemerkt, dass das nicht funktioniert hat. Ich hoffe, nun klappt alles.

Gruss
Teddy
felix
Posts: 4
Joined: Thu Feb 02, 2023 2:50 pm

Re: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by felix »

Hallo Teddy,

vielen Dank für den Einbau der Änderung!
Der "Fehler" ist auch eher ein Edge Case der nur bei den alten Decodern und der Control Unit 6021 auffällt.
In der Doku zur 6023 steht zb. schon, dass man den Befehl nicht mehr braucht da diese den selbständig sendet.

Ich hab auch nur aus purem Interesse den alten Kram und vor allem die alten Decoder verwendet um mal zu schauen wie weit man heute noch damit kommt.

Als nächstes ist der Anschluss eines s88 Modul an das Interface an der Reihe.
Ein erster Versuch war noch nicht sehr erfolgreich, da alles anfängt zu spinnen und im Log ein Fehler in der Kommunikation auftaucht.
Aber mal schauen wann ich Zeit finde mir das mal im Detail anzuschauen :)

Viele Grüße
Felix
User avatar
teddy
Site Admin
Posts: 428
Joined: Thu May 07, 2020 2:39 pm
Contact:

Re: Nicht funktionierendes Magnetabschaltsignal in der M6051 Kommunikation

Post by teddy »

Hallo Felix

Das alte Zeugs funktioniert grundsätzlich schon noch.
Aber der S88 war schon immer heikel und kann auch im Normalbetrieb Events verschlucken. Würde ich von dem her nicht empfehlen.

Gruss
Teddy
Post Reply