Hardware Support: CAN: Controller Area Networks

There's an emerging trend to develop model-railroad control systems that are based on standard CAN technology. JMRI provides support for the development and use of these. Two systems are described below.

CAN Implementations

OpenLCB

OpenLCB logo

OpenLCB is a group of hobbyists and manufacturers who have come together to produce a future-oriented layout control bus, also called OpenLCB.
JMRI includes basic support for OpenLCB, and more is being developed along with OpenLCB itself.

NMRA logo

The NMRA has decided to adopt OpenLCB and standardize it as Layout Command Control (LCC, formerly NMRAnet).

MERGCBUS

MERGCBUS logo MERG logo

MERGCBUS is an 'open source' or public domain project hosted by the Model Electronic Railway Group (MERG), following years of development by MERG members Mike Bolton and Gil Fuchs.
Their intention was to develop a system for comprehensive layout control based on a general purpose Layout Control Bus (LCB).

They adopted the Gridconnect scheme but with a slight modification.
The header is always HEX bytes and maps directly to the PIC CAN registers, left justified.

JMRI MERGCBUS support is available for linking JMRI with MERGCBUS, aimed at users.
Extensive details of the MERGCBUS protocol are available to developers, see the MERGCBUS Wiki.

There are many MERG module kits available to help running a layout.
Modules can be thought of as

The 3,000+ MERG members are encouraged to to build and design their own modules, and with MERG being over 50 years old, there is a strong peer review process behind MERGCBUS.
Module firmware updates can be performed over the MERGCBUS network

JMRI includes support for MERGCBUS events, also DCC over MERGCBUS via a CANCMD kit ( a fully featured DCC Command Station, mini booster and track programmer ). This interfaces to JMRI and / or MERG handheld controllers over a MERGCBUS network.

MERGCBUS events are sent as one-to-many, enabling multiple modules to listen and change status on 1 single event. eg.

JMRI can send and receive events for any module node and any module event.

Supported Hardware

Computer Interfaces

Various CAN-USB adapters are available:

TCH Technology
TCH Technology CAN/USB which provides a high-speed connection for model railroad use
grid connect
GridConnect
lawicell
LAWICEL AB CANUSB and CAN232 adapters.
MERG CANUSB4
MERG CANUSB4 A MERGCBUS to USB interface, available in kit form to MERG members.

Other CAN Hardware Interfaces

Rocrail
The CAN-GC1e Ethernet module can connect to JMRI via MERG Network Interface
MERG CANPiCap
The CANPICAP enables direct MERGCBUS connection to a Raspberry Pi via its 40 pin I/O connector, available in kit form to MERG members.
MERG CANPiWi
The CANPiWi is based on the Raspberry Pi Zero W, and is an interface between Engine Driver / WiThrottle and MERGCBUS.

Connecting

JMRI can provide the usual Sensor and Turnout features, once configured for OpenLCB or CBUS "Events".

Example System Naming :

Sensor Turnout Light
OpenLCB
MERGCBUS MS18
( Event 18 Active / Inactive )
MT+N2E18;-N2E18
( Node 2 Event 18 Thrown / Closed )
ML18
( Event 18 On / Off )

JMRI can connect to CAN networks in several ways:

Via USB

To use any of the above adapters, select the appropriate device/connection type in the JMRI Preferences. If using a GridConnect or Lawicel device, be sure to set the appropriate baud rate under Advanced Preferences.
The TCH Technology adapter does this automatically, so no setting is required.

To connect to a CANUSB4, select "MERG" as system manufacturer, then "CAN via MERG CAN-RS or CAN-USB" as system connection.

TCP/IP Network

It's also possible to attach via a TCP/IP connection (EtherNet or WiFi). This can either go to another JMRI instance running e.g. an OpenLCB hub, directly to an IP-CAN adapter, or a CAN Server. To configure one of these, open the Connections tab in the JMRI Preferences.

OpenLCB

MERGCBUS

MERGCBUS Server is a Node.js program, licensed under MIT to allow multiple network connections to a MERG CANUSB4.

JMRI CAN Tools

Documentation

JMRI Help

OpenLCB Help

MERGCBUS Support

JMRI Scripting for CAN frames.

Third Party info

OpenLCB.org

merg.org.uk

wikipedia.org/wiki/CAN_bus