Märklin CAN Monitor (und ein bischen Z21)

#1 von bertr2d2 , 07.09.2023 19:49

Hallo,

ich habe den can-monitor nun als eigenständiges Programm aus dem can2udp Paket heraus gelöst. SRSEII und BPi Nutzer können es über den bekannten Mechanismus aktualisieren (opkg update; opkg install can-monitor). In der letzten Zeit sind ein paar neue Fähigkeiten hinzu gekommen:
- Ausgabe von gepackten Daten (Option -x)
- Ausgabe von Messwerten
- Z21 Kommandos (für die z21emu Nutzer - Danke Rainer !)

Was mach der can-monitor
Es ist ein Linux Tool das die CS1/CS2/MS2 CAN Daten in verständlicher Form ausgiebt. Hier ein Beispiel:


Der can-monitor kann CAN Daten direkt vom CAN-Interface, aber auch von der Netzwerkschnittstelle (CAN Pakete eingepackt in Netzwerkpakete) lesen. Auch das Einlesen von PCAP Daten (Netzwerk Dumps) ist möglich:

$ can-monitor -h

Usage: can-monitor -i <can|net interface>
Version 5.15

-i <can|net int> CAN or network interface - default can0
-r <pcap file> read PCAP file instead from CAN socket
-s select only network internal frames
-l <candump file> read candump file instead from CAN socket
-t <rocrail file> read Rocrail file instead from CAN socket
-d dump to candump file
-v verbose output for TCP/UDP and errorframes
-x expose config data
-h show this help

Für Eigentwicklung oder um nur mal zum schauen, was auf dem CAN-Bus passiert ist das sicherlich für einige von Euch nützlich bzw. interessant.

Wer es abseits von BPi bzw. SRSEII unter Linux nutzen will:

sudo apt install zlib1g-dev libpcap-dev
git clone https://github.com/GBert/railroad.git
cd railroad/can-monitor/src
cd src
make
sudo cp can-monitor /usr/bin


Gruß

Gerd


Smallest Rocrail Server Ever II ist jetzt Smallest Railroad Server Ever II
SRSEII -> SRSEII (Raider heisst jetzt Twix, sonst ändert sich nix )


vikr, Miraculus, fretzis und Langsamfahrer haben sich bedankt!
bertr2d2  
bertr2d2
CityNightLine (CNL)
Beiträge: 1.551
Registriert am: 09.10.2012
Spurweite H0
Stromart Digital

zuletzt bearbeitet 08.09.2023 | Top

RE: Märklin CAN Monitor (und ein bischen Z21)

#2 von vikr , 08.09.2023 08:34

Hallo Gerd,

Zitat von bertr2d2 im Beitrag #1
Was mach der can-monitor
Es ist ein Linux Tool mit den man die CS1/CS2/MS2 CAN Daten in verständlicher Form ausgiebt.
schön, dass Du auch den Dialekt der CS1 unterstützt. Läuft der can-monitor auch unter Cygwin? Oder benötigt man eine komplette ViftualBox um das CAN-Interface korrekt anschließen zu können?

MfG

vik


im Übrigen - Märklin am liebsten ohne Pukos, z.B. als Trix


vikr  
vikr
ICE-Sprinter
Beiträge: 6.428
Registriert am: 23.10.2011
Gleise M, C u. K.
Spurweite H0, N
Stromart Digital, Analog

zuletzt bearbeitet 08.09.2023 | Top

RE: Märklin CAN Monitor (und ein bischen Z21)

#3 von bertr2d2 , 08.09.2023 10:43

Hallo vik,

Zitat von vikr im Beitrag #2
Zitat von bertr2d2 im Beitrag #1
Was mach der can-monitor
Es ist ein Linux Tool mit den man die CS1/CS2/MS2 CAN Daten in verständlicher Form ausgiebt.
schön, dass Du auch den Dialekt der CS1 unterstützt.


den Dank gebe ich weiter: Die CS1 Dekodierung hat Rainer beigesteuert.

Zitat
Läuft der can-monitor auch unter Cygwin? Oder benötigt man eine komplette ViftualBox um das CAN-Interface korrekt anschließen zu können.


Windows ist nicht meine Baustelle. Ich habe auf der Arbeit genügend Microsoft Windows Themen. Das brauch ich nicht zu Hause
Rainer hat meines Wissens mal eine ältere can-monitor Version auf Microsoft Windows portiert.

Neben cygwin oder Virtual-Box könnte ggf. auch Microsofts WSL eine Möglichkeit sein. Aber ob da auch CAN (Linux SocketCAN) unterstützt wird, weiss ich nicht.

Der Königsweg wäre eigentlich die Integration als sogenannter Dissector in Wireshark - in meinem nächsten Leben mache ich das

Gruß

Gerd


Smallest Rocrail Server Ever II ist jetzt Smallest Railroad Server Ever II
SRSEII -> SRSEII (Raider heisst jetzt Twix, sonst ändert sich nix )


DiegoGarcia hat sich bedankt!
bertr2d2  
bertr2d2
CityNightLine (CNL)
Beiträge: 1.551
Registriert am: 09.10.2012
Spurweite H0
Stromart Digital

zuletzt bearbeitet 08.09.2023 | Top

RE: Märklin CAN Monitor (und ein bischen Z21)

#4 von Rainer Müller , 08.09.2023 18:28

Hallo Vik,

Zitat von vikr im Beitrag #2
Läuft der can-monitor auch unter Cygwin? Oder benötigt man eine komplette ViftualBox um das CAN-Interface korrekt anschließen zu können?


also Cygwin habe ich vor mehr als 20 Jahren mal ausprobiert und in die Ecke geworfen.

Aber es gibt eine Windows-Version des CAN-Monitors, siehe
t139058f7-UDP-CAN-Monitor-Bequem-den-CAN-Bus-beobachten-2.html#msg2478412/ und nachfolgende Beiträge; die Version ist etwa ein Jahr alt und noch ohne die drei von Gerd genannten Neufunktionen. Die werde ich demnächst übernehmen. Gerds Neuaufteilung hat mir keine Probleme bereitet, nur das Hinzunehmen der zlib unter Windows hat mich etwas gebremst weil eine zusätzliche DLL erforderlich wird.

Was du brauchst, hängt davon ab was du machen willst:

- CAN-Bus live: da brauchst du ein CAN-Interface am PC, das ist aber so exotisch, dass es die Win-Version nicht unterstützt und das Hineinreichen in eine VM wird vermutlich nicht funktionieren, keine Ahnung ob es bei WSL klappt.

- Netzwerk live: geht mit Win-Version als auch mit mit Linux-Version in VM, aber du siehst natürlich nur, was am jeweiligen Netzwerkinterface vorbeikommt, also im LAN nur eigener Verkehr und Broadcasts. WSL ist nicht zu empfehlen, da dabei ein eigenes Subnetz mit NAT entsteht und alle UDP-Broadcasts verloren gehen. Bei Virtual Box Netzwerkbrücke einstellen, dann erscheint die VM neben dem Host und nicht dahinter.

- Analyse aufgezeichnter Dateien: problemlos mit Win-Version als auch mit Linux-Version wahlweise in VM oder WSL (getestet mit Debian unter Win10).


Gruß
Rainer


vikr, bertr2d2 und MTB-Ontour haben sich bedankt!
 
Rainer Müller
InterRegioExpress (IRE)
Beiträge: 317
Registriert am: 29.06.2006
Homepage: Link
Ort: Korntal
Gleise Mä: K und M
Spurweite H0
Steuerung basrcpd
Stromart Digital


RE: Märklin CAN Monitor (und ein bischen Z21)

#5 von Rainer Müller , 05.01.2024 19:36

Hallo alle,

vielleicht passt das ja hier her.

Nachdem Michael in https://www.stummiforum.de/t220510f7-CS-mit-Externer-Steuerung.html#msg2625257 einen passenden Dissector für Wireshark für die Märklin CAN Befehle vorgestellt hat, habe ich beim Testen festgestellt, dass es da einen Wireshark-Entwickler geben muss, der z21-Fan ist.

Wirshark hat seit November 2023 in der 4.2-Reihe die z21-Dekodierung implementiert, mit beiden Dissectoren sieht das dann so wie in diesem Ausschnitt aus:
Bild entfernt (keine Rechte)
Naja, "LAN_GET_HWINFO" ist bei z21 noch "unknown".

Linux-Anwender, die WS aus ihrer Distribution nutzen, müssen evtl. noch warten, bis die 4.2 dort auftaucht, Win32-Anwender müssen ganz draußen bleiben, die wurden aufs 3.6-Abstellgleis geleitet.

Gruß
Rainer


bertr2d2 und vikr haben sich bedankt!
 
Rainer Müller
InterRegioExpress (IRE)
Beiträge: 317
Registriert am: 29.06.2006
Homepage: Link
Ort: Korntal
Gleise Mä: K und M
Spurweite H0
Steuerung basrcpd
Stromart Digital


RE: Märklin CAN Monitor (und ein bischen Z21)

#6 von Vincent Hamp , 09.05.2024 17:34

Zitat von Rainer Müller im Beitrag #5

Naja, "LAN_GET_HWINFO" ist bei z21 noch "unknown".



Hab das mal gefixed:
https://gitlab.com/wireshark/wireshark/-..._requests/15569


Rainer Müller und vikr haben sich bedankt!
 
Vincent Hamp
Regionalbahn (RB)
Beiträge: 47
Registriert am: 28.10.2022


RE: Märklin CAN Monitor (und ein bischen Z21)

#7 von Rainer Müller , 26.05.2024 18:05

Hallo,

die Z21-Decodierung habe ich ja nur als Zugabe eingbaut, damit man in CAN/Z21-Mischumgebungen die zeitlichen Zusammenhänge erkennt, und habe mich deshalb auf die Auswertung von Header und X-Header der Meldungen beschränkt. In der Zwischenzeit habe ich noch ein paar Schlampereien von mir entdeckt, die ich demnächst beseitigen will, und bin außerdem über ein Thema gestolpert, das mir bisher gar nicht aufgefallen war:

In der Zentrale gibt es für die Einstellungen permanenten Speicher, der auch über Z21-Meldungen gelesen (Header = 0x12 bzw. 0x16) und geschrieben wird, für die ich keine offizielle Beschreibung der Meldungen in der Z21-Protokollbeschreibung oder sonstwo finden kann. Im Code der Z21PG befinden sich zwar vermutlich durch Reverse-Engeneering ermittelte Details, aber es gibt auch dort keine Meldungs-Namen wie z.B. "LAN_GET_SETTINGS" sondern nur die Hexwerte.

Kann jemand Licht in mein Dunkel bringen?

Gruß
Rainer


 
Rainer Müller
InterRegioExpress (IRE)
Beiträge: 317
Registriert am: 29.06.2006
Homepage: Link
Ort: Korntal
Gleise Mä: K und M
Spurweite H0
Steuerung basrcpd
Stromart Digital


RE: Märklin CAN Monitor (und ein bischen Z21)

#8 von Vincent Hamp , 28.05.2024 10:32

Was ich bisher so rausgefunden hab ->

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 

### Settings
#### Get settings
| DataLen | | Header | |
| ------- | ---- | ------ | ---- |
| 0x04 | 0x00 | 0x12 | 0x00 |
 
| DataLen | | Header | | Data |
| ------- | ---- | ------ | ---- | -------- |
| 0x0E | 0x00 | 0x12 | 0x00 | Settings |
 
### Set settings
| DataLen | | Header | | Data |
| ------- | ---- | ------ | ---- | -------- |
| 0x0E | 0x00 | 0x13 | 0x00 | Settings |
 
| Byte offset | Type | Name | | |
| ----------- | ----- | ----------- | ------- | --------- |
| 0 | UINT8 | RailCom | bitmask | see below |
| 1 | UINT8 | CV29 | bitmask | see below |
| 2 | UINT8 | Z21 | bitmask | see below |
| 3 | UINT8 | Programming | bitmask | see below |
| 4 | UINT8 | ? | | |
| 5 | UINT8 | ? | | |
| 6 | UINT8 | ? | | |
| 7 | UINT8 | Accessory | bitmask | see below |
| 8 | UINT8 | ? | | |
| 9 | UINT8 | XBus | bitmask | see below |
 
Bitmasks for RailCom:
```cpp
#define sRailCom 0x01 // Generate RailCom cutout in the DCC signal
```
 
Bitmasks for CV29:
```cpp
#define sCV29automaticAddressing 0x01 // Set CV29 automatically if the loco address is changed with multiMAUS
```
 
Bitmasks for Z21:
```cpp
#define sCentreStopKey 0x01 // Function of the STOP key (0 == track power off, 1 == EStop)
#define sCentreTrackVoltageOffAfterBoot 0x02 // Track is switched off after boot
```
 
Bitmasks for Programming:
```cpp
#define sProgrammingBit 0x01 // Read CV bit-wise
#define sProgrammingByte 0x02 // Read CV byte-wise
```
 
Bitmasks for Accessory:
```cpp
#define sAccessoryDecodersSupervisionOff 0x03 // Switch off accessory decoder outputs after a timeout (0x00 == supervision, 0x03 == no supervision)
#define sAccessoryAddressesRCN213Compliant 0x04 // Fixes a turnout-address incompatibility between different DCC systems
#define sAccessoryInvertStraightBranch 0x40 // Invert meaning of straight/branch or green/red for DCC accessory decoder
```
 
Bitmasks for XBus:
```cpp
#define sXBusProtocolVersion 0x10 // XBus protocol version (0 == V4.0, 1 == V3.6)
#define sXBusFeedbackBroadcastEmulation 0x20 // Forward R-bus messages as XPressNet feedback broadcasts to X-bus devices. ATTENTION: overrides turnout numbers from 257 to 336 on X-bus!
#define sXBusInhibitAccessoryCommands 0x80 // Inhibit commands for accessory decoders on the track output (0 == track and bus, 1 == bus only)
```
 
### Advanced settings
#### Get advanced settings
| DataLen | | Header | |
| ------- | ---- | ------ | ---- |
| 0x04 | 0x00 | 0x16 | 0x00 |
 
| DataLen | | Header | | Data |
| ------- | ---- | ------ | ---- | ------------------ |
| 0x14 | 0x00 | 0x16 | 0x00 | Advanced settings |
 
#### Set advanced settings
| DataLen | | Header | | Data |
| ------- | ---- | ------ | ---- | ------------------ |
| 0x14 | 0x00 | 0x17 | 0x00 | Advanced settings |
 
| Byte offset | Type | Name | | |
| ----------- | ------ | --------------------- | ------- | ---------------------------------------------------------------------------------------- |
| 0 | UINT8 | ResetPacketsStart | # | Number of reset packets at the start of the programming sequence (startup of decoder!) |
| 1 | UINT8 | ResetPackets | # | Number of reset packets when continuing the programming sequence |
| 2 | UINT8 | ProgrammingPackets | # | Number of programming packets in the programming sequence |
| 3 | UINT8 | Programming | bitmask | see below |
| 4 | UINT8 | ShortCircuitMainTrack | # | Short circuit detection on the main track |
| 5 | UINT8 | ShortCircuitBBus | # | Short circuit detection on booster bus |
| 6 | ? | | | |
| 7 | ? | | | |
| 8 | ? | | | |
| 9 | ? | | | |
| 10 | UINT8 | ACKThreshold | # | Acknowledge pulse by decoder, RCN-216 says 60mA, but many decoders need lower thresholds |
| 11 | UINT8 | Auxiliary | bitmask | see below |
| 12 | UINT16 | MainTrackVoltage | mV | Main track voltage |
| 14 | UINT16 | ProgrammingVoltage | mV | Programming voltage |
 
Bitmasks for Programming:
```cpp
#define asProgramming 0x01 // Comparing the bits with 0 or 1 during read sequence
```
 
Bitmasks for Auxiliary:
```cpp
#define asAuxiliaryTrackSignalType 0x03 // Configure the type of signal on the track (0x00 == DCC & MM, 0x02 == DCC, 0x03 == MM)
#define asAuxiliaryDCCBroadcastSystemCapabilitiesOff 0x20 // Broadcasts DCC system capabilities on the main track according to RCN-211 (0x00 = broadcast, 0x20 == no broadcast)
#define asAuxiliaryDCCHighFRefresh 0x40 // Periodically refresh also the DCC loco high functions (F13 or higher) on the track
#define asAuxiliaryDCCShortAddressRange 0x80 // Configure the range for short DCC loco addresses (0 == 1-99, 1 == 1-127)
```
 
 



Hab auch mal bei ROCO angefragt ob man diese Befehle der Doku hinzufügen möchte.


vikr und Rainer Müller haben sich bedankt!
 
Vincent Hamp
Regionalbahn (RB)
Beiträge: 47
Registriert am: 28.10.2022


RE: Märklin CAN Monitor (und ein bischen Z21)

#9 von vikr , 28.05.2024 10:43

Hallo Vincent,

viele Dank! Beruht das nicht eigentlich auch weitgehend auf der entsprechenden CAN-Spezifikation von Zimo?
[PDF] ZIMO CAN Protokoll 4.16 Public
https://www.zimo.at/web2010/documents/ZI...%2520Public.pdf

MfG

vik


im Übrigen - Märklin am liebsten ohne Pukos, z.B. als Trix


vikr  
vikr
ICE-Sprinter
Beiträge: 6.428
Registriert am: 23.10.2011
Gleise M, C u. K.
Spurweite H0, N
Stromart Digital, Analog

zuletzt bearbeitet 28.05.2024 10:52 | Top

RE: Märklin CAN Monitor (und ein bischen Z21)

#10 von Vincent Hamp , 28.05.2024 10:47

Mir wären da keine Überschneidungen bekannt?

/edit
Laut ROCO sollen die Befehle lieber undokumentiert bleiben, damit über die LAN-API nicht irgendwelche Z21 Einstellungen geändert werden.


vikr hat sich bedankt!
 
Vincent Hamp
Regionalbahn (RB)
Beiträge: 47
Registriert am: 28.10.2022

zuletzt bearbeitet 28.05.2024 11:43 | Top

RE: Märklin CAN Monitor (und ein bischen Z21)

#11 von vikr , 28.05.2024 13:10

Hallo Vincent,

Danke fur Deine Mühe!

Zitat von Vincent Hamp im Beitrag #10

Laut ROCO sollen die Befehle lieber undokumentiert bleiben, damit über die LAN-API nicht irgendwelche Z21 Einstellungen geändert werden.
Besen, Besen, seid's gewesen, in die Ecke....

MfG

vik


im Übrigen - Märklin am liebsten ohne Pukos, z.B. als Trix


vikr  
vikr
ICE-Sprinter
Beiträge: 6.428
Registriert am: 23.10.2011
Gleise M, C u. K.
Spurweite H0, N
Stromart Digital, Analog


   

Geschwindigkeitsmessung von Loks - Welche Hardware verwenden?
Probleme CS3 mit CS3+ zusammengekoppelt in Betrieb

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz