First of all, let me clarify how I as a German understand the English terms (corrections welcome):
Especially in America, there are regularly several locomotives in a train, which are jointly controlled (also via radio) from the driver's cab of the locomotive in front. This is generally called multiple unit. If there are locomotives at the train's front and rear ends, this is also called top-and-tail. If the units (locomotives) are distributed over the entire train (i.e. at the top end, the tail end, and inside) it's also called distributed power.
No matter how many units are distributed over the train, all units jointly controlled in a train are called a multiple unit consist or consist for short (see here). Consisting means forming a consist. With DCC (Digital Command Control) we can emulate that. The consist address is the shared DCC address of all locomotives in the consist.
Two Options: In the Decoders or in the Control Program
Consisting is actually very simple because you just have to write the common (consist) address into CV19 in each locomotive involved, maybe by POM (programming on main) directly from the DCC command station. And you can write the same address into any number of locomotives what only loads boosters (multiple power consumption) but not the DCC command station and the computer – in contrast to consists in TrainController (or any other control program) where driving commands have to go to each individual locomotive. The locomotives just have to have the same driving behavior (speeds) – common for American units because they are meant for consisting. And it also works on other layouts without a control program (or with a different one or just a different DCC command station).
A control program is rather the solution for consists of locomotives with different speeds, but then it must be available on the layout. TrainController (TC) compensates for all differences between several locomotives if these (their speed characteristics) are exactly measured there with TC. With TrainProgrammer (TP) you can set up locomotives (their decoders) to their respective prototypical speed, with certain decoders (e.g. ESU LokPilot) particularly precise.
Several locomotives that have the same prototypical speed can each be given the same speed in all speed steps (same speed characteristics). Both setup and measuring are necessary for good automatic control in TC, anyway, even if you don't do consisting. Both are about the same effort, but both are easier if and when TC and TP work together.
The Complete Guide to Consisting explains everything about the various options for multiple unit consists in the command station or in the decoders.
Two Programs: TrainProgrammer and TrainController
Locomotives are easily measured and calibrated with TrainController and are then already compatible with each other if you switch off acceleration and braking in the decoder (e.g. with F4). It is not absolutely necessary to adapt the model's speed to the prototypical speed in the decoder. I always do that anyway, at least roughly, because otherwise nearly all my locos would be much too fast and automatic control by TC would therefore be inaccurate. A rough adjustment often remains somewhat imprecise, but that can be compensated by TC setting different speed steps accordingly – assuming 126 speed steps are set in the command station. This is the most convenient method on your own layout.
Without TC – or if only 28 speed steps are used – the speed settings in the decoders have to be adjusted so precisely that the locos run at the same speed in each speed step (of 28). This is not really easy to do by letting the locos run side-by-side on two parallel straight tracks or in tandem on a longer track for comparison, and correcting them until it fits. TrainProgrammer makes this at least relatively easy. You can program, drive, and switch functions. Adjusting the speed table and load control parameters is as clear as it gets. But it is even easier with TC, with which the speeds of the locos can be individually and so precisely measured that the decoders can then be set up without comparison runs.
But no matter how - multiple unit consists set up in the decoders have the advantage that they also work on third-party layouts, for example at meetings. This even applies if TC is used there, but not the same DCC command station. The measured speed characteristics may then have changed because the speed commands from TC may be passed on to the decoders in a slightly different way by the other DCC command station. However, the speed curves in the locos are changed in the same way, so a consist with TC would still be possible.
The Concept: Consisting with DCC Decoders
In each loco of the consist (any number) the same "two-digit" address
(from 1 to 127 in many decoders) is entered in CV19 (the consist address, must
not be assigned otherwise). If the loco
is reversed in the consist, 128 is
added to this address. After that, it already reacts to drive and function commands
(but not programming commands) from the command station to the consist address and
no longer to its own address. (You can then place two locos of the consist on two
parallel tracks or one behind the other on one track and adjust the speed of one
to that of the other in each speed step.)
With CV21 and CV22 you can determine in each loco whether the functions FL and F1 to F12 should be active when in a consist. So you can control lights and sounds specifically in one or more locos. But not all decoders offer this setting option, some only to a lesser extent and some, such as ESU version 5 decoders, even to a greater extent (as far as F28, determined by test, and FL front and rear separately). The other function keys may be active in a consist or they may not (such as F29 to F31 in ESU decoders).
With CV23 and CV24, acceleration and deceleration of the locos can be adjusted to each other. You might need that in case you want to drive at a meeting on someone else's layout. But you can also switch off acceleration and deceleration completely (with F4 for ESU LokPilot and other non-sound decoders) and just turn the throttle knob slowly. This is recommended in any case because not all decoders offer this setting option and some (such as ESU decoders) do not restrict it to being in a consist. (This may be not explicitly mentioned in the manual and must therefore be tried out.)
A loco is released from the consist by writing either 0 (zero, forward) or 128
(reverse) in its CV19. You have to do this for all locos involved if you want to
disband the consist entirely. You can add another loco to the consist by writing
the consist address (possibly plus 128 for reverse) in its CV19. All this can
be easily done by programming on main (POM) if the DCC command station
and
all locos (their decoders) are POM-able (lest an unable loco feels addressed).
Of course, a loco has to be prepared for consisting, that is its speed settings and the activity of functions. It's best to prepare all suitable locos, then you can quickly form any consist - also as top-and-tail or distributed power, if the speeds are exactly calibrated as described in the next section.
Consist programming in DCC decoders is therefore quite easy if it is well prepared. But – due to several possible ways of function mapping and decoder behavior – you need a clear line for the preparation.
My Approach: Speeds
First I have to point out that 126 speed steps are set in my command station and automatic acceleration and deceleration are deactivated in the decoders (with F4). Both together enable TrainController to exactly control the locos, especially brake to a predefined stopping point and match the speed of all locos in a consist. Now accelerating and decelerating trains on the layout requires quite a number of DCC speed commands to be sent to the locos, but only few locos are run at the same time and very few accelerated or decelerated. At least that's how it is in my case, in which no problems exist. Multiple DCC speed commands to locos in a consist are preferably avoided by using DCC advanced consists with speed matching in the decoders.
When using a manual control unit, 126 speed steps may be inconvenient (even if smooth acceleration and deceleration are possible then just by slowly turning the control knob). 28 speed steps (and a bit automatic acceleration and deceleration set in the decoders to avoid jerking) may be more convenient. But now TrainController can not quite as exactly control and hence not exactly enough match speeds in a consist. That must be done in the decoders then – for instance following the method decribed here:
TrainProgrammer configurations for the LokPilot 5 and LokSound 5 decoders by ESU
are offered
in the Freiwald forum Exchange Market (and here on the
Downloads page).
I use these decoders because they have very good options for adjusting the driving speeds.
Basically, equal locos with equal decoders can use the same settings (for load control)
and the same speed table. However, there will be minor differences (also forwards/backwards),
which can be compensated for with a few trimming CVs.
It can get so accurate it's even fun when you get it right.
On my N-scale layout, I then let two equally fast locos (German types) drive around one behind the other at a short distance and see how quickly or slowly the distance changes. I've set up two equal H0 trams because I don't have my own H0 streetcar layout and therefore always run the prototypical combination on someone else's layout (without TrainController). Only ESU decoders have been used, I just didn't try other brands.
TrainProgrammer has been used to set up the deocders and save the settings. The speeds have been exactly measured with TrainController and then the parameters for speed control have been adjusted in TP (fine tuning with trimming by special CVs). Both programs can run at the same time so you can switch between them and in TP you can optionally address several decoders (locos) via their respective windows.
This is how I do it for equal locos and equal ESU decoders with trimming functions:
- One of the locos is basically set up with TP, i.e. address, RailCom, lights, etc. Load control is adjusted - if necessary - so that the loco runs well. In hard cases, the function for automatic load control setup of the ESU decoder is used (set CV54 to zero and switch F1).
- Acceleration and deceleration interfere with measurement and later with automatic driving. You can turn them off (set to zero) in CV3 and CV4, but I virtually always turn them off with the corresponding decoder function (F4). But then you must not forget it or you should automate it in TC.
- Maximum forward speed of the loco is measured in TC and adjusted there as precisely as possible to the prototype speed. For this purpose, CV2, CV5, and (with older LokPilots) CV6 are set accordingly. This sometimes takes several trials (measure, convert CV values and re-set, measure again). In hard cases, load control must be set up again, so back to the first step and then back here.
- With the trim value in CV66, maximum forward speed is adjusted very precisely. To do this, speed is measured in TC and CV66 is changed in TP. Both programs run simultaneously, you just have to switch from window to window. Again, multiple attempts are sometimes necessary.
- Reverse speed is adjusted in the same way, now with CV95. The prototypical forward and reverse speeds can even differ (e.g. 80 km/h forwards and 40 km/h backwards), they just have to be set precisely.
- Another, equal loco is basically set up in the same way in TP, apart from the address, of course. To do this, the saved settings of the first loco are copied (saved under a different name) and the address is changed. The trim values can be set to zero (or neutral), but they don't have to be. Then everything is written into the decoder. Speed characteristics and load control are of course particularly important.
- The trimming processes forwards and backwards (steps 4 and 5) are applied to this equal loco in interaction of TC and TP. Done – next equal loco.
Most locos don't originally run forwards and backwards at the same speed. Even equal locos usually don't run at the same speed. And some (mostly old) locos are such "sprinters" that CV5 (maximum speed) has to be set to a very small value. Then the setting steps are very large, which means you don't hit the prototypical speed exactly. All this is sufficiently balanced with the trim values.
Speed measurement in TC is so accurate that actually no comparison runs (on parallel tracks or one after the other on one track) are needed, even though my measuring distances are merely 156cm (N-scale) or 93cm (H0 scale), respectively (the longer the more accurate). Still, I always do comparison runs to be sure and because it's interesting. Mind you: These are comparison runs afterwards, the settings are done individually for each loco beforehand - by measuring instead of trying.
In order to be able to drive automatically in TC (that's why you buy it), every equal loco
in TC must have a speed characteristic (table). There are virtually no differences and measuring
once and then copying (saving under a different name) may well work, but I don't dare and
prefer to measure every loco. A measurement takes a long time (up to an hour on my long
test length) but is done automatically in TC (on three consecutive track sections with
feedback contacts) - if the locos don't stop because of contact problems. So keep the
rails and wheels meticulously clean
and run-in the motor well.
If you want to form a consist of locos that are not exactly equal, then a little more effort is required. For example, the locos can have different motors and transmissions or even different prototypical speeds. Then there is nothing left but to set both of them to equal speeds in all 28 steps in the speed table. This is done in the same way, i.e. measuring in TC and setting up in TP, now just for all steps individually. You can then decide whether both locos should have either the lower or higher of the two prototypical maximum speeds.
The usefulness of both programs, TrainController and TrainProgrammer, even for the preparation of locos for consist formation, should now be clear. (Good decoders are a prerequisite.) But even if you only want to run your own layout with TC, setting the speed behavior of a locomotive with TP in the decoder is at least useful, if not even necessary, so that it can be automatically controlled by TC, at least more precisely.
Locomotive Speed Matching Made Easy
describes a procedure with a decoder programmer (DecoderPro) but without speed
measuring in a control program (like TrainController) and
without matching
to prototype speed.
In turn, my two test runs
show that a control program (like TrainController) is able to precisely speed-match
actually unmatched locos (not precisely adjusted decoders or different type locos).
That's – at least for me – the prerequisite for distributed
power (in this case top-and-tail) in model scale. In full scale, probably also the
pull or push forces, respectively, produced by the individual locos are controlled.
My Approach: Lights and Sounds
Modern locos, also N-scale, have several light functions and some even sounds.
I own only two such sound locos where different sounds – like different lights
– are switched on and off or triggered with function keys or functions.
Basically, this works in a consist as well, but you have to imagine that function
keys switch on everything that is supposed to light up and sound
somewhere in the consist. Which of these in which locomotive must be
specified individually for each locomotive in the consist. To do this, simply set
the corresponding bits in CV21 and CV22 (as
well as CV109 and CV110 in case
of the ESU decoders).
The locos have to be prepared also for this, namely their function key assignment, or function mapping, which must be the same for all locos in the consist. Here I'm assuming an ESU LokPilot or LokSound 5 decoder, which processes up to 72 assignments as rows in a table. Each row can contain many conditions and some resulting actions. Whether the loco is standing still or driving, forwards or backwards, whether function keys are pressed or not, these are the conditions that are checked. Lights and sounds are the intended consequences.
Let's take an example, a consist with one engine at the top, one at the tail and one in the middle. In all three locos, the lights are switched on and off as usual with FL (also called F0). However, the lights on each side of the loco should change with the driving direction. The lights on both sides can be activated with the additional function keys F1 and F2, respectively.
For instance, if the lights at the the loco's front end are activated (F1=1), the white headlights should be on when driving forwards and the red tail lights when driving backwards. At the rear end (F2=1) it's the other way around in relation to the the loco's driving direction (as with a driving trailer in a push-pull train, and also function decoders have a CV19). Depending on which end of the loco is on the train, the lights at the other end are activated. (This way the loco is also suitable for a push-pull train.) If the loco is running light (loco alone), you can activate lights at both ends. If you don't need the latter, you can do with only two function keys: FL=1 means lights on, either at the loco's front (F1=0) or its rear (F1=1). If a loco is running anywhere within the train, no lights are switched on (FL=0).
Depending on the country, locomotives sometimes have to dim their headlights or turn them on full beam. There is a second "output configuration" (settings of outputs) in the LokPilot decoder especially for the four light outputs. You can set different brightness there or effects such as fade in/out, ditch lights, or strobes. Which of both "configurations" is activated is made conditional on another function key (F5, because F3 and F4 are already used).
Some locomotive models have cab lighting, some only at the front (one cab). We switch it on with F6, but conditional on the loco standing still. As soon as she moves, the driver's cab lights go out. No matter if the loco has one or two driver's cabs, their lighting must be made conditional on F1 (front) or F2 (rear) and on the respective driving direction in which the white headlights are lit.
Sounds can be included in the configuration in a similar way. Drive sounds are just switched on or off (with F7) and are otherwise not dependent on any condition. A horn is actuated briefly (with F8) but it should only sound if the loco is at the train's top. To do this, it is made conditional on F1 and F2 in a mapping row each, as well as on the respective driving direction in which the white headlights are lit.
So much for preparation, that is function mapping. If the locos in the consist are equal or at least similar and have equal decoders, then you can (as with the speed settings) configure one of the locos and copy its configuration to the decoders of the other locos (with TrainProgrammer), here even without further adjustments. From now on it's only about the function keys and their activity in the individual locos in the consist:
If our three locos are operated in a consist, all functions that should be active anywhere in the consist must be switched on. F1 and F2 for the headlights and taillights at both ends of the locos are left on all the time, just in case they are needed. FL is only turned on when you really want the lights to be lit. A light effect (fade in or out, ditch light) is only switched on when required (F5). The driver's cab lighting is only used in "darkness" (F6). Drive sounds are switched on continuously (F7), the horn only briefly (F8).
In the two locos at top and tail the lights must be switchable. So you set bit 1 in CV22 (to 1) to make FL effective. If the loco's rear is on the train, bit 1 is set in CV21 (F1 effective), if its front is on the train bit 2 (F2 effective) instead. The respective other bit is not set (i.e. zero)! Whether a loco in the consist is running reversed, forwards or backwards, that is not relevant here. Bits 5 and 6 must be set in CV21 so that light effects (F5) and driver's cab lighting (F6) can take effect. Bits 7 and 8 for drive sounds (F7) and horn (F8) must also be set here. Bits 3 (F3 – shunting mode) and 4 (F4 – no acceleration and deceleration) should also be set, because these functions are required in every loco in the consist.
So they should also be effective in the (or all) loco(s) within the train.
All light functions are "hidden" here by setting bit 1 in CV22 as well as
bits 1/2 and 5/6 in CV21 to 0 (zero).
Engine sounds are enabled (bit 7 set to 1), the horn is "hidden" (bit 8
set to 0). Only bits 3, 4, and 7
in CV21 (all related to driving) are
"active" here.
The entire consist is now configured and ready for operation, on every layout with a DCC command station and independently of a control program. The preparation of the individual locos – like the preparation of speed settings – is a bit time-consuming. The LokProgrammer by ESU or TrainProgrammer by Freiwald (together with my configurations for LokPilot and LokSound 5) make the function assignments quite clear. In this simple example, 15 rows have to be filled in the assignment table and with a maximum of 72 rows there are more than enough. All settings mentioned here can be found in an example TrainProgrammer decoder file (included in my LokPilot/Sound 5 package).
Beyond my simple European example, Configuring Consist Functions and Lighting Operations Made Easy recommends elaborate light and sound settings for American Diesel consists with different sound decoders.