Digitrax
Decoder Lock CVs 15 & 16
![]()
DCC users sometimes wish to install more than one decoder in a single locomotive and have them work together from the same commands sent to one mobile decoder address. One example of this is using separate decoders for motor control and sound. Because these decoders may need to have their CVs configured separately, a mechanism is needed to communicate with only one decoder at a time during programming without affecting the programming in the other decoder/s. Digitrax calls this the Decoder Lock feature.
This mechanism must be able to:
1) Perform
Service mode and Operations mode programming on a specific decoder, with no
need to physically disconnect other decoders with the same address in the same
locomotive.
2) Determine
which individual decoder is to be programmed, without disassembly, and despite
multiple decoders being present.
3) Work with existing DCC control systems and
programmers without modification.
In the fall of 2001 Digitrax, Inc. followed
the NMRA DCC Working Group’s procedure for requesting authorization for use of
reserved CVs 15, 16, & 47 for experimentation and development of a method
of being able to individually program CVs in one of a group of decoders installed
in the same locomotive using the same mobile decoder address without affecting
the programming in any of the other decoders in the group.
This request was granted by Brian Barnt,
Committee Chairman. This request was
granted with the understanding that the implementation would be evaluated and
results reported back to the group in the form of a proposal within 2
years. Subsequently, Digitrax evaluated
and tested several methods for implementing this feature. Digitrax solicited suggestions from other
DCC manufacturers, dealers and end-users and incorporated their input into the
final design.
Digitrax included the decoder lock feature in
all Series 3 decoders released beginning in late 2001 so that it could be field
tested and evaluated by interested parties.
In our opinion, enough field testing has now been done to prove the
merits of this approach. This is based
on our experience with real products and real customers in the field over an
extended period of time, or about 18 months.
This proposal has been submitted to the NMRA DCC Working Group for consideration and adoption as an RP.
![]()
Proposal Made to NMRA DCC Working Group:
CV16 can be programmed to a value from 0 to 7
inclusive. This is called the "ID number". This value identifies a
single decoder, so a unique value must be assigned to each decoder in a
particular locomotive. Because most
users will use this mechanism with decoders that provide different functions,
the recommended coding is:
0:
Reset value, as shipped
1: Motor
decoder
2:
Sound decoder
3:
Function-only decoder (e.g. for additional lights)
CV15 is used to select the target decoder
that will respond to programming commands.
When the values in CV15 and CV16 are equal, all CVs in the target
decoder can be programmed. When the
values in CV15 and CV16 are not equal, only CV15 can be programmed.
Manufacturers may want to provide a bit in a
CV to enable/disable this feature.
Digitrax uses CV54 bit 6=1 to disable the decoder lock feature. This is a manufacturer specific CV. It would be useful for a bit in CV47 to be
used as the enable/disable control for the decoder lock feature.
Note that a command to reset the decoder to
factory default CV values (CV08=08) must not be acted upon unless the CV15 and
CV16 values are equal. This prevents
the user from accidentally resetting multiple decoders at the same time, and
losing the ability to separately address them for programming purposes.
![]()
Implementation Specifics:
Note that if the user is installing only one
decoder in a locomotive, there is no need to modify the default values of zero
in CV15 and CV16.
To
configure unlocked decoders at installation:
Each decoder is shipped from the factory
unlocked with both CV15 & CV16 programmed to a value of 0.
Before installing each unlocked decoder in
the locomotive:
a)
Connect the
target decoder to the programming track all by itself
b)
Optional: Write
a value of 08 to CV08 to ensure CV15 and CV16 are both zero
c)
Optional: If desired,
read CV15 to confirm that the decoder is unlocked. (This should a read a value of 0)
d)
Program CV
values desired into any CVs in the target decoder.
e)
When you are
finished programming the CVs, lock the decoder by writing CV16 to the desired
ID number, for example 02 for a sound decoder.
This step locks the target decoder to ID 02.
f)
Disconnect the
target decoder from the programming track and install it in the locomotive
g)
Repeat in turn
for each decoder to be installed in the locomotive.
Note that this decoder lock method can be
performed even when only a write-only programming method is available. Also, it
is possible to use a “legacy” non-lock version decoder along with new lock
capable decoder(s). In this case,
program the decoders with the lock feature first, locking each one when
programming is complete, and leave the non-lockable decoder to be programmed
last.
To
access a decoder after installation:
a)
When you want to program CVs in the target
decoder with ID XX again, unlock it by programming CV15 to match the ID XX
programmed in CV16. In the case of the
example decoder, program CV15 to 02.
b)
Once the
decoder is unlocked, program CVs as desired.
c)
When programming is finished, lock the decoder by
programming CV15 to 0.
To
identify the decoder(s) present in a locomotive:
a)
Write a 0 to CV15
b)
Attempt to read a 0 from CV16.
c)
If no acknowledge is received, there is no decoder with ID 0.
If an acknowledge is received, a decoder with ID 0 exists.
Repeat this process for ID 1 through 7 to
check for those IDs.
Because the ID values are low, a successful
read is quite fast. An unsuccessful
read, i.e. when the decoder is not present, will take some time on many
existing command stations, but eventually give an answer. This can be made faster in the future by
having command
stations attempt to read just the expected
value, instead of 0 to 255, in the absence of an acknowledge.
![]()
Return to Digitrax
Home Page
This page, and all contents, are Copyright (C) 2003
by Digitrax, Inc., Norcross, GA, USA.
Page updated 05-29-03