Model railroading has come a long way from controlling a single engine on a track by adjusting the voltage with a variable transformer. Independently controlling multiple engines is now well address by DCC, which is a good standard for controlling rolling stock. It can also be used to control output-only fixed items on a layout, like turnouts, crossing gates, and the like. However, DCC does not address getting any significant information back from the layout, such as confirmation of turnout positions, occupancy detection, whether a circuit is intact and drawing power, a fuse has tripped, etc.
The MorBus (Modelrailroad Bus) was created to get data to and from fixed devices (not rolling stock) of a layout. DCC is for rolling stock and the MorBus is for everything else.
The physical MorBus is a cable that carries both a CAN bus and a significant amount of DC power. The vast majority of devices should not need their own separate power supply, nor should they take power from the DCC bus. The DCC power budget may already be stretched, and its capabilities should be reserved to leave as much as possible for rolling stock since that has no other option. The DCC voltage can also vary widely between layouts, making it more difficult for devices properly draw the power they need accross all cases.
The MorBus has a single power standard that was designed to be able to provide power for ordinary motors and lights and other devices. Single devices can draw over 40 Watts, although that is expected to be unusual. The single-cable architecture makes it easy to install and easy to provide products that only require a connection to the MorBus without additional power or communication connections.
The MorBus uses CAN for communicating to and from fixed devices on the layout. The CAN lines are carried on the same cable as the power, making it easy to install and to design devices around.
All data communication, including that ultimately delivered to rolling stock via DCC, is transmitted over the MorBus. This allows for a single portal to provide complete control over a layout. This includes everything from setting speeds of engines, to setting turnouts, to reading occupancy and other sensors, to controlling signal lights.
To allow for compatible software and hardware to control any MorBus-based layout, the MorBus specification includes a definition of how all MorBus actions can be communicated over a bi-directional stream of bytes, such as a TCP connection.
The MorBus also specifies virtual byte streams to individual devices, carried over the CAN bus. Some device actions can be controlled or read using individual CAN frames for that purpose. However, CAN frames are limited to a maximum of 8 data bytes. Some interactions, like getting or setting user-visible name strings, require more bytes. The virtual byte streams to and from devices can be used for such purposes.