Geräte-API
µCon-Bus
Allgemeines
Der µCon-Bus ist als Stromschleife ausgeführt. Alle Teilnehmer senden und empfangen auf derselben Leitung. Die Übertragung erfolgt im Halb-Duplex Verfahren. Daher darf immer nur ein Sender aktiv sein.
Es wird im UART-Verfahren mit einer Baudrate von 65200 Baud und 8n1 gesendet.
Die Prüfsumme (CRC) ist dabei die XOR-Verknüpfung aller vorangegangenen Bytes.
Bus-Timing
Das Bus-Timing wird vom LoDi-Rektor vorgegeben. Er schickt auch alle Kommandos. Ein µCon-Gerät darf nur dann Senden, wenn es vorher adressiert wurde. Die Antwort muss innerhalb von 600µs erfolgen.
Kommandos, die nicht beantwortet werden müssen, werden zwei Mal gesendet. Zwischen beiden Paketen liegt ein Abstand von 600µs.
Kennt ein Slave ein Kommando nicht oder wurde er nicht adressiert, muss er alle nachfolgenden Bytes ignorieren, bis im Datenstrom eine Pause von 300 µs erkannt wird.
Nicht zu beantwortendes Paket
| Rektor Write | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Rektor Data | Header | Addr | 0..n x Data | CRC | Header | Addr | 0..n x Data | CRC | ||||
| Zeit | 600µs | 26µs | 160µs | 160µs | 0..n x 160µs | 160µs | 600µs | 160µs | 160µs | 0..n x 160µs | 160µs |
Zu beantwortendes Paket
| Rektor Write | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Rektor Data | Header | Addr | n x Data | CRC | ||||||||
| Slave Write | ||||||||||||
| Slave Data | Header | Addr | n x Data | CRC | ||||||||
| Zeit | 600µs | 26µs | 160µs | 160µs | n x 160µs | 160µs | <600µs | 26µs | 160µs | 160µs | n x 160µs | 160µs |
Allgemeine Kommandos
Allgemeine Kommandos müssen von jedem µCon-Gerät verstanden und beantwortet werden. Die Antwort kann je nach Gerät jedoch unterschiedlich ausfallen.
µCon Read Version
Dieses Kommando wird vom LoDi-Rektor geschickt, um ein am Bus neu erkanntes Gerät zu identifizieren.
Der LoDi-Rektor sendet:
| Header | Addr | CRC |
|---|---|---|
| 0xB0 | 1..63 | 0x00 .. 0xFF |
Ein angesprochenes Gerät antwortet:
| Header | Addr | Gerätetyp | Major | Minor | CRC |
|---|---|---|---|---|---|
| 0xB1 | 1..63 | 0x00 .. 0xFF | 0 .. 255 | 0 .. 255 | 0x00 .. 0xFF |
Gerätetyp:
- 0x01: µCon-Booster
- 0x02: µCon-Railspeed
- 0x03: LoDi-Booster
- 0x04: LoDi-CDE
- 0x05: LoDi-Trainspeed
- 0x06: LoDi-Booster 10A
- 0x07: LoDi-Bootser 20A
- 0x08: LoDi-DC-Car-Booster
µCon Device-Poll
Dieses Kommando wird vom LoDi-Rektor in zyklischen Abständen für jede Geräte-Adresse auf den Bus geschickt. Ein angesprochenes µCon-Gerät muss darauf antworten. Auf diese Weise werden Änderungen am Bus erkannt.
Der LoDi-Rektor sendet:
| Header | Addr | CRC |
|---|---|---|
| 0xE1 | 1..63 | 0x00 .. 0xFF |
Ein angesprochener Booster antwortet:
| Header | Addr | Status | Strom 1 | Strom 2 | CRC |
|---|---|---|---|---|---|
| 0xF2 | 1..63 | 0x00 .. 0xFF | 0 .. 255 | 0 .. 255 | 0x00 .. 0xFF |
Der Status ist Bit-kodiert.
