![]() |
![]() |
||
bidib |
BusAufgleisrichtungBoosterGBMFeaturesRailcomMobaLiStXpressNetDebugLizenz
Pfad: mknetz/Eisenbahn/Digital/bidib |
||
Impressum |
|
Terminierungs-Jumper richtig setzen.
Der bidiBus (Belegung) überträgt auch das DCC-Signal.
Unter Linux kann man mit Hilfe von interceptty den Datenverkehr mitschneiden.
Die Ausgabe von interceptty nach dem Start von Rocrail sah folgendermaßen aus. '<' gibt anscheinend die Richtung zum Interface, '>' die Richtung zu Rocrail an.
< 0xfe < 0x07 < 0x00 < 0x00 < 0x18 < 0x2e (.) < 0x8a < 0x40 (@) < 0xc1 < 0xf0 < 0xfe < 0xfe < 0x03 < 0x00 < 0x00 < 0x01 < 0xd6 < 0xfe > 0xfe > 0x05 > 0x00 > 0x00 > 0x81 > 0xfd > 0xde > 0xaf > 0x89 > 0xfe < 0xfe < 0x03 < 0x00 < 0x00 < 0x09 < 0x14 < 0xfe < 0xfe < 0x07 < 0x00 < 0x00 < 0x18 ...
In der Protokollbeschreibung wird der grundsätzliche Aufbau einer 'MESSAGE' beschrieben. Wird über die serielle Schnittstelle übertragen, so findet man unter BiDiB, Übertragung über serielle Schnittstelle die genaue Beschreibung. Serielle Pakete werden durch [MAGIC]=0xFE begrenzt.
Der erste Rahmen
fe 07 00 00 18 2e 8a 40 c1 f0 fe
besteht aus 7 (07) Bytes (ohne CRC, ohne MSG_Length), der Adress-Stack ist leer (00), MSG_NUM = 0 bedeutet Broadcast, die Nachricht ist vom Typ MSG_SYS_CLOCK (18), TCODE0 2e gibt die Minute 46 (2x16+14), TCODE1 8a gibt die Stunde 10 (0x16+10), TCODE2 40 gibt den Wochentag Montag (0), TCODE3 c1 gibt den Beschleunigsfaktor 1 (0x16+1) an, CRC-8/MAXIM über 070000182e8a40c1 berechnet ergibt f0.
Der zweite Downlink-Rahmen
fe 03 00 00 01 d6 fe
enthält die Broadcast-Nachricht MSG_SYS_GET_MAGIC. Wer will kann mit obigem Link den CRC-Wert d6 nachrechnen.
Der Knoten soll mit SYS_MAGIC (aus bidib_messages.h: BIDIB_SYS_MAGIC 0xAFFE) antworten.
fe 05 00 00 81 fd de af 89 fe
Zunächst fällt auf, dass die CRC-Prüfung scheinbar misslingt. Das liegt am Byte-Stuffing. Ersetzt man fd de durch fe, ist der CRC-Wert in Ordnung. Die eigentliche Nachricht ist also ohne frame-Begrenzer:
05 00 00 81 fe af 89
In bidib_messages.h findet man MSG_SYS_MAGIC = 81 gefolgt von fe af.
Weiter geht's mit
fe 03 00 00 09 14 fe
Die Nachricht ist MSG_SYS_RESET. Das entspricht der Beschreibung eines typischen Protokollstarts.
Es folgen
fe 07 00 00 18 2e 8a 40 c1 f0 fe
MSG_SYS_CLOCK mit Parametern
fe 03 00 00 0b a8 fe
MSG_NODETAB_GETALL
Das Interface antwortet
04 00 00 88 00 46 fe
MSG_NODETAB_COUNT 0. Es fällt auf, dass am Anfang der Frame-Flag fe fehlt.
Rocrail insistiert
fe 03 00 00 0b a8 fe
MSG_NODETAB_GETALL
Das Interface antwortet
04 00 01 88 01 b3 fe
MSG_NODETAB_COUNT 1 Seltsam, warum nicht gleich? MSG_NUM beginnt zu zählen
rocrail:
fe 03 00 00 0c 2b fe
MSG_NODETAB_GETNEXT
Interface:
0c 00 02 89 01 00 da 00 0d 68 00 97 ee 5d fe
MSG_NODETAB, version 01, local num 00, Class-ID: 1101 1010, Class-ID-Erw. 0, Vendor-ID: od (Public Domain & Do-It-Yourself Decoders), Produktkennung: 68 00 97 ee, MSG_NUM = 2
rocrail:
fe 03 00 00 06 55 fe
MSG_SYS_GET_SW_VERSION
fe 0c 00 00 64 00 00 00 00 00 00 00 00 00 49 fe
MSG_CS_DRIVE , Fahrbefehl siehe Downlink: Nachrichten für Gleisausgabe
fe 04 00 01 12 65 93 fe
MSG_FEATURE_GET 65, MSG_NUM = 1
fe 04 00 02 62 ff ae fe
MSG_CS_SET_STATE BIDIB_CS_STATE_QUERY (ff), MSG_NUM = 2
fe 03 00 03 32 df fe
MSG_BOOST_QUERY, MSG_NUM = 3
fe 05 00 04 19 00 00 21 fe
MSG_STRING_GET 00 00, MSG_NUM = 4
fe 05 00 05 19 00 01 f0 fe
MSG_STRING_GET 00 01, MSG_NUM = 5
fe 04 00 06 12 fe d8 fe Byte-Stuffing!
MSG_FEATURE_GET fe, MSG_NUM = 6
fe 03 00 07 03 04 fe
MSG_SYS_ENABLE , MSG_NUM = 7
fe 03 00 08 0c 5d fe
MSG_NODETAB_GETNEXT, MSG_NUM = 8
Interface:
06 00 03 85 03 04 02 fb fe
MSG_SYS_SW_VERSION 03 04 02, MSG_NUM = 3
06 00 04 e2 00 00 01 81 fe
MSG_CS_DRIVE_ACK 00 00 01, Befehl mit Adresse 0 (broadcast?) wird demnächst an Gleis gelegt, MSG_NUM = 4
05 00 05 90 65 00 e7 fe
MSG_FEATURE 65 00, MSG_NUM = 5
....
Folgender Ausschnitt zeigt, dass sich (Vollduplex!) up- und downstream-Pakete überlagern können.
> 0xfe > 0x09 > 0x00 > 0x08 > 0xb2 > 0x00 < 0xfe < 0x03 < 0x00 < 0x09 < 0x11 < 0xf9 < 0xfe > 0x1b > 0x01 > 0xa7 > 0x02 > 0x17 > 0xbb > 0xfe
Aufruf: sudo interceptty -s 'ispeed 115200 ospeed 115200' /dev/ttyUSB0 /dev/rr | ./bidibmsg.py
Dabei wurden die Nachrichten MSG_BM_SPEED, MSG_CS_STATE, MSG_CS_SET_STATE, MSG_BM_DYN_STATE mit einer Nummer aus msgex = {0xa6,0xe1,0x62,0xaa} ausgefiltert.
2018-12-05 19:51:09.410325 < 07000018339342c100 0x18 MSG_SYS_CLOCK 19:51, Mittwoch, 1 2018-12-05 19:51:09.430411 < 03000001d6 0x01 MSG_SYS_GET_MAGIC 2018-12-05 19:51:09.439490 > 05000081feaf89 0x81 MSG_SYS_MAGIC 1:0xFE 2:0xAF 2018-12-05 19:51:09.460807 < 0300000914 0x09 MSG_SYS_RESET 2018-12-05 19:51:10.461912 < 0300000ba8 0x0b MSG_NODETAB_GETALL 2018-12-05 19:51:10.479035 > 040000880046 0x88 NODETAB_COUNT 0 2018-12-05 19:51:10.593310 < 0300000ba8 0x0b MSG_NODETAB_GETALL 2018-12-05 19:51:10.606917 > 0400018801b3 0x88 NODETAB_COUNT 1 2018-12-05 19:51:10.633732 < 0300000c2b 0x0c MSG_NODETAB_GETNEXT 2018-12-05 19:51:10.638934 > 0c0002890100da000d680097ee5d 0x89 MSG_NODETAB version: 1 local: 0 class: 11011010 0 vid: 0d pid: 680097ee 2018-12-05 19:51:10.664029 < 0300000655 0x06 MSG_SYS_GET_SW_VERSION 2018-12-05 19:51:10.664153 < 0c00006400000000000000000049 0x64 MSG_CS_DRIVE 0, 14, 000000, rev, 0, 0 0000, 0000 0000, 0000 0000, 0000 0000 2018-12-05 19:51:10.664264 < 040001126593 0x12 MSG_FEATURE_GET FEATURE_GEN_WATCHDOG 2018-12-05 19:51:10.664352 < 03000332df 0x32 MSG_BOOST_QUERY 2018-12-05 19:51:10.664398 < 05000419000021 0x19 MSG_STRING_GET 0 0 2018-12-05 19:51:10.664449 < 050005190001f0 0x19 MSG_STRING_GET 0 1 2018-12-05 19:51:10.664497 < 04000612fed8 0x12 MSG_FEATURE_GET FEATURE_FW_UPDATE_MODE 2018-12-05 19:51:10.664543 < 0300070304 0x03 MSG_SYS_ENABLE 2018-12-05 19:51:10.664581 < 0300080c5d 0x0c MSG_NODETAB_GETNEXT 2018-12-05 19:51:10.685999 > 06000385030402fb 0x85 MSG_SYS_SW_VERSION 4.3.2 2018-12-05 19:51:10.686113 > 060004e200000181 e2 MSG_CS_DRIVE_ACK 2018-12-05 19:51:10.686168 > 0500059065141b 0x90 MSG_FEATURE FEATURE_GEN_WATCHDOG 20 2018-12-05 19:51:10.686252 > 040007b080eb 0xb0 MSG_BOOST_STAT 0x80 BIDIB_BST_STATE_ON 2018-12-05 19:51:10.686311 > 090008b2001e01a6021b61 0xb2 MSG_BOOST_DIAGNOSTIC 72mA 16.6V 27°C 2018-12-05 19:51:10.686435 > 1500099500000f47424d426f6f7374204d6173746572da 0x95 MSG_STRING 0 0 15 'GBMBoost Master' 2018-12-05 19:51:10.686508 > 06000a9500010097 0x95 MSG_STRING 0 1 0 '' 2018-12-05 19:51:10.686559 > 04000b91feb2 0x91 MSG_FEATURE_NA FEATURE_FW_UPDATE_MODE 2018-12-05 19:51:10.686603 > 04000c8bff9d 0x8b MSG_NODE_NA node: 255 2018-12-05 19:51:10.686647 > 04000da001bf 0xa0 MSG_BM_OCC 1 2018-12-05 19:51:10.686690 > 04000ea00786 0xa0 MSG_BM_OCC 7 2018-12-05 19:51:10.686737 > 06000fa9000000db 0xa9 MSG_BM_CONFIDENCE void: 0 freeze: 0 nosignal: 0 2018-12-05 19:51:10.704493 < 03000911f9 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.704527 < 04000a22017b 0x22 MSG_BM_MIRROR_OCC 1 2018-12-05 19:51:10.704541 < 04000b22070d 0x22 MSG_BM_MIRROR_OCC 7 2018-12-05 19:51:10.717801 > 05001090001066 0x90 MSG_FEATURE FEATURE_BM_SIZE 16 2018-12-05 19:51:10.734900 < 03000c0327 0x03 MSG_SYS_ENABLE 2018-12-05 19:51:10.755439 < 05000d2000107f 0x20 MSG_BM_GET_RANGE 0 16 2018-12-05 19:51:10.765676 < 05000e1302019f 0x13 MSG_FEATURE_SET FEATURE_BM_SECACK_AVAILABLE 1 2018-12-05 19:51:10.765786 < 05000f13031476 0x13 MSG_FEATURE_SET FEATURE_BM_SECACK_ON 20 2018-12-05 19:51:10.765872 > 070011a200108200f8 0xa2 MSG_BM_MULTIPLE start: 0 size: 16 10000010 00000000 2018-12-05 19:51:10.775726 < 07001021001082004a 0x21 MSG_BM_MIRROR_MULTIPLE start: 0 size: 16 10000010 00000000 2018-12-05 19:51:10.781868 > 05001290020133 0x90 MSG_FEATURE FEATURE_BM_SECACK_AVAILABLE 1 2018-12-05 19:51:10.781970 > 050013900314da 0x90 MSG_FEATURE FEATURE_BM_SECACK_ON 20 2018-12-05 19:51:10.795730 < 0300111163 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.797646 > 0500149001016f 0x90 MSG_FEATURE FEATURE_BM_ON 1 2018-12-05 19:51:10.816033 < 0300121136 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.829743 > 050015900201b5 0x90 MSG_FEATURE FEATURE_BM_SECACK_AVAILABLE 1 2018-12-05 19:51:10.846506 < 03001311f2 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.861755 > 0500169003145b 0x90 MSG_FEATURE FEATURE_BM_SECACK_ON 20 2018-12-05 19:51:10.876836 < 030014119c 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.893761 > 05001790080155 0x90 MSG_FEATURE FEATURE_BM_ADDR_DETECT_AVAILABLE 1 2018-12-05 19:51:10.907353 < 0300151158 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.909756 > 0500189009010b 0x90 MSG_FEATURE FEATURE_BM_ADDR_DETECT_ON 1 2018-12-05 19:51:10.927661 < 030016110d 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.941805 > 050019900a01d1 0x90 MSG_FEATURE FEATURE_BM_ADDR_AND_DIR 1 2018-12-05 19:51:10.957999 < 03001711c9 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:10.973790 > 05001a900d0137 0x90 MSG_FEATURE FEATURE_BM_CV_AVAILABLE 1 2018-12-05 19:51:10.988335 < 03001811d1 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.005777 > 05001b900e01ed 0x90 MSG_FEATURE FEATURE_BM_CV_ON 1 2018-12-05 19:51:11.018656 < 0300191115 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.021701 > 05001c900b0194 0x90 MSG_FEATURE FEATURE_BM_ISTSPEED_AVAILABLE 1 2018-12-05 19:51:11.038933 < 03001a1140 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.053676 > 05001d900c0a55 0x90 MSG_FEATURE FEATURE_BM_ISTSPEED_INTERVAL 10 2018-12-05 19:51:11.069203 < 03001b1184 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.085554 > 05001e90110198 0x90 MSG_FEATURE FEATURE_BST_CUTOUT_AVAIALABLE 1 2018-12-05 19:51:11.099654 < 03001c11ea 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.101629 > 05001f90120142 0x90 MSG_FEATURE FEATURE_BST_CUTOUT_ON 1 2018-12-05 19:51:11.119901 < 03001d112e 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.133702 > 050020901308c8 0x90 MSG_FEATURE FEATURE_BST_TURNOFF_TIME 8 2018-12-05 19:51:11.150298 < 03001e117b 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.165700 > 05002190141e69 0x90 MSG_FEATURE FEATURE_BST_INRUSH_TURNOFF_TIME 30 2018-12-05 19:51:11.180652 < 03001f11bf 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.197701 > 050022901501f9 0x90 MSG_FEATURE FEATURE_BST_AMPERE_ADJUSTABLE 1 2018-12-05 19:51:11.211044 < 030020118a 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.213634 > 0500239016aaac 0x90 MSG_FEATURE FEATURE_BST_AMPERE 170 2018-12-05 19:51:11.231172 < 030021114e 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.245568 > 0500249017003f 0x90 MSG_FEATURE FEATURE_BST_CURMEAS_INTERVAL 0 2018-12-05 19:51:11.261563 < 030022111b 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.277696 > 050025901a0039 0x90 MSG_FEATURE FEATURE_BST_INHIBIT_AUTOSTART 0 2018-12-05 19:51:11.292034 < 03002311df 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.293700 > 050026901b0075 0x90 MSG_FEATURE FEATURE_BST_INHIBIT_LOCAL_ONOFF 0 2018-12-05 19:51:11.302182 < 03002411b1 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.309642 > 050027906b0112 0x90 MSG_FEATURE FEATURE_GEN_DRIVE_BUS 1 2018-12-05 19:51:11.332559 < 0300251175 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.341661 > 050028906c01e6 0x90 MSG_FEATURE FEATURE_GEN_LOK_LOST_DETECT 1 2018-12-05 19:51:11.362880 < 0300261120 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.373585 > 050029906d0311 0x90 MSG_FEATURE FEATURE_GEN_NOTIFY_DRIVE_MANUAL 3 2018-12-05 19:51:11.393220 < 03002711e4 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.405595 > 05002a906514f1 0x90 MSG_FEATURE FEATURE_GEN_WATCHDOG 20 2018-12-05 19:51:11.433752 < 03002811fc 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.437522 > 05002b90fc18ac 0x90 MSG_FEATURE FEATURE_STRING_SIZE 24 2018-12-05 19:51:11.464036 < 0300291138 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.469551 > 05002c901c053f 0x90 MSG_FEATURE FEATURE_BM_DYN_STATE_INTERVAL 5 2018-12-05 19:51:11.484244 < 03002a116d 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.501634 > 05002d906a0371 0x90 MSG_FEATURE FEATURE_GEN_POM_REPEAT 3 2018-12-05 19:51:11.514604 < 03002b11a9 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.517484 > 05002e906e017e 0x90 MSG_FEATURE FEATURE_GEN_START_STATE 1 2018-12-05 19:51:11.535053 < 03002c11c7 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.549505 > 05002f906f006b 0x90 MSG_FEATURE FEATURE_GEN_RCPLUS_AVAILABLE 0 2018-12-05 19:51:11.565299 < 03002d1103 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.581495 > 050030901d00ee 0x90 MSG_FEATURE FEATURE_BM_RCPLUS_AVAILABLE 0 2018-12-05 19:51:11.595677 < 03002e1156 0x11 MSG_FEATURE_GETNEXT 2018-12-05 19:51:11.597452 > 04003191ff58 0x91 MSG_FEATURE_NA FEATURE_EXTENSION 2018-12-05 19:52:00.412085 < 07004d18349342c1b9 0x18 MSG_SYS_CLOCK 19:52, Mittwoch, 1 2018-12-05 19:52:52.895239 < 0c006f64d2040201000000000006 0x64 MSG_CS_DRIVE 1234, 28, 000001, rev, 0, 0 0000, 0000 0000, 0000 0000, 0000 0000 2018-12-05 19:52:52.898762 > 060071e2d2040153 e2 MSG_CS_DRIVE_ACK 2018-12-05 19:52:52.905358 < 0c007064d2040201000000000004 0x64 MSG_CS_DRIVE 1234, 28, 000001, rev, 0, 0 0000, 0000 0000, 0000 0000, 0000 0000 2018-12-05 19:52:52.905423 < 0c007164d204023e001000000020 0x64 MSG_CS_DRIVE 1234, 28, 111110, rev, 0, 1 0000, 0000 0000, 0000 0000, 0000 0000 2018-12-05 19:52:52.914820 > 060072e2d204011d e2 MSG_CS_DRIVE_ACK 2018-12-05 19:52:52.914879 > 060073e2d20401d0 e2 MSG_CS_DRIVE_ACK 2018-12-05 19:52:52.931018 > 060075a301d2849f 0xa3 MSG_BM_ADDRESS 1 fwd 1234 2018-12-05 19:53:00.429297 < 07007718359342c114 0x18 MSG_SYS_CLOCK 19:53, Mittwoch, 1 2018-12-05 19:53:41.475338 < 03009204bb 0x04 MSG_SYS_DISABLE