Soldering
Turnouts
Track
Parts
Locomotives
Q&A Forum
Turnout Control
Sound
Booster Network
Decoder Installs
Block Detection
Wire Resistance
Site Map/Index
DCC for Beginners
DCC in the Garden
HO RR Photos
HOME
Manufacturers
DCC Topics
Garden RR Photos
Computer Control
Block Detection
     

LCC (Layout Command & Control)

Introduction of What I Did with LCC - Implementing Signals

I have chosen to use LCC to implement simple signaling on my layout. I don't claim to be an expert on LCC and after this signaling project, I don't know that I will use LCC for anything else at this time. There are a lot of people who are more experienced than I with LCC, but I found some information to be lacking on the internet. I hope to fill that gap here. If you do anything other than what I show below, I probably won't be able to help you.There is an LCC chat group with people who are more experiemced than I. There is a lot to know to implement LCC. I won't duplicate all this information. Read and view all the resources I list here before continuing with what I have written below. I should also warn you that with all the capabilities of LCC, it is is not trivial to implement your first signal. While I hope I can help you with that, I need to say, that if you need a friend's help to set up a locomotive decoder, then you will likely need help setting up your LCC signals.

1. Read the manuals of the RR-Cirkits products you intend to use. Their manuals are on-line. The Signal-LCC manual is 58 pages. READ THE WHOLE THING. https://www.rr-cirkits.com

2. Getting Started with RR-CIrKits Signal-LCC: A Beginner's Guide
https://layoutcomnand.store/blog/lcs-article-getting-started-signallcc

3. On YouTube, visit the "The LCC Channel." I recommend watching all the videos. There are about 18 of them. I had to watch 5 of them twice.

4 Groups.io chat group for LCC https://groups.io/g/layoutcommandcontrol/topics This group is very active and I have gotten some of my questions answered here.

Please note that I don't claim to be an LCC expert. I'm just telling you what I did for a 3 aspect signal that worked. I was worried troubleshooting could be a challenge, so I set some things to a setting I hoped would surely work. It did! While it took some time to get the first signal operational, I eventually was able to wire in a signal in about 45 minutes and set the configuration in the signal node in about 30-45 minutes. I installed 12 signal masts and only made two mistakes that were easy to find and fix.

What You Can Do with LCC / What I Chose to Implement

LCC is intended to off-load all the things that are not directly commanding your locomotives. You can use LCC with throttles and LCC command stations. TCS (Train Conrol Systems) make such equipment. LCC can control your turnouts. You can implement CTC panels. It can work with JMRI for sophisticated controlling systems. And of course, signals.

LCC's bus system is about 10X faster than DCC buses. So if you have a big layout with lots of operators, you may find your DCC is bogged down. LCC can help fix that. My layout is only 760 square feet and will only have 3 or 4 operators. So this isn't a problem for me.

I didn't want to have to boot up my computer and launch JMRI each time when running my trains. With LCC, if you don't have a very complex system and haven't implemented a CTC panel on your computer, you don't need JMRI in everyday use. You will need to use JMRI to initially configure the LCC modules. Now that I've done that, I don't need the computer.

The Signal-LCC nodes (you read the above resources, right?) have up to two variables per logic statement. There is a way to gang them together if you need more, but I did not. Also there is a way to sequence logic statements. For example, if the next block is occupied and you want a red aspect, you don't need to execute the statements for yellow and green.

On the other hand, if you don't sequence them and make each one independent, then trouble shooting is limited to the single logic statement that controls the aspect you are having trouble with. This is what I choose to do. This approach may be a few microseconds slower, but for my small layout, a few microseconds is not an issue.

I have not implemented detecting turnout position yet. It should be easy to use my Tortoises' extra switch terminals to provide inputs to my OI-IB-8. That will surely add a little complexity to my logic. I will probably do this at some point to gain more experience with LCC.

Lastly, I did not need to use the Track Circuits feature of the Signal-LCC.

Getting Started

If you worked with the Beginner's Guide above, you probably have already found out that the JMRI ability to indicate what parameter you have not saved only works some of the time. To the right of each option, is a Write button. Be sure to press it. It won't save to the node until you do this. I highly recommend that you exit JMRI's LCC Pro after each screen you work on. You will get an error message for each thing you forgot to save. So it is best to exit after each screen and only get an error message or two. Exiting LCC Pro and re-entering only takes a few seconds.

In case you haven't figured it out yet, You need to launch JMRI's Panel Pro. When your computer is connected to your LCC interface, you will see LCC and then Open LccPro. Click on that.

LCC "events" (Again, you read the documentation, right?) are 64 bits long. 64 bits are pretty ugly. So they are displayed as 8 pairs of hexadecimal numbers. You don't need to know hexadecimal to use LCC. Whew! I'm just telling you what those ugly pairs of numbers and letters separated by periods are. You will need to make notes of these and will have to enter a few that your recorded as you go.

Each node has a unique address. These addresses preceed all events. Each node you purchased has the unique address on the pacakge. Keep these and note on them where you located the node on your layout or however you want to identify them.

Node ID

You should see each node on your computer. (I installed mine one at a time.) Click on the Configure of your first node. Give your node a meaningful name.

Initial Electrical Check of I/O (Inputs/Outputs)

I used NCE's BD20's for block detection and the RR-Cirkits' OI-IB-8 to interface with the BD20's. Or you can use the RR-Cirkits' product for block detection. The choice is yours. I used the BD20's because I installed them several years ago before getting into LCC and learning that RR-Cirkits had a block detector.

If you use the BD20's and the OI-IB-8, hook up the BD20's as in NCE's instructions. You will connect the #2 terminal of the BD20 to the minus(-) input on the OI-IB-8. You will need to connect all the corresponding plus(+) input of the OI-IB-8 to the power supply you are using for the BD20's.

Run a locomotive over every block and make sure each block detector works well and the corresponding LED on the OI-IB-8 lights correctly. If you hare using turnout position indication, hook them up to and try them out. This test is important and avoids early hair loss.

Now set up your block detector inputs in the Port I/O-1 of the LccPro for your Signal-LCC node. First, give an input a meaningful name. I numbered my block detectors and noted the name I gave that block. Example: BD20 Knoxville main. Leave Output Function to None. Skip down to Input Function and set it to Normal. Optional is to skip down to Interval 1. I set it to 10 milliseconds to debounce the block detector input. Do all these for each of your block detectors. If you are using turnout position, you would do the same thing for them as well.

Note the event that indicated that a block is on (true or occupied) and also note off. If you block detector is on a different node, you will need that node's complete event number with its address. If you bought all your nodes from the same company and about the same time, you will proably only need to note the last four bytes of the event (example: 10.0A.02.BE) Regardless what you put in your notes, you will need all 8 hexadecimal bytes for everything you do in LCC.

Before hooking up a signal, use a 9V battery in series with a resistor and test your signals before wiring them up to your layout. I just use a 470 ohm resistor because I have them on hand. The Tomars come with 300 ohm resistors. For use with a 9V battery, I'd put 2 300 ohm resistors in series with the signal for this test. The positive end of the battery (with the series ressistors) goes to the white wire of the Tomar signal. Try the greeen wire attached to the negative terminal of the battery and the green aspect should light.

If you are using a 3 over 2 signal, you will have 2 yellow and 2 red wires out of the signal. I used a Sharpie to mark the wires coming from the 2 aspect head.

If you find you need to strip the wires a little longer on the signal, do so VERY CAREFULLY. Use an appropriate wire strips for small wires. I am fortunate to have a thermal wire striper that melts the insulation off the wire without putting any stress on it.

Now wire up a signal and try it out. If you are using Tomar signals, they use what is called "common anode." That means positive like the blue wire on a locomotive decoder. The Signal-LCC defaults to common anode. Move the jumper on the OI-IB-8 if you are using common cathode signals. Again, you read their manual, right?

Direct Lamp Control

Now you should use JMRI to verify that your Signal-LCC is driving your signal correctly. You don't have to do this, but I'll just say, I'm 66 and my hair isn't falling out nor turning gray. I must be doing something right.

Set up Direct Lamp Control. Note that it says at the top of the screen, "Direct control of lamps that are not used by any mast." I suspect this control won't work once you get everything set up. For now, this will assure you that your have your signal masts hooked up correctly to your node before preceeding further. No need to loose any more hair!

Now is a good time to mention that which tabbed window you are on in Win 11 are not very obvious. I thought about trying to find a way to change that. But I settled on giving each lamp description a number to make it even more obvious which screen I was working on. So enter a meaningful lamp name including preceeding it by the lamp number.

Note the lamp event that sets the lamp on. I only needed to note the last two bytes of the event, such as 00.A2. (In this example 00 is one byte and A2 is the other.) Note the (C). This is a consumer. Don't change it. Later, you will need this event number. I don't think I needed the event number for turning the lamp off, but I noted it anyway.

I set my Lamp Fade to Incadescent. This is so that the LED aspects mimicthe fade up and down as they are turned on and off. You don't have to do this.

Set the Lamp Selection to the head of the Signal-LCC that you wired your signal to and also the color of the particular aspect. So for your first signal that you want green, set this to #1 H1-G.

Now go back above a little bit to Event Set Lamp On. Click on the More button. Under that, you will find Trigger. Click on that and your signal should turn on. Also find Event Set Lamp Off. Using it's More and Trigger buttons, your signal should turn off.

Repeat above for the other aspects of your signal head. Yellow will be #2 H1-Y and red will be #3 H1-R.

You have now completed your wirng check.

Conditionals

Now you will configure your Signal-LCC to operate automatically. Do one mast signal head at a time. The Conditionals section is the heart of your Signal-LCC configuration. Proceed carefully. Here is my simple plan:

1. If a train is sitting on the track facing a signal, that aspect (signal) will be red (stop) if the next block is occupied. The block after that does not matter.

2. If the next block is unoccupied, but the block after that is occupied, the aspect will be yellow (approach).

3. If the next two blocks are unoccupied, the aspect will be green (clear).

Note when thinking of the next two blocks, there are four possibilites of occupancy/unoccupancy. Think through all four possibilites. For any given possibility, only one aspect (red, yellow, or green) will be lit. So what I will show below, is that there will only be one, independent logic statement for each aspect. For example, if your green and red work, but your yellow does not, just look at the logic statement that drives the yellow aspect. Keep it simple, right?

Here we go. If I don't mention something, leave it alone.

For a red aspect:

For your first logic statement, give it a meaningful description. I suggest you start with the logic statement number. Keep an eye on things. One of my early mistakes was that I accidentally edited the wrong logic statement. Make sure you periodically do your backups.

For the Function, I selected Last (Single).

For Track Speed, I set it to the speed the aspect will indicate. So for red, I set it to Stop. I don't know that you need to mess with track speed for my simple logic statements.

For Event to Set Variable #1 True, enter the event ID for the block detector for the next block that is on (occupied).

For Event to Set Variable #1 False, enter the event ID for the block detector for the next block that is off (unoccupied).

For Logic Operation, select V1 Only. For the red aspect, you will not be using variable #2, so skip past all the variable #2 choices. Go to the Action section underneath variable #2.

For Action When Conditional True, select Send Then Evaluate Next.

For Action When Conditional False, select Send Then Evaluate Next.

Go to Action 1. Select Condition to Immediate if True. Note the event ID associated with it.

Select the Action 2 tab. Select Condition to Immediate if False. Note event ID associated with it.

For a yellow aspect:

I used the next logic element. There is some advice that you should use every other logic element in case you need to make any changes in the future. Not a bad idea. So maybe skip the second logic element and go to the third logic element.

For your logic statement, give it a meaningful description.

For the Function, I selected Last (Single)

Before we go on, get your head around this: The next block needs to be unoccupied. It's block detector will be OFF. The block after that will be ON. Also, you will be using two variables.

For Track Speed, I set it to the speed the aspect will indicate. So for yellow, I set it to Approach. I don't know that you need to mess with track speed for my simple logic statements.

For Event to Set Variable #1 True, enter the event ID for the block detector for the next block that is off (unoccupied).

For Event to Set Variable #1 False, enter the event ID for the block detector for the next block that is on (occupied).

For Logic Operation, select V1 AND V2.

For Event to Set Variable #2 True, enter the event ID for the block detector for the block that is two blocks away is on (occupied).

For Event to Set Variable #2 False, enter the event ID for the block detector for the next block that is two blocks away is off (unoccupied).

For Action When Conditional True, select Send Then Evaluate Next.

For Action When Conditional False, select Send Then Evaluate Next.

Go to Action 1. Select Condition to Immediate if True. Note the event ID associated with it.

Select the Action 2 tab. Select Condition to Immediate if False. Note event ID associated with it.

For a green aspect:

I used the next logic element. There is some advice that you should use every other logic element in case you need to make any changes in the future. Not a bad idea. So maybe skip the second logic element and go to the fifth logic element.

For your logic statement, give it a meaningful description.

For the Function, I selected Last (Single)

For Track Speed, I set it to Clear.

Before we go on, get your head around this: The next block needs to be unoccupied. It's block detector will be OFF. The block after that will be OFF as well. Also, you will be using two variables.

For Event to Set Variable #1 True, enter the event ID for the block detector for the next block that is off (unoccupied).

For Event to Set Variable #1 False, enter the event ID for the block detector for the next block that is on (occupied).

For Logic Operation, select V1 AND V2.

For Event to Set Variable #2 True, enter the event ID for the block detector for the block that is two blocks away is off (unoccupied).

For Event to Set Variable #2 False, enter the event ID for the block detector for the next block that is two blocks away is on (occupied).

For Action When Conditional True, select Send Then Evaluate Next.

For Action When Conditional False, select Send Then Evaluate Next.

Go to Action 1. Select Condition to Immediate if True. Note the event ID associated with it.

Select the Action 2 tab. Select Condition to Immediate if False. Note event ID associated with it.

You have now created the logic that will control the aspects. Next you will link the logic outputs to the actual aspects.

Rule to Aspect

Set Mast Processing to Normal. I think after you set this up, your direct control of signals and using the triggers won't work. Set Mast Processing back to Unused if you want to use direct control. You probably won't have to do this at all. So go ahead and set it to Normal and continue on.

Give your Mast Description a meaningful name. Include the mast number to help avoid accidental changes to the wrong mast in the future.

Set Lamp Fade to Incadescent if you want a aspect to mimic coming on like a signal that had a incadesent lamp. This is optional. Try it and see what you think.

See the Rules tabs. You will set up one rule for each aspect.

For Rule 1, set it to Stop.

Under Set Aspect, you will see (C) Event to Set Aspect. Note: Aspects are cleared automatically by logic.Yep, that seems to work. So when a new aspect is set, the previous one goes out. You don't need to turn off the previous aspect. Enter the on (true) event ID that you noted under Immediate if True under the Conditionals above for the Stop aspect..

Under Appearance and the Lamp 1 tab, select #3 H1-R.

You have now linked your logic conditionals to a particular aspect on your first mast. If you have a more complicated aspect that involves multiple lamps lit, here is where you would set up these other lamps. Just select the other lamp tabs.

When you read the Signal-LCC manual, you should have noted that you can use any of the lamps on it. This allows you to not waste any outputs on the Signal-LCC, like the Lunar outputs, should you want to. If you do this, make sure you keep GOOD notes if you don't want to lose that last hair on your head!

Continue with Rule 2, set it to Approach. You will have to scroll down to see Approach.

Under Set Aspect, you will see (C) Event to Set Aspect. Note: Aspects are cleared automatically by logic. Enter the on (true) event ID that you noted under Immediate if True under the Conditionals above for the Approach aspect.

Under Appearance and the Lamp 1 tab, select #2 H1-Y. When I was first doing this, I was wondering if the Lamp 1 is the same lamp as under the stop aspect. It's not. It is simply 1 of the 4 lamps you could have come on with this aspect.

Continue with Rule 3, set it to Clear/Proceed. You will have to scroll down to see Clear/Proceed.

Under Set Aspect, you will see (C) Event to Set Aspect. Note: Aspects are cleared automatically by logic. Enter the on (true) event ID that you noted under Immediate if True under the Conditionals above for the Clear aspect.

Under Appearance and the Lamp 1 tab, select #1 H1-G.

You are done!

Now is a good time to click on the Backup button. You might also want to click on the Restart button if you have any doubt about the state of your Signal-LCC.

Power up your track and run a locomotive over your track and watch your mast signal head and verify that it works properly.

 

Copyright by Allan Gartner 1996 - 2026 © All rights reserved. You may print this for your own, personal, non-commercial use. Non-commercial, non-personal reproduction may be requested by visiting www.WiringForDCC.com/writeme.htm . All users, commercial and non-commercial, may link only to this site at www.WiringForDCC.com.

Thanks to all who contribute to this site and the Q&A forum!