4 Bit Prio
8 Bit Kommando
1 Bit Res-ponse-Status (sorry für die Schreibweise, das korrekte Wort wird vom Board als Spam gewertet...??)
16 Bit Kollisionsauflösung
4 Bit Anzahl folgender Datenbytes (immer 8)
8 Byte Datenbytes (nach Märklin unterteilt in 4 Byte Adresse und 4 Byte Wert)
Jetzt lese ich die CC-Schnitte aus und bekomme schön 13 Bytes, wie es scheint, die Datenbytes schön in die letzten acht Stellen sortiert.
Aber die ersten Bits sind doch ein total krummer Wert???
4 + 8 + 1 + 16 + 4 sind 33 Bit.
Für fünf vollständige Bytes fehlen mir 7 Bit (7 Bit * 0,3l * 4,8% entspricht etwa 100g Alkohol, das ist schon relevant ;-) )
Spass beiseite: Wo kommen diese Bits her? Irgendwoher müssen sie ja kommen, wenn die restlichen Bytes vollständig sind.
LG Klaus
TS12, DX7, Tyros, VL70-m, Polysix, i3, Microwave, blofeld, TG77, Versi II, Rockkordeon, Loverock, Telecaster, GPC-16E, Grand Royale, APX500 BL und noch so ein paar
jetzt ist mein Ehrgeiz geweckt auch den HASH Wert (also die 2 Bytes) richtig zu berechnen! Ich hatte ja ein Beispiel für die Ansteuerung einer Lok gezeigt:
00 08 -- HA SH 06 -- 00 00 40 06 -- 00 06 00 10
Alle Bytes in dem Telegramm sind in der Doku von Märklin beschrieben. Was ich jetzt noch nicht verstanden habe, wie rechne ich jetzt den korrekten HASH Wert aus?
Prio habe ich, Kennung, DLC, die MFX-Adresse, 2 Bytes mit der Geschwindigkeit und zum Schluss 2 Bytes die nicht beachtet werden. Also alle Bytes kann ich in dem Telegramm erklären, aber wie berechne ich hieraus den HASH Wert (die beiden Bytes)?
Freue mich auf die Antwort, kann ich doch dann die letzten Bits in dem Telegramm auch richtig setzen.
Eine weitere Frage habe ich auch noch, bisher habe ich den HASH Wert ja immer irgendwie gesetzt, ich meine ohne Auswirkungen. Wird dieser HASH Wert bei der seriellen Kommunikation über USB Port überhaupt genutzt?
jetzt ist mein Ehrgeiz geweckt auch den HASH Wert (also die 2 Bytes) richtig zu berechnen! Ich hatte ja ein Beispiel für die Ansteuerung einer Lok gezeigt:
00 08 -- HA SH 06 -- 00 00 40 06 -- 00 06 00 10
Alle Bytes in dem Telegramm sind in der Doku von Märklin beschrieben. Was ich jetzt noch nicht verstanden habe, wie rechne ich jetzt den korrekten HASH Wert aus?
Beste Grüße
Andreas
Hallo Andreas,
Du musst grundsätzlich 2 Fälle unterscheiden:
1) Du bist Entwickler eines CAN-Busteinehmers z.B. eines Boosters, dann musst Du dem Booster eine 4-Byte UID zuweisen
aus der der Hash, wie oben beschrieben, berechnet wird. Der Booster meldet sich auf eine PING-Anfrage der Zentrale mit dem
berechneten Hash. Dabei gilt, innerhalb des CAN-Busystems darf es den Hashwert nur einmal geben.
2) Du willst den Hash eines Teilnehmers nachrechnen und überprüfen.
Beispiel: Die Zentrale sendet einen PING (CAN-ID 0x30) und eine angeschloosene Gleisbox antwortet mit der CAN_ID 0x31 und "ihrem"
Hash. Diesen 16Bit Hash kannst Du nachrechnen, indem die Du die ersten 4-Datenbytes als UID nimmst und wie erkärt daraus
den Hash berechnet.
Ich habe genau den Fall mit dem Logic-Analysor aufgezeichnet und erhalte folgendes CAN-Telegramm
Der Hash ist 0xAF62 , die 4 UID-Bytes sind 0x47 0x44 0x25 0xE8 aus diesen berechnest Du wie oben beschrieben den Hash
und Du wirst feststellen, dass als Ergebnis 0xAF62 herauskommt.
Viel Spass beim Rechnen.
Hi Leute und danke für die ausführlichen Beschreibungen.
Ich hab meinen Denkfehler gefunden:
Da ich üblicherweise nicht Bit-weise rechne, setz da bei mir der Tilt-Modus ein.
Deshalb habe ich gedanklich aus den 16 Bit hashwert 4 Byte gemacht. Und dann wird’s schwierig...
Lg klaus
TS12, DX7, Tyros, VL70-m, Polysix, i3, Microwave, blofeld, TG77, Versi II, Rockkordeon, Loverock, Telecaster, GPC-16E, Grand Royale, APX500 BL und noch so ein paarBearbeitet von hlag am 06.04.2020 22:00
mir fehlt gerade jede Möglichkeit, irgendwie zu verifizieren, was ich denn da so tue.
Gleisbox hat Strom, ist am Startpunkt angeschlossen.
Startpunkt an CC-Schnitte, CC-Schnitte an USB.
In die Schnitte komme ich rein, am Startpunkt hängt noch ein Weichenchef Servo, den kann ich per C# steuern.
Ich versuche die Gleisbox anzupingen, keine Reaktion
Hab sie folgendermaßen angepingt:
prio 0
command 0x30
Rest alles Nullen
Keine Antwort
prio 0
command 0x18
Rest alles Nullen
Keine Antwort
prio 0
command 30
Rest alles Nullen
Keine Antwort
prio 0
command 18
Rest alles Nullen
Keine Antwort
Hab versucht nen Go-Befehl zu senden, nichts. (hab mit nem Schraubenzieher am Gleis geschaut ob das ding Funken macht. Zugegeben, das ist die gefühllose Methode, aber 10 kHz schafft mein Multimeter nicht)
Wo kann ich da suchen?
lg Klaus
TS12, DX7, Tyros, VL70-m, Polysix, i3, Microwave, blofeld, TG77, Versi II, Rockkordeon, Loverock, Telecaster, GPC-16E, Grand Royale, APX500 BL und noch so ein paar
Startpunkt an CC-Schnitte, CC-Schnitte an USB.
In die Schnitte komme ich rein, am Startpunkt hängt noch ein Weichenchef Servo, den kann ich per C# steuern.
lg Klaus
Hallo Klaus,
wenn ich es richtig verstanden habe bildet Dein C#-Programm die Funktionen einer Zentrale nach und
kommuniziert mit der Gleisbox.
Damit das funktioniert muss die Gleisbox wie folgt "initialisiert" werden:
1. 0x36 xxxx 0 an Gleisbox senden (xxxx ist der HASH deiner Zentrale)
2. Gleisbox antwortet darauf mit 0x37 yyyy 8 4Byte UID 2Byte SW-Version 2Byte Gerätekennung ( 0x 0010 bei Gleisbox)
3.0x36 xxxx 5 0x00 0x00 0x00 0x00 0x11 an Gleisbox senden
Ab jetzt ist Gleisbox mit den Befehlen aus der Zentrale (Gleisprotokoll freischalten, System GO, PING usw.) ansprechbar und reagiert
Hi Werner,
Danke, vermutlich liegt genau da der Hase im Pfeffer. Nach dem Frühstück wird das das erste sein, was ich mache.
Wo findet man solche Infos? Hab vorher überall gesucht, nix gefunden. Zwei Möglichkeiten: tatsächlich nix da oder zu doof zum suchen.
Lg klaus, ich lass hören, wenn’s klappt...
TS12, DX7, Tyros, VL70-m, Polysix, i3, Microwave, blofeld, TG77, Versi II, Rockkordeon, Loverock, Telecaster, GPC-16E, Grand Royale, APX500 BL und noch so ein paar
Wo findet man solche Infos? Hab vorher überall gesucht, nix gefunden. Zwei Möglichkeiten: tatsächlich nix da oder zu doof zum suchen.
Lg klaus, ich lass hören, wenn’s klappt...
Hallo Klaus,
die findet man leider nirgends, leider auch nicht in der Märklin-CAN-Protokollbeschreibung.
Intensives Beschäftigen mit der Materie und beobachten was auf dem Märklin-CAN-Bus "so alles passiert".
Tausend Dank.
Nachdem mich mein Weibchen nach dem Aufstehen erstmal zum Schrankbauen verdonnert hab, kam ich jetzt erst zum Testen.
Das Gerät antwortet! Ein guter Gerät!!!
>> can Bus beobachten:
Das erklärts: ich habe keine Central oder Mobile Station, die ich beobachten kann. Hab nur C#, die Schnitte und die Gleisbox. Aber ich denke, ich komme jetzt weiter. LG Klaus und nochmal herzlichen Dank
TS12, DX7, Tyros, VL70-m, Polysix, i3, Microwave, blofeld, TG77, Versi II, Rockkordeon, Loverock, Telecaster, GPC-16E, Grand Royale, APX500 BL und noch so ein paar