Layout Command Control for Modules


NOTE: LCCM is still under development.

LCCM is a low cost, easy to use and heavily extendable implementation of the National Model Railroad Association (NMRA) standard Layout Command Control (LCC) for use with railroads build in modules.

Building and running model railroads in separate compatible modules has its pros and cons. The module standards (Fremo, Free-mo, NTrack, T-Trak) all defines the wiring and command control (typically DCC) of driving and controlling trains. The only definition about controlling everything else (Turnouts, signals, lightning, track occupancy…) is that it must be completely separated from train controlling system.

LCCM will help you control your modules, both at home, in your club and at events running with other module owners.

“But I am not using modules…” – No problem, you can use LCCM to clean up the wire mess that is part of most fixed layouts, and you don’t have to use LCC if you don’t want to, there are API and virtual managers that you can use to control your layout with LCCM clients.

What is the issue with just using LCC nodes in every module? Not much, that was exactly what LCC was intended for, but unfortunately LCC nodes are expensive, really expensive if you compare it to the control needed for a single module. The LCC protocol and operation specification was made for larger computers and micro controllers, and is not very well suited for resource limited micro controllers like Arduino.

So, as state above: LCCM is a lite and low cost version of LCC, which can be used standalone or combined with LCC.

Arduino Nano

The minimum LCCM contains two cable connectors, a few wires, and two standard boards. The boards are an RS485 communication board and the Arduino Nano micro controller board.

The LCCM modules are clients for a master and will execute the tasks it receives from the master and will return result and status information to the master.

To help the master module, a LCCM module contains extended handler logic. It provides functions like blinking a LED with a specified frequency, fade light in and out, control the slow speed switching of a turnout with servos, and using relays to change the frog polarity, when the servos are halfway through the switch. This logic ensures that the number of messages needed between the master and the LCCM module is kept to a minimum.

Unlike LCC, the LCCM uses a master / client protocol, which greatly simplifies the implementation, so modules can be build on ultra low cost controllers like Arduino Nano. 

If the master is an LCC node, it will let you configure the node as if all the connected LCCM functionality was part of the LCC node itself. This means that you can use your favourite LCC configuration tool and it will see it as a single LCC node.

Why not just use DCC to control the layout? Well, DCC is basically a one way communication, it has a limited address space, and runs the often very busy bus at only 8K bits per second. LCC was made to solve these issues, supporting two way communications at 128K bps and has a huge address space.

What about LocoNet, Xpress Net and CMRI? These are all proprietary networks that probably could solve your needs, but you will be locked into their systems and will probably pay a premium cost to build it.

LCC is an open public standard and hardware from any vendor will work together, so you are able to select the product that matches best regarding functionality and price.

LCCM uses many of the design ideas from LCC, it contains controllers on a straight line noice tolerant bus, terminated in each end and options to place power providers at any place in the bus. LCCM also use module configuration like LCC, so you do not need to be a programmer and perform any programming of the nodes.