Wired network

The wired network of the Winter Train is based on a simple master-slave bus. The bus is called Abus and consist of a half-duplex hardware bus using differential signaling according to RS485. One master is controlling all traffic at the bus. Several slaves can be connected to the bus, however only one slave at a time is selected by the master for transmission. Master and slaves are implemented as various types of Arduinos.

The master is further connected to a Raspberry PI providing web access to the Abus network.

Abus Node ID

Slaves are identified by a one byte identifier as follows:

ID Node name Description
70 FEC1 Field Element Controller and RBC communication module

Abus Package specification

An Abus package consists of a total of 20 bytes:

Index Type Usage
0 byte Destination address
1 byte Sender address
2 byte Package type
3 - 19 Payload as per package type

Modul RBC_COMM / FEC1

This module is equipped with a radio module and is used as communication link between the trains (OBU) and the RBC. Further it acts as FEC.

Type 1, Status poll

To slave:

Index Type Content Values
2 byte Package type 1

From slave: Field element status

Index Type Content Values
3 byte Status of Signals and LX B0: Signal I, B1: Signal U, B2-3: Status of LX
4 byte Status of points B0:: 01, B1: 02, B2: 03

Type 2, Command to Signal

To slave: Field element command

Index Type Content Values
2 byte Package type 2
3 byte Command to Signals 1: Open I, 2: Open U, 9: Close all signals

From slave: Empty

Type 3, Command to Level Crossing

To slave: Field element command

Index Type Content Values
2 byte Package type 3
3 byte Command to Level Crossing 1: De-activate LX, 2: Activate LX

From slave: Empty

Type 5, Command to Point Machines

To slave: Field element command

Index Type Content Values
2 byte Package type 5
3 byte Command to Point Machines 1: 01 Right, 2: 01 Left, 3: 02 Right, 4: 02 Left, 5: 03 Right, 6: 03 Left

From slave: Empty

Type 10, Position Report Poll

Request latest position report for train x

To slave:

Index Type Content Values
2 byte Package type 10
3 byte Train ID

From slave:

Index Type Content Values
3..7 byte[5] Balise ID
8,9 int Actual distance from balise to front of train, with sign
10 byte Speed
11 byte Status B0-2: operational mode, B3-4 driving direction, B5-6: Track polarity, B7: MAreceived
12 byte Validity B0: Position report valid
13, 14 int Relative distance counter

Type 11, Movement Authority

MA to be transmitted to train.

To slave:

Index Type Content Values
2 byte Package type 11
3 byte Train ID
4..8 byte[5] Balise ID
9,10 int Distance to EOA from balise, with sign
11 byte Allowed speed

From slave: Empty

Type 20, Get uptime

Request module uptime.

To slave:

Index Type Content Values
2 byte Package type 20

From slave: Uptime

Index Type Content Value / Notes
3..6 unsigned long Uptime in mS since module boot Index 6 is MSByte

it/wintertrain/implementation/abus.txt · Last modified: 2016/10/01 11:31 by jabe