TrackManager (DCC & DC)
Welcome to DCC-EX TrackManager
A first for the DCC & DC model railroading world.
EX‑CommandStation is now a dual Command Station for both Digital Command Control (DCC) and analogue (DC) layouts.
With just a single EX‑CommandStation and a compatible throttle you can simultaneously run both your DCC Locos and analogue DC Locos with road number IDs as throttle addresses from 1 to 10239 to control and drive them on multiple separate insulated tracks/districts.
Track Manager Modes
By default the outputs of a Motor Driver are set to DCC. For Motor Drivers with two outputs one will be MAIN and one will be PROG. These, and any additional outputs, can be set to a number of different modes, not just DCC.
Valid Modes are:
Option |
_INV |
_AUTO |
Notes |
|
---|---|---|---|---|
|
✓ |
✓ |
✓ [2] |
|
|
✓ |
|||
|
✓ |
✓ [2] |
✓ |
Motor drivers with brake pin only |
|
✓ |
✓ |
✓ |
ESP32 microcontrollers only |
|
✓ |
Reserved for future use |
||
|
✓ |
Deprecated alias of AUTO
but only when preceeded by a sperate MAIN
command.
With special alias of DCX
for DC_INV
Requirements (DCC and DC)
DCC Requirements
Nothing special or extra is required for any of the DCC modes.
DC Requirements
To run DC locos with your EX‑CommandStation you will need:
A Motor Shield with a brake pin.
(See the list of compatible boards at TrackManager DC compatible boards.)
(The EX‑CSB1 and EX‑MotorShield8874 have a brake pin.)A controller that can be used with the EX‑CommandStation.
No additional external DCC decoders are required for DC (PWM) track assignments, and a single EX‑CommandStation is the only hardware needed for full functionality.
Note: An additional suggested precaution is to add 4 fuses on wires (-b +b, -a +a) to the EX‑CommandStation connections. Use 2A fuses for the Standard Motor Driver or 5A fuses for the EX‑MotorShield8874 and other the larger motor drivers.
Additional Technical Information
If you are interested in the technical details of DC Pulse Width Modulation (PWM) visit our DCC vs DC PWM page.
Changing a Motor Driver Output to a different DCC mode
You can change any output of the Motor Driver either temporarily or permanently (every time the EX‑CommandStation starts).
Temporarily Changing to a Different DCC Mode
There are several ways to temporarily change a Motor Driver Output to a different DCC Mode:
By issuing a command to the the EX‑CommandStation
By using the TrackManager feature in Engine Driver or EX‑Toolbox
By creating EXRAIL Routes that can the activated in your throttle app.
Using Engine Driver or EX-Toolbox
Issuing a command (DCC)
You can issue DCC-EX Native Commands to the EX‑CommandStation to change the output modes with Engine Driver, EX‑Toolbox, EX-Installer Device Monitor, EX‑WebThrottle or the Arduino IDE Serial Monitor.
Open the Serial Monitor (or TrackManager page in Engine Driver or EX‑Toolbox)
Issue the following command.
Note that in this example I am setting output B to be DCC MAIN.
<= B MAIN>
Note the track power is immediately turn off anytime you change the track mode.
Creating a Route (DCC)
Using a Route will set a specific loco number to be associated with DC output. This is a permanent relationship, in that it will be associated every time you start the EX‑CommandStation.
We will be adding some instructions the myAutomation.h
file a re-uploading the Command Station software your EX‑CommandStation.
Re-run the EX‑Installer selecting the options you would normally choose, but of the last page before loading you also select
Advanced Config
, before clicking the Advanced Config button.This will take you to the
Advanced Configuration
page, where you will have two (or possibly more) edit regions. One will be labelledmyAutomation.h
.in the
myAutomation.h
edit region you will need to type or copy the something like the following.
Note that in this example I am setting output B to be DCC MAIN.
ROUTE(3, "Set Output B to DCC MAIN") // 3 is the sequence identifier it must be unique
SET_TRACK(B,MAIN) // Set Track B to DCC MAIN
DONE
Then Load the Command Station software as normal (on the next page)
Note the track power is immediately turn off anytime you change the track mode. you may wish to add SET_POWER( track, ON/OFF )
after the SET_TRACK()
command. e.g. SET_POWER(B ON)
.
Permanently Changing the DCC Mode
By default the outputs of a Motor Driver are set to DCC. For Motor Drivers with two outputs one will be MAIN
and one will be PROG
. These, and any additional outputs, can be set to a number of different modes, not just DCC.
You can set any Motor Driver output to be a specific DCC mode every time the EX‑CommandStation starts up. (If you wish, at any time you can subsequently temporarily change it any other DC or DCC mode.)
This process is similar to a the ‘Route’ process in the previous section but will happen automatically at start-up rather than when you select the route.
We will be adding some instructions the myAutomation.h
file a re-uploading the Command Station software your EX‑CommandStation.
Re-run the EX‑Installer selecting the options you would normally choose, but of the last page before loading you also select
Advanced Config
, before clicking the Advanced Config button.This will take you to the
Advanced Configuration
page, where you will have two (or possibly more) edit regions. One will be labelledmyAutomation.h
.in the
myAutomation.h
edit region you will need to type or copy the something like the following.
Note that in this example I am setting output B to be DCC MAIN.
AUTOSTART
SET_TRACK(B,MAIN) // Set Track B to DCC MAIN
DONE
Then Load the Command Station software as normal (on the next page)
Note the track power is immediately turn off anytime you change the track mode. you may wish to add SET_POWER( track, ON/OFF )
after the SET_TRACK()
command. e.g. SET_POWER(B ON)
.
Changing a Motor Driver Output to DC
You can change any output of the Motor Driver either temporarily or permanently (every time the EX‑CommandStation starts).
Controlling the output not the loco
It is important to note a key difference between controlling a DCC loco on a DCC output/track, and controlling a DC loco on a DC output/track.
In the case on DCC, you select the individual DCC address of the loco and you control just that loco regardless of how many other DCC locos are on the track.
Note
If you plan to also use DCC, when specifying a DC address, avoid using one of your existing loco DCC addresses.
Otherwise a command sent to control a DC output/track will also operate your DCC loco with the same address.
In the case of DC it is very different. You control the whole output/track and all the locos on it simultaneously. To do so we must assign that output/track an address. It is not a real DCC Address, but from the perspective of your controller, it will think it is a DCC Address.
When you read further just remember that the address assigned DC output/track is not really the loco. It is an address for the output/track.
Temporarily Changing to DC
There are several ways to temporarily change a Motor Driver Output to DC:
By issuing a command to the the EX‑CommandStation
By using the TrackManager feature in Engine Driver or EX‑Toolbox
By creating EXRAIL Routes or Automations that can the activated in your throttle app.
Using Engine Driver or EX-Toolbox (DC)
Engine Driver has specific TrackManager features that allow you to alter the output modes. See the TrackManager control Engine Driver page for details.
EX‑Toolbox has specific TrackManager features that allow you to alter the output modes. See the Track Manager page for details.
Issuing a Command (DC)
You can issue DCC-EX Native Commands to the EX‑CommandStation to change the output modes with Engine Driver, EX‑Toolbox, EX-Installer Device Monitor, EX‑WebThrottle or the Arduino IDE Serial Monitor.
Open the Serial Monitor (or TrackManager page in Engine Driver or EX‑Toolbox)
Issue the following command
note that in this example I am setting output B to be DC and to be assigned to the Loco Address 1225.
<= B DC 1225> // Set track B to DC mode with address 1225
Note the track power is immediately turn off anytime you change the track mode.
Creating a Route (DC)
Using a Route will set a specific loco number to be associated with DC output. This is a permanent relationship, in that it will be associated every time you start the EX‑CommandStation.
We will be adding some instructions the myAutomation.h
file a re-uploading the Command Station software your EX‑CommandStation.
Firstly you will need to select an address (1-10239) which will be assigned to the DC output. If you are also using using DCC on another output, pick a number that will not conflict with any of your own loco’s addresses.
Next re-run the EX‑Installer selecting the options you would normally choose, but of the last page before loading you also select
Advanced Config
, before clicking the Advanced Config button.This will take you to the
Advanced Configuration
page, where you will have two (or possibly more) edit regions. One will be labelledmyAutomation.h
.in the
myAutomation.h
edit region you will need to type or copy the something like the following
note that in this example I am setting output B to be DC and to be assigned to the Loco Address 1225.
ROUTE(1, "Set Output B to DC 1225") // 1 is the sequence identifier it must be unique
SETLOCO(1225) // Assign Loco 1225
SET_TRACK(B,DC) // Set Track B to DC with address 1225
DONE
Then Load the Command Station software as normal (on the next page)
Note that this will make the output DC if you activate the route in you controller. See Controlling a DC Loco for more information.
Note the track power is immediately turn off anytime you change the track mode. you may wish to add SET_POWER( track, ON/OFF )
after the SET_TRACK()
command. e.g. SET_POWER(B ON)
.
Creating an Automation (DC)
Using an Automation rather than a Route creates a temporary association between a loco address and the DC output. It takes whatever address you currently have selected in the controller and assigns that to the output.
We will be adding some instructions the myAutomation.h
file a re-uploading the Command Station software your EX‑CommandStation.
Firstly you will need to select an address (1-10239) which will be assigned to the DC output. If you are also using using DCC on another output, pick a number that will not conflict with any of your own loco’s addresses.
Next re-run the EX‑Installer selecting the options you would normally choose, but of the last page before loading you also select
Advanced Config
, before clicking the Advanced Config button.This will take you to the
Advanced Configuration
page, where you will have two (or possibly more) edit regions. One will be labelledmyAutomation.h
.in the
myAutomation.h
edit region you will need to type or copy the something like the following
note that in this example I am setting output B to be DC and to be assigned to the Loco Address 1225.
AUTOMATION(2, "Set Output B to DC") // 2 is the sequence identifier it must be unique
SET_TRACK(B,DC) // Set Track B to DC
DONE
Then Load the Command Station software as normal (on the next page)
Note that this will make the output DC if you activate the route in you controller. See Controlling a DC Loco for more information.
Note the track power is immediately turn off anytime you change the track mode. you may wish to add SET_POWER( track, ON/OFF )
after the SET_TRACK()
command. e.g. SET_POWER(B ON)
.
Permanently Changing To DC
By default the outputs of a Motor Driver are set to DCC. For Motor Drivers with two outputs one will be MAIN
and one will be PROG
. These, and any additional outputs, can be set to a number of different modes, not just DCC.
You can set any Motor Driver output to be DC every time the EX‑CommandStation starts up. (If you wish, at any time you can subsequently temporarily change it any other DC or DCC mode.)
This process is similar to a the ‘Route’ process in the previous section but will happen automatically at start-up rather than when you select the route.
We will be adding some instructions the myAutomation.h
file a re-uploading the Command Station software your EX‑CommandStation.
Firstly you will need to select an address (1-10239) which will be assigned to the DC output. If you are also using using DCC on another output, pick a number that will not conflict with any of your own loco’s addresses.
Next re-run the EX‑Installer selecting the options you would normally choose, but of the last page before loading you also select
Advanced Config
, before clicking the Advanced Config button.This will take you to the
Advanced Configuration
page, where you will have two (or possibly more) edit regions. One will be labelledmyAutomation.h
.in the
myAutomation.h
edit region you will need to type or copy the something like the following
note that in this example I am setting output to be DC an to be assigned to the Loco Address 1225.
AUTOSTART
SETLOCO(1225) // Assign Loco 1225
SET_TRACK(B,DC) // Set Track B to DC with address 1225
DONE
Then Load the Command Station software as normal (on the next page)
Note the track power is immediately turn off anytime you change the track mode. you may wish to add SET_POWER( track, ON/OFF )
after the SET_TRACK()
command. e.g. SET_POWER(B ON)
.
Selecting A DC loco to control
Remember that the address you assigned DC output/track above is not really the loco. It is an address for the output/track.
While the process to control a loco is exactly the same as a DCC loco, the process to select it will vary depending on how you configured the Motor Driver Output to be DC.
If you set the Output to be permanently DC
You will need to select the Loco Address you assigned to the output when you setup the permanent assignment.
If you used a Route (DC)
Go to the list of Routes in your throttle app
Activate the Route that you created
You will then need to select the Loco Address you assigned to the output when you created the route.
If you used an Automation (DC)
You will then need to select any Loco Address that you wish to use
Go to the list of Routes and Automations in your throttle app
Activate the Automation that you created
If you used Engine Driver, EX-Toolbox or a Command (DC)
You will need to select the Loco Address you assigned to the output to DC.
Controlling a DC Loco
Any throttle that connect to an EX‑CommandStation can control analogue (DC) locos just as easily as DCC locos. Throttle Compatibility:
WiFi Throttles (e.g. Engine Driver, wiThrottle and many others)
The DCC-EX browser based EX‑WebThrottle
Other wired throttles to operate your DCC layout and your DC layout, either separately or a simultaneous combination of the two modes
Warning
Never drive a loco, DC or DCC, from an EX‑CommandStation controlled track or district to any other DCC or DC System.
Changing the Pulse Width Frequency
Frequency of PWM in DC Operation - PWM can use a variety of frequencies for the pulses it sends, and this can alter motor behaviour and noise etc.
The default frequency used for the EX‑CSB1 is 131H, but this can be varied on-the-fly using the virtual DCC functions 29-31 to allow you to alter the frequency to better suit your loco’s motor. This can of course be done during running from the throttle.
Just acquire the loco number you have assigned to your DC Output. Then select one of Functions 29, 30 or 31:
No Function selected: Default - low frequency 131Hz
F29: Mid frequency - 490Hz
F30: High frequency - 3400Hz
F31: Supersonic - 62500Hz
Trial and error will be needed for specific locos that do not respond well to the defaults (low) frequency setting.
Notes:
These functions are not cumulative - setting F30 overrides F29 and setting F31 overrides F29 & F30.
You need to activate the functions above once you have acquired the loco address that have assigned to the output.
Specifically:Set the output/track to DC mode with a specified loco address
Acquire that loco address in your throttle app
Make sure the loco is stopped
Set the frequency by activating one of the functions above
You need to stop the loco (throttle to zero) before changing the frequency using the function buttons.
Replacing or Integrating Into Your Current Layout
Warning
If you plan to use multiple DC and/or DCC blocks, these should not be using a common ground rail, and only use dual insulated tracks.
Existing analogue DC layouts will have standard DC controllers/transformers on one or more separate DC tracks/districts/blocks.
If you have more than one controller, they may have DPDT centre-off switches between two controller powered blocks.
You will be replacing this kind of legacy analogue DC described above with a single EX‑CommandStation. It includes a software switching implementation, allowing you to easily and quickly switch between the two DCC and DC PWM modes on any of the A thru H dual insulated tracks/districts in real time.
This also means that, if you wish, you can remove any physical hardware DPDT switches that were used to switch between standard DC controllers/transformers.
This is all done through a single EX‑CommandStation. And no we’re not using another Expensive DCC decoder under the table on each Track/District/Block to address that section of track. The capability is built into the EX‑CommandStation.
Below is an example of a very simple DC layout with two DC controllers/transformers, with one for each track.
With an EX‑CommandStation with both outputs set to DC PWM, the wiring for the same layout is a very simple swap.
Warning
The ready-to-run EX‑CSB1 and the do-it-yourself EX‑CommandStation default to DCC on both outputs!
You must use the instructions above before placing a DC loco on the track, or you may risk damaging the loco.
Todo
Add examples and diagrams
TrackManager Technical Details and Detailed Instructions
Below is a more detailed and technical discussion of the topics above.
How do you run a EX-CommandStation in DC (PWM) mode?
Using TrackManager with simple easy commands from a throttle or from a Serial Monitor we can change any insulated track A-H from DCC (PWM) to DC (PWM) and back in real time.
Valid DCC modes are
MAIN
,MAIN_INV
,MAIN_AUTO
,PROG
, andNONE
Valid DC modes are
DC
,DC_INV
/DCX
, andNONE
DC_INV / DCX is DC with an opposite polarity like NMRA modular layout track B which is wired left rail positive (+) and right rail negative (-)
This allows a throttle on track B set to DC_INV / DCX to operate in forward and reverse correctly for west bound engines
So, you can take a standard DC motor only loco’s road number on the side of the loco and assign it to one or more of up to 8 tracks/districts/blocks labelled A thru H. Then enter that same number into a throttle and control that Address on each and every one of the assigned tracks.
Valid Cab addresses are 1 to 10239.
Invalid Cab address is 0 zero.
We do not support Zero stretching / zero stretch address function, found on Digitrax and Lenz command Stations. See the ‘This is Not Zero Stretching’ section for more information.
Place any analogue DC loco/engine on a TrackManager DC assigned track with our EX‑CommandStation and it sits there dead quiet with lights off. When the throttle speed is increased in either direction and then lights up and begins to move.
A DCC Loco with a DC enabled sound decoder also sits quietly and when the throttle increases the sound will turn on first then as you throttle up more it will begin moving. You can throttle back until it stops but leave a little throttle speed on say 5% and the Sound will continue to play while it is stopped.
Throttle speed response for DC locos vary because the DCdistrict track is operating from 0Vdc to 16+Vdc ~PWM waveform signal. Locos operating on a DCdistrict with either WiFi Throttles and EXRAIL Automation scripts with Engine Driver Handoff run different DC motors at different speeds.
So a script for FWD(50) speed will run at completely different speeds for two different DC motors depending on their resistance and efficiency. One crawls at 50 while the other one runs like a bat out of hell.
You can also run a DCC locos with DC Conversion CV enabled On and run on the DCdistrict, without having to change the decoder DCC address.
They will all run on that section of track.
DCC Sound Decoder locos with DC conversion enabled may be silent until the track reaches between 2v to 6Vdc then the Sound will start up, and between 3v to 8Vdc the motor will begin to respond and move depending on the manufacturer’s decoder.
Controlling & Managing DCC-EX TrackManager modes
You can Assign Tracks/Districts to DCC and DC mode in four ways:
Command Line via PC with Arduino IDE Serial Monitor or JMRI serial Traffic Monitor and it is sent through your USB connected cable.
Create an EXRAIL myAutomation.h file Scripts for Track Manager assigned commands and they automatically appear in Engine Driver as GUI Automation [Handoff] and Route [Set] buttons, and in WiThrottle WiFi Throttle iOS as [Route] buttons, and on TCS Universal UWT-50 & 100 WiFi Throttle [Select Accry] lines.
Enhanced Engine Driver WiFi Throttle Android app v2.35.169+ features;
Track/District Manager set mode screen by touching a track mode entering an address
Command Cmd Line Serial Monitor and enter them like in example (1) above but via WiFi Native mode
New EX‑Toolbox WiFi Android app features;
Track/District Manager set mode screen by touching a track mode, entering an address
Command Cmd Line Serial Monitor and enter them like in example (1) above but via WiFi Native mode
New Engine Driver DCC-EX Native mode features now available today via Google Play Store:
TrackManager Commands
Sending commands from the Arduino IDE Serial Monitor or JMRI Send Command Line or a Engine Driver WiFi Throttle.
To display the current TrackManager configuration, use the command <=>
an equal sign looks like a track.
The Serial Monitor will show current status, example; Track A as Main and Track B as PROG
<= A MAIN>
<= B PROG>
To change or configure the current track modes use the new command <= trackletter mode [address]>
which has been added for Track Manager, where:
trackletter
is A through H
mode
is one of MAIN, MAIN_INV, MAIN_AUTO, PROG, DC, DC_INV / DCX, or NONE (DCX is DC with opposite polarity)
address
is the Cab/Loco ID and is only required when specifying DC or DC_INV / DCX modes
<= A MAIN> // Set track A to MAIN DCC mode
<= B PROG> // Set track B to PROG DCC mode
or
<= A DC 1234> // Set track A to DC mode with address 1234
<= B DCX 4321> // Set track B to DC mode Opposite Polarity address 4321
// or any number you assign from 1 to 10239
<= B NONE> // Set track B disabled, like a staging yard when it gets too noisy.
Note
You would then enter your Engine address on the throttle of 1234 and 4321 and drive them on the layout.
EXRAIL Scripts to Change Track modes
Using EXRAIL functions inside myAutomation.h file to run Automation scripts to change track modes from DCC to DC and back. my.Automation.h file
//SET_TRACK(id,mode)
SET_TRACK(A, MAIN)
SET_TRACK(B, PROG)
SET_TRACK(C, DC)
SET_TRACK(D, DCX)
Note that the Address to be used for a DC or DC_INV / DCX block must be set before the SET_TRACK
command e.g.
SETLOCO(1225)
SET_TRACK(C, DC)
EX-CommandStation with EXRAIL & TrackManager
Cool thing is the new EXRAIL Automation(n) & Routes(n) work the same with DCC engines on MAIN tracks and the DC engines on DC or DC_INV / DCX tracks, along with the Sensors, Servos /Turnouts, Signals & MP3 Sound DFPlayer triggers with little or no script changes other than maybe the FWD(n) & REV (n) Speeds.
With the new DCC-EX direct WiFi Discovered Server you can connect Engine Driver & other WiThrottle app based throttles directly and have EXRAIL [Handoff] & [Set] buttons to run EXRAIL scripts from the throttles.
These are DCC-EX Major feature/benefits because with other systems you’ll have to use a PC computer or Pi processor & JMRI for WiThrottle Server throttle access and you have to write two different JMRI Jython.py scripts and then Setup Tools> Tables> Routes for for both DCC and DC automation & routes runs.
Modular Layouts
DCC-EX TrackManager 4.2.50+ is perfect for NMRA DCC Standards Modular Layouts which have two MAIN tracks/districts, Track A and Track B with sidings;
Track A (east bound) wired rails L- R+
Track B (westbound) which also have all the siding and spurs, wired rails L+ R-
You can set each district separately as mode
DCC for MAIN, MAIN_INV, MAIN_AUTO, PROG or NONE
analogue for DC, DC_INV / DCX or NONE
DC_INV / DCX is Opposite Polarity and is what you set Block B to when you want it in DC mode because it is wired to NMRA Modular DCC Standards L+, R-.
EXRAIL examples
Example - EXRAIL Scripts running on Engine Driver App (Android)
Engine Driver Throttle Controlling Two Locos:
DCC PE 1225 on District A DCC address 1225 Sound Decoder
DC NH 667 on District B DC address 667 with IPLS Virtual Sound Decoder
DCC-EX Commands, scroll-able
DCC-EX TrackManager “Handoff” & “Set” buttons
Scroll through & select track modes
Takes the current selected Active Throttle Engine and assigns that Address to the DC or DC_INV / DCX track
Engine Driver DCC-EX Native mode
TrackManager MAIN & PROG
With DCC-EX Cmd Line & Serial Monitor
Engine Driver DCC-EX Native mode
TrackManager District A DCC MAIN
TrackManager District B DC 667
Engine Driver EXRAIL Automation [Handoff] and FX special effects buttons
FX Special Effects [Set] continued and Route [Set] buttons
EXRAIL Functions on Smartphone Apps & Universal WiFi Throttles
The Engine Driver EXRAIL screens shown above are all created through user defined EXRAIL Automation(n) and Route(n) scripts which are automatically passed to both Engine Driver & WiThrottle App screens as well as the Train Control Systems TCS Universal WiFi UWT-50 and UWT-100 tactile throttles all via direct connect DCC-EX wiThrottle Protocol interface.
Please see the specific Smartphone App & Universal WiFi Throttle instructions on how to enable their Preferences and Route screens. https://dcc-ex.com/throttles/index.html#withrottle-protocol-based-throttles