1zu160 - Forum



Anzeige:
MDVR - Modellbahn Digital Versand Radtke

THEMA: Roco R Bus

THEMA: Roco R Bus
Startbeitrag
Peter W. - 22.07.24 17:05
Hallo,

soweit ich bisher in Erfahrung bringen konnte, handelt es sich um eine RS485 im Sinne eines Xpressnet, wo die Rückmelder im Master-Slave Verfahren abgefragt werden.

Leider konnte ich noch keine öffentliche Protokoll Beschreibung finden. Ein Indiz für die Header Bytes findet sich in der Beschreibung des Roco Xpressnet-LAN.

Aber wie sind die Anfrage Befehle und die Antworten auf Seite des R-Bus tatsächlich aufgebaut? Ich würde das gerne mit einem Arduino nachbilden.

Grüße, Peter W



Zitat - Antwort-Nr.: | Name:


R-Bus is a modification of the XpressNet Protocol used by Roco, with commands specific to Roco devices. Allows 20 modules with 8 inputs (160 in total) divided into two groups of 10.

Essentially the same as XpressNet, using 1 start bit, 9 data bits, 1 stop bit and no parity, at 62.5 kilobits/second.


Mehr hab ich auch nicht. Welche Seite soll der Arduino denn machen? Teure Rückmelder ersetzen?

Ich werde so langsam allergisch gegen alle nicht  oder pseudo-offenen Protokolle.

Grüße,
Harald.
Hallo,

Zitat - Antwort-Nr.: | Name:

Teure Rückmelder ersetzen?


Ja genau das.
Aus dem Text von Fucik bin ich noch schlau geworden. Da muss ich mir den tschechischen Text übersetzen, sein ČEnglisch Geschwafel ist etwas mühsam.
Außerdem beschreibt er Rocomotion, das interessiert mich nicht, sondern die z21/Z21.

Grüße, W

Rocomotion ist u. a. die alte PC-Software, aus Verstärkerbox Zeiten...........

Die z/Z21 dürfte da vermutlich Rückwärts kompatibel sein?!?!?!

Gruß, Micha
Hallo Peter,

meine persönliche Meinung:
Wenn ich finanzielle Ersparnis gegen Zeitaufwand aufrechne, würde ich lieber kaufen. Die Entwicklung dürfte eher mehrere 40h-Wochen als 8h-Tage benötigen.
Wenn für Dich der Ardunio ein weiteres Hobby ist, dann mag es anders aussehen.

Viele Grüße, Joni
Hallo,

der Zeitaufwand ist mir das für den Verein wert, einen Gleisbelegtmelder mit Optokoppler und R-Bus auf eigene Beine gestellt zu bekommen.

Grüße, Peter W
Nach einem Tipp per PM habe ich dieses Projekt bei GitHub gefunden, wo auch die Beschreibung für das alte Roco Interface eingecheckt ist.

Das kann ich mit Jindra's Informationen und dem LAN Protokoll abgleichen.

Grüße, Peter W
"dieses"? :)
Kanns sein dass da noch ein Link fehlt?
Hallo Vincent,

In der Tat, der Link hat sich heimlich zwischen den Zeilen versteckt.
https://github.com/Digital-MoBa/XpressNet

Grüße, Peter W
Wenn ich das richtig verstehe, lautet die Anfrage
1DD*) F#**) 00 <DATA1> <DATA2> .. <Prüfsumme>

*) Call Bytes haben Bit 9 gesetzt
**) das low Nibble enthält die Anzahl der Zeichen, also die Anzahl der abzufragenden Module + 1 - das Infobyte 0x00 (00=normales Feedback, lt. Tabelle in roconet-v1.6.1.pdf) wird mitgerechnet. Ob hier der Gruppenindex drin steht?

Das Rückmeldemodul belegt an seiner Postion den Bus und sendet sein Byte in den Stream. Bei Timeout sendet die Zentrale ein Nullbyte 0x00.

Die Berechnung der Prüfsumme habe ich nicht verstanden, weder in der englischen, noch der übersetzten tschechischen Beschreibung. Der Werte dieses Byte kann den Rückmeldern egal sein.

Grüße, Peter W.

So, das RS 485 Shield für den Arduino ist bestellt. Idealerweise werde ich das mit einem Leonardo verheiraten, dann habe ich praktisch schon ein USB Interface für den X-Bus und den R-Bus.

In der Z21 Maintenance App gibt es auch einen praktischen Rückmelde-Monitor, wo alle 20 möglichen Melder (= 160 Bits) in einem Block grafisch dargestellt werden.

Programmatisch kann ich ja alle 20 Bytes vom selben Gerät mit einer aufsteigenden Zahl beantworten, um ein charakteristisches Bitmuster in der Anzeige zu erhalten.

Ich habe keine Einstellung zur Konfiguration der Anzahl der Melder gefunden. Somit würde ich als Header 0xFB (11 Byte) erwarten.

To be continued...

Grüße, Peter W

Spannendes Projekt! Würde mich freuen wenn daraus eine quelloffene Bibliothek entsteht.
Einer der Knackpunkte bei der Kommunikation mit dem X-Bus und dem R-Bus ist die Übertragung mit 9 Bit.
Obwohl die AVR Hardware das durchaus unterstützt, ist es im Arduino Framework nicht vorgesehen.

Edith hat den Link zu github gelöscht, da der Code unbrauchbar ist (compiliert nicht)

Hallo,

für alle Interessierten. Mit Hilfe eines USB-RS485 Kabels mit FTDI Chip lässt sich der R-Bus mit 62500 baud scannen. Das Ergebnis ist wie folgt:

- Es wird repetitiv das Callbyte 5F gesendet. Wozu dient das?
- Es werden blockweise mehrmals hintereinander die Abfragen der beiden Rückmeldegruppen ausgesandt.

... 5F ... 5F ... DE FC 00 03 DE FC 10 13 ... 5F ... 5F ...

DE ......... Rufbyte
Fx .......... Header byte: Der Byte Count im low nibble x=12 ist konstant!
x0 .......... Data byte: Im high nibble steht die angeforderte Rückmeldegruppe 0/1
x3 .......... XOR?

Grüße, Peter W.
Hallo,

ein kleines Zwischenergebnis: Mir ist es gelungen, Daten über den R-Bus an die z21 zu schicken.

Findings:

Es zeigt sich eine Unzulänglichkeit der Z21 Maintenance App: Wird die Verbindung mit der Zentrale hergestellt, BEVOR die Rückmeldung angeschlossen ist, ändert sich der Status in der Anzeige einfach nicht, obwohl die z21 selbst auf die eingehenden Daten mit entsprechender Prüfsumme reagiert.
Das habe ich nicht erwartet und wird noch mit Roco zu diskutieren sein. Wenn man eine Rückmeldesstrecke aufbauen möchte, will man doch in der App die Live Daten sehen, auch wenn man die Geräte sukzessive ansteckt - RS 485 ist eigentlich hot pluggable.

Im Gegensatz zu dem bei Jindra Fučik beschriebenen und von ihm analysierten Rocomotion Interface-Kastl ergänzt die z21 das Datagramm nur um die Prüfsumme, aber nicht um allfällige fehlende Bytes. Man kann also nach dem Gruppenindikator 00h/10h direkt senden.

Die Frequenz der Abfragen am R-Bus erhöht sich deutlich, sobald die Zentrale eine Antwort erhält. Ansonsten wird nur langsam zyklisch abgefragt, im Sinne eines "Ping".

Fortsetzung folgt...

Grüße, Peter W


Nur registrierte und eingeloggte User können Antworten schreiben.
Einloggen ->

Noch nicht registriert? Hier können Sie Ihren kostenlosen Account anlegen: Neuer N-Liste Account





Zum Seitenanfang

© by 1zu160.net;