mgbox und S88 Rückmelder INVALID packet

Post Reply
chrissiMZ
Posts: 82
Joined: 26.12.2018, 18:07
Location: Winden/Pfalz, Germany

mgbox und S88 Rückmelder INVALID packet

Post by chrissiMZ » 26.12.2018, 19:03

Guten Tag,

ich versuche gerade die S88 Rückmelder mit Rocrail Rev 14741 zum laufen zu bewegen.

Sobald ein Rückmelder ausgelöst wird, meldet der Server:

Code: Select all

18:55:45 INVALID packet; PRIO byte contains too high value: prio=0x80
Im PiCanS88 (läuft auf dem Raspberry Pi) wird erfogreich folgendes angezeigt:

Code: Select all

sensor 19 changed value to 1
->S88>UDP CANID 0x80220B01 R [8] 00 00 00 13 00 01 00 00
sensor 19 changed value to 0
->S88>UDP CANID 0x80220B01 R [8] 00 00 00 13 01 00 00 00
Dies sind meine Einstellungen von der MGBOX-Zentrale:

Image

Und vom Rückmelder:

Image

Suche nun seit einigen Stunden ohne Ergebnis nach einer Lösung.

chrissiMZ
Posts: 82
Joined: 26.12.2018, 18:07
Location: Winden/Pfalz, Germany

Re: mgbox und S88 Rückmelder INVALID packet

Post by chrissiMZ » 26.12.2018, 19:04

Anbei der Trace mit dem Ausschnitt
You do not have the required permissions to view the files attached to this post.

rjversluis
Site Admin
Posts: 42304
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: mgbox und S88 Rückmelder INVALID packet

Post by rjversluis » 26.12.2018, 19:07

Der mgbox ist kein offizielle Rocrail Bibliothek, was man auch im Wiki nach Lesen kann.

chrissiMZ
Posts: 82
Joined: 26.12.2018, 18:07
Location: Winden/Pfalz, Germany

Re: mgbox und S88 Rückmelder INVALID packet

Post by chrissiMZ » 26.12.2018, 19:37

rjversluis wrote:
26.12.2018, 19:07
Der mgbox ist kein offizielle Rocrail Bibliothek, was man auch im Wiki nach Lesen kann.
Ja das ist mir bekannt. Bitte dies auch zu Entschuldigen da ich relativ neu in diesem Thema bin.

Mit dem mcs2-Modul klappt das nun ohne Probleme. Da ich eine Gleisbox und nicht eine CS2 habe dachte ich, ich muss das mgbox-Modul nehmen.

So wie ich das aktuell aus dem Wiki entnehme liegt der Unterschied zwischen den Modulen bei den Erkennung von mfx-Decodern, die z.B. von mgbox aktuell nicht unterstützt werden, oder?

rjversluis
Site Admin
Posts: 42304
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: mgbox und S88 Rückmelder INVALID packet

Post by rjversluis » 26.12.2018, 19:41

Der MS2 kann Loks mit MfX und MM Decoder erkennen, Rocrail nicht.
Der mcs2 Bibliothek leitet diese Info's auch weiter an Rocrail wenn man es aktiviert.

Wenn du weiter der mgbox Bibliothek verwenden möchtest, musst du dich mit Bert, woodyboy, in Verbindung setzen.

ronvgs
Posts: 27
Joined: 23.07.2014, 17:37

Re: mgbox und S88 Rückmelder INVALID packet

Post by ronvgs » 27.12.2018, 08:39

Hier meine settings MS2 Gleisbox.
You do not have the required permissions to view the files attached to this post.

woodyboy
Posts: 628
Joined: 18.11.2013, 16:01

Re: mgbox und S88 Rückmelder INVALID packet

Post by woodyboy » 27.12.2018, 10:22

Hi ChrissMZ (Vorname??)

Sorry, aber dies ist kein Fehler in mgbox, mgbox erkennt nur den Fehler. Die empfangene Nachricht von PiCanS88 ist ungültig: Das Prio ist ungültig (0x80 ist zu hoch > 0x0F) und der Hash ist zu niedrig. Es hat den Wert einer Paketnummer (0x0B01 sollte > 0x1300 sein).

Informieren Sie also bitte den Entwickler (Derrow?) der PiCANS88 software.

rjversluis
Site Admin
Posts: 42304
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: mgbox und S88 Rückmelder INVALID packet

Post by rjversluis » 27.12.2018, 16:40

Hi Bert,

diese Restriktionen kann ich so im Protokollbeschreibung nicht finden.

Hash/Fortlaufendenummer:
Laut Doku muss bit 7 immer Null sein und bit 8 und 9 immer Eins. Das entspricht 0x0300.
Also wäre 0x0B01 gültig.

Prio:
Prio 1: Stopp / Go / Kurzschluss-Meldung
Prio 2: Rückmeldungen
Prio 3: Lok anhalten (?)
Prio 4: Lok / Zubehörbefehle
Rest Frei :!:
Also wäre 0x80 gültig.

bertc3p0
Posts: 324
Joined: 25.04.2012, 20:19
Location: near Frankfurt Germany

Re: mgbox und S88 Rückmelder INVALID packet

Post by bertc3p0 » 27.12.2018, 17:03

Hallo,

der Fehler liegt in der falschen Behandlung der CAN_ID (gültig sind nur 29 bit). Linux verwendet die oberen 3 Bits hierfür:

Code: Select all

# Linux linux/can.h
/* special address description flags for the CAN_ID */
#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */
#define CAN_RTR_FLAG 0x40000000U /* remote transmission request */
#define CAN_ERR_FLAG 0x20000000U /* error message frame */
Meister Derrow hat in seinem PiCanS88 das EFF Bit fälschlicherweise für UDP gesetzt:

Code: Select all

# S88UDP.cpp -> CS88UDP::Send_Sensor_Event
can_id = 0x80220B01 + offset;
richtig wäre:

Code: Select all

can_id = 0x00230B01 + offset;
wobei Offset auch nicht ganz richtig ist. Aber das ist ein anderes Thema ...

Gruß

Gerd

woodyboy
Posts: 628
Joined: 18.11.2013, 16:01

Re: mgbox und S88 Rückmelder INVALID packet

Post by woodyboy » 27.12.2018, 19:17

rjversluis wrote:
27.12.2018, 16:40
Hi Bert,

diese Restriktionen kann ich so im Protokollbeschreibung nicht finden.

Hash/Fortlaufendenummer:
Laut Doku muss bit 7 immer Null sein und bit 8 und 9 immer Eins. Das entspricht 0x0300.
Also wäre 0x0B01 gültig.
1.2.4
Hash
Der Hash erfüllt eine Doppelfunktion:
Primär dient er zur Kollisionsauflösung der Meldungen und zur Sicherstellung der Kollisionsfreiheit zum CS1
Protokoll. Berechnung: 16 Bit High UID XOR 16 Bit Low der UID. Danach
werden die Bits entsprechend zur CS1 Unterscheidung gesetzt.
Also bits 15, 14 und 13 werden verwendet.

Sekundär kann er die Folgenummer einer Datenübertragung beinhalten.
Wird der Hash zur Kennzeichnung der Paketnummer verwendet, so werden diese Bits bei der Berechnung
der Paketnummer ausgeblendet. D.H. bei der 16 Bit Zahl werden die Bits 7 bis 9 ausgeblendet, die obersten
3 Bits sind 0.
Werte unter 0x1300 sind meiner Meinung nach Paketnummern. Sensoren haben keine Paketsequenznummern.
Technisch kann es funktionieren und zufällig ist es auch möglich, einen Hash im Bereich der Paketsequenznummern zu erhalten. Ich habe es bis auf die CS2 noch nicht gesehen. Mit dem CS2 GFP macht Marklin auch ein Durcheinander. Beim CS3 ist es entsprechend der Protokollbeschreibung.
Prio:
Prio 1: Stopp / Go / Kurzschluss-Meldung
Prio 2: Rückmeldungen
Prio 3: Lok anhalten (?)
Prio 4: Lok / Zubehörbefehle
Rest Frei :!:
Also wäre 0x80 gültig.
Laut 1.1 hat message prio 2+2bits.
4-Bit-Positionen haben für mich im Binärzahlensystem nicht mehr als 16 Möglichkeiten. Alles, was höher als 0x0F ist, ist ungültig.

Post Reply

Return to “S88 (DE)”