Le PROTOCOLE DCC pour LOCOMOTIVE
(Digital Command Control)






Le PROTOCOLE DCC

Le standard DCC permet d'envoyer plusieurs catégories de messages :
• Message destinée aux décodeurs des locomotives,
• Message spécialisé (Remise à zéro, Trame d'urgence, Trame vide),
• Message destinée aux décodeurs d'accessoire,
• Message de service (lire ou écrire dans les variables de configuration des décodeurs).

Pour pour commander les différents décodeurs, le DCC utilise un protocole. C'est cette connaissance du protocole qui permet de générer ces messages.

Format du paquet de données DCC de base.

Synchronisation   Octet de données 1   Octet de données 2   Octet de données 3  
1111111111111111 0 0 A A A A A A A 0 0 1 D C V V V V 0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8)
Paquet DCC de base

DÉTAILS du PROTOCOLE DCC

Pour l'instant nous ne détaillerons que le protocole pour la commande des locomotives.

Les possibilités offertes par le protocole DCC sont nombreuses et parfois complexes, j'ai essayé d'être aussi exhaustif et clair que possible.
Pour la commande des locomotives 4 possibilités sont offertes. Je les détaille toutes, vous prendrez celle qui vous convient le mieux.
Pour ma part j'ai choisi le plus "simple" qui offre déjà pas mal de possibilités : Trame courte, commande de 127 locomotives, sur 28 pas de vitesse.

Le protocole DCC a prévu plusieurs possibilités concernant la commande des locomotives :
     • Pour la commande de 127 décodeurs,
     • Pour un réglage de la vitesse sur 14 ou 28 pas.

     • Pour la commande de 16383 décodeurs,
     • Pour un réglage de la vitesse sur 14 ou 28 pas.

     • Pour la commande de 127 décodeurs,
     • Pour un réglage de la vitesse sur 128 pas.

     • Pour la commande de 16383 décodeurs,
     • Pour un réglage de la vitesse sur 128 pas.

La TRAME 3 OCTETS
127 Décodeurs et 14 ou 28 pas de vitesse

Préambule   Octet 1   Octet 2   Octet 3  
1111111111111111 0 0 A A A A A A A 0 0 1 D C V3 V2 V1 V0  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8)
Trame 127 Décodeurs et 14 ou 28 pas de vitesse

Explication de la Trame DCC :
1) Préambule
La trame commence par l'envoi du Préambule (16 bits à "1").

2) Séparation par un bit "START" à "0".

3) Envoi de l'octet 1 d'adresse : (L'adresse est codée sur 7 bits).
L'octet commence par le bit 7 à "0" indiquant que l'on utilise une adresse courte.
• Les 7 bits suivants contiennent l'adresse de la locomotive à commander en binaire. 
 Nota

4) 
Séparation par un bit "START" à "0".

5) Envoi de l'octet 2 de commande ou données :
• L'octet commence par les deux bits 7 et 6 à "0 et 1" qui indique un codage de vitesse sur 14 ou 28 pas,
• Le bit 5 "D" indique la direction de la locomotive :
   • "0" donne la marche arrière,
   • "1" donne la marche avant,
• Le bit 4 "C" indique un codage de vitesse à 14 ou 28 pas :
   • "0" vitesse codée sur 14 pas,
   • "1" vitesse codée sur 28 pas,
• Les bits 3, 2, 1, 0, "V3, V2, V1, V0" indique la valeur de la 
vitesse.

Tableau des vitesses : 14 pas

tableau des vitesse 14 pas
Tableau des vitesses : 14 pas

Tableau des vitesses : 28 pas

tableau des vitesse 28 pas
Tableau des vitesses : 28 pas


6) 
Séparation par un bit "START" à "0".

7) Envoi de l'octet 3 de contrôle :
• La valeur des bits de l'octet de contrôle dépend de l'octet 1 et de l'octet 2,
• L'octet de contrôle est calculé par la centrale DCC en effectuant un "OU EXCLUSIF" ou "XOR",
• Les bits de l'octet 1 et de l'octet 2 sont additionnés bit à bit en utilisant la fonction "OU EXCLUSIF".

Table "OU EXCLUSIF" ou "XOR"
table de vérite ou exclusif
Table de vérité : OU EXCLUSIF

Exemple 1 :                                                                                                                                          
Octet 1 = 00100000 (Adresse courte, Adresse 32),
Octet 2 = 01111100 (Locomotive, sens avant, pas de vitesse 128, vitesse 22),
Octet 3 = 01011100 (Résultat de l'octet de contrôle, addition bit à bit suivant la table "XOR".

Préambule   Octet 1   Octet 2   Octet 3  
1111111111111111 0 0 0 1 0 0 0 0 0  0 0 1 1 1 1 1 0 0  0 0 1 0 1 1 1 0 0 
1
1) 2) 3) 4) 5) 6) 7) 8)
    Exemple 1
       
Exemple 2 :
Octet 1 = 00111111 (Adresse courte, Adresse 63),
Octet 2 = 01010110 (Locomotive, sens arrière, pas de vitesse 128, vitesse 9),
Octet 3 = 01101001 (Résultat de l'octet de contrôle, addition bit à bit suivant la table "XOR".

Préambule   Octet 1   Octet 2   Octet 3  
1111111111111111 0 0 0 1 1 1 1 1 1  0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 
1
1) 2) 3) 4) 5) 6) 7) 8)
    Exemple 2
       
Nota :
L'octet de contrôle calculé est inséré dans la trame DCC qui est ensuite envoyée sur la voie.
Le décodeur concerné par l'adresse envoyée, calcule de son côté l'octet de contrôle. (Des mauvais contacts ou parasites peuvent altérer le contenu du signal envoyé par la centrale).
Le décodeur compare ensuite l'octet de contrôle envoyé par la centrale DCC et celui qu'il a calculé. Si les deux concordes la trame est acceptée et exécutée dans le cas contraire la trame est refusée.

8) 
Bit "STOP" à "1".
Fin de transmission du paquet.

La TRAME 4 OCTETS
16383 Décodeurs et 14 ou 28 pas de vitesse

Préambule   Octet 1   Octet 2   Octet 3   Octet 4  
1111111111111111 0 1 A A A A A A 0 A A A A A A A A 0 0 1 D V0 V4 V3 V2 V1  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10)
Trame 16383 Décodeurs et 14 ou 28 pas de vitesse

Explication de la Trame DCC :
1) Préambule
La trame commence par l'envoi du Préambule (16 bits à "1").

2) Séparation par un bit "START" à "0".

3) Envoi de l'octet 1 d'adresse : (L'adresse étant codée sur 14 bits 2 octets sont nécessaires).
L'octet commence par le bit 7 et 6 à "1" indiquant que l'on utilise une adresse longue,
• Les 6 bits suivants contiennent l'adresse de la locomotive à commander en binaire en combinaison avec l'octet suivant. 
 Nota

4) 
Séparation par un bit "START" à "0".

5) Envoi de l'octet 2 d'adresse :
• Les 8 bits de l'octet sont réservés à la vitesse en combinaison avec l'octet précédent.

Dans le protocole DCC le premier bit d'adresse est le bit de poids fort (MSB) qui est transmis en premier.
Exemple :

Préambule   Octet 1   Octet 2   Octet 3   Octet 4  
1111111111111111 0 1 1 1 0 0 0 0  0 0 0 0 0 0 0 0 0  0 0 1 D V0 V4 V3 V2 V1  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10)
Adresse : 12288 

Préambule   Octet 1   Octet 2   Octet 3   Octet 4  
1111111111111111 0 1 0 0 0 0 0 0  0 0 0 0 0 0 0 1 1  0 0 1 D C V4 V3 V2 V1  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10)
Adresse : 3


6) 
Séparation par un bit "START" à "0".

7) Envoi de l'octet 3 de commande ou données :
L'octet commence par les deux bits 7 et 6 à "0 et 1" qui indique un codage de vitesse sur 14 ou 28 pas,
• Le bit 5 "D" indique la direction de la locomotive :
   • "0" donne la marche arrière,
   • "1" donne la marche avant,
• Le bit 4 "C" indique un codage de vitesse à 14 ou 28 pas :
   • "0" vitesse codée sur 14 pas,
   • "1" vitesse codée sur 28 pas,
• Les bits 3, 2, 1, 0, "V3, V2, V1, V0" indique la valeur de la 
vitesse.

8) Séparation par un bit "START" à "0".

9) Envoi de l'octet 4 de contrôle :
• La valeur des bits de l'octet de contrôle dépend de l'octet 1 de l'octet 2 et de l'octet 3,
• L'octet de contrôle est calculé par la centrale DCC en effectuant un "OU EXCLUSIF" ou "XOR",
• Les bits de l'octet 1 et de l'octet 2 sont additionnés bit à bit en utilisant la fonction "OU EXCLUSIF", le résultat de cette opération est ensuite utilisé pour étre additionné à l'octet 3 pour obtenir le résultat final.
Exemple 1 : Trame de 16383 décodeurs et 14 ou 28 pas de vitesse.
Octet 1 = 11000000 (Adresse sur 14 bits),
Octet 2 = 00000011 (Adresse sur 14 bits), 
Résultat Octet 1 + octet 2 = 11000011 auquel on ajoute l'octet 3.

Octet 3 = 01111010 (Locomotive, sens avant, pas de vitesse 28, vitesse 18).
Résultat Octet 4 = 10111001 (Résultat de l'octet de contrôle, addition bit à bit suivant la table "XOR".


Préambule   Octet 1   Octet 2   Octet 3   Octet 4  
1111111111111111 0 1 1 0 0 0 0 0 0  0 0 0 0 0 0 0 1 1  0 0 1 1 1 1 0 1 0  0 1 0 1 1 1 0 0 1
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10)
    Exemple 1              
Adresse =3, sens avant, 28 pas de vitesse, vitesse =18 
Exemple 2 :
Octet 1 = 11110000 (Adresse sur 14 bits),
Octet 2 = 00000011 (Adresse sur 14 bits), 
Résultat Octet 1 + octet 2 = 11110011 auquel on ajoute l'octet 3.

Octet 3 = 01111111 (Locomotive, sens avant, pas de vitesse 128, vitesse 28).

Résultat Octet 4 = 10001100 (Résultat de l'octet de contrôle, addition bit à bit suivant la table "XOR".

Préambule   Octet 1   Octet 2   Octet 3   Octet 4  
1111111111111111 0 1 1 1 0 0 0 0  0 0 0 0 0 0 0 1 1  0 0 1 1 1 1 1 1 1  0 1 0 0 0 1 0 0 0
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10)
    Exemple 2              
Adresse =12288, sens avant, 28 pas de vitesse, vitesse =28 
Nota :
L'octet de contrôle calculé est inséré dans la trame DCC qui est ensuite envoyée sur la voie.
Le décodeur concerné par l'adresse envoyée, calcule de son côté l'octet de contrôle. (Des mauvais contacts ou parasites peuvent altérer le contenu du signal envoyé par la centrale).
Le décodeur compare ensuite l'octet de contrôle envoyé par la centrale DCC et celui qu'il a calculé. Si les deux concordes la trame est acceptée et exécutée dans le cas contraire la trame est refusée.

10) 
Bit "STOP" à "1".
Fin de transmission du paquet.
La TRAME 4 OCTETS
127 décodeurs et 128 pas de vitesse

Préambule   Octet 1   Octet 2   Octet 3   Octet 4  
1111111111111111 0 0 A A A A A A A 0 0 0 1 1 1 1 1 1 0 D V6 V5 V4 V3 V2 V1 V0  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10)
Trame 127 décodeurs et 128 pas de vitesse

Explication de la Trame DCC : 
1) Préambule 

• La trame commence par l'envoi du Préambule (16 bits à "1").

2) Séparation par un bit "START" à "0".

3) Envoi de l'octet 1 d'adresse (L'adresse est codée sur 7 bits).
• L'octet commence par le bit 7 à "0" indiquant que l'on utilise une adresse courte,
• Les 7 bits suivants contiennent l'adresse de la locomotive à commander en binaire.
 Nota

4)
Séparation par un bit "START" à "0".

5) Envoi de l'octet 2 : 
• L'octet commence avec les bits  7 à "0", 6 à "0" et 5 à "1" indiquant que l'octet suivant est entièrement dédié à la vitesse, (001 : fonctions avancées du décodeur).
• Les bits suivants à "1" indique que l'on est sur 128 pas de vitesse.

6)
Séparation par un bit "START" à "0".

7) Envoi de l'octet 3 : 
 • Le bit 7 "D" indique la direction de la locomotive : 
"0" donne la marche arrière, 
"1" donne la marche avant,
• Les bits suivant "V6 V5 V4 V3 V2 V1 V0", indique la valeur de la vitesse sur 128 pas : 
    • "0" donne un ordre d'arrêt d'urgence, 
    • "1" donne un ordre d'arrêt d'urgence avec inertie,
    • Ensuite il s'agit de transmettre le pas de vitesse en binaire. Bit de poids fort en tête.

8) Séparation par un bit "START" à "0".

9) Envoi de l'octet 4 de contrôle : 
• La valeur des bits de l'octet de contrôle dépend de l'octet 1 de l'octet 2 et de l'octet 3,
• L'octet de contrôle est calculé par la centrale DCC en effectuant un "OU EXCLUSIF" ou "XOR",
• Les bits de l'octet 1 et de l'octet 2 sont additionnés bit à bit en utilisant la fonction "OU EXCLUSIF", le résultat de cette opération est ensuite utilisé pour étre additionné à l'octet 3 pour obtenir le résultat final. 
Voir exemple sur  La TRAME 4 OCTETS, 16383 Décodeurs et 14 ou 28 pas de vitesse. 

Nota : 
L'octet de contrôle calculé est inséré dans la trame DCC qui est ensuite envoyée sur la voie. 
Le décodeur concerné par l'adresse envoyée, calcule de son côté l'octet de contrôle. (Des mauvais contacts ou parasites peuvent altérer le contenu du signal envoyé par la centrale). 
Le décodeur compare ensuite l'octet de contrôle envoyé par la centrale DCC et celui qu'il a calculé. Si les deux concordes la trame est acceptée et exécutée dans le cas contraire la trame est refusée.

10) 
Bit "STOP" à "1".
Fin de transmission du paquet.
La TRAME 5 OCTETS 
16383 décodeurs et 128 pas de vitesse

Préambule   Octet 1   Octet 2   Octet 3   Octet 4   Octet 5  
1111111111111111 0 1 1 A A A A A A 0 A A A A A A A A 0 0 0 1 1 1 1 1 1  0 D V6 V5 V4 V3 V2 V1 V0  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12)
Trame 16383 décodeurs et 128 pas de vitesse

Explication de la Trame DCC :  
1) Préambule  
• La trame commence par l'envoi du Préambule (16 bits à "1").

2) Séparation par un bit "START" à "0".

3) Envoi de l'octet 1 d'adresse : (L'adresse étant codée sur 14 bits 2 octets sont nécessaires, l'octet 1 et l'octet 2).  
• L'octet commence par le bit 7 et 6 à "1" indiquant que l'on utilise une adresse longue. 
• Les 6 bits suivants contiennent l'adresse de la locomotive à commander en binaire en combinaison avec l'octet 2.
 Nota

4) Séparation par un bit "START" à "0".

5) Envoi de l'octet 2 d'adresse : 
• Les 8 bits de l'octet sont réservés à la vitesse en combinaison avec l'octet précédent.

Dans le protocole DCC le premier bit d'adresse est le bit de poids fort (MSB) qui est transmis en premier. 
Exemple :

Préambule   Octet 1   Octet 2   Octet 3   Octet 4   Octet 5  
1111111111111111 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1  0 D V6 V5 V4 V3 V2 V1 V0  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12)
Adresse : 12288

Préambule   Octet 1   Octet 2   Octet 3   Octet 4   Octet 5  
1111111111111111 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1  0 D V6 V5 V4 V3 V2 V1 V0  0 C C C C C C C C
1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12)
Adresse : 3

6)
Séparation par un bit "START" à "0".

7) Envoi de l'octet 3  : 
• L'octet commence avec les bits 7 à "0", 6 à "0" et 5 à "1" indiquant que l'octet suivant est entièrement dédié à la vitesse, (001 : fonctions avancées du décodeur).
• Les bits suivants à "1" indique que l'on est sur 128 pas de vitesse.

8) Séparation par un bit "START" à "0".

9) Envoi de l'octet 4 :  
• Le bit 7 "D" indique la direction de la locomotive :  
"0" donne la marche arrière,  
"1" donne la marche avant, 
• Les bits suivants "V6 V5 V4 V3 V2 V1 V0"indique la valeur de la vitesse sur 128 pas :   
"0" donne un ordre d'arrêt d'urgence,  
"1" donne un ordre d'arrêt d'urgence avec inertie, 
• Ensuite il s'agit de transmettre le pas de vitesse en binaire. Bit de poids fort en tête.

10)
Séparation par un bit "START" à "0".

11) Envoi de l'octet 5 de contrôle :  
• La valeur des bits de l'octet de contrôle dépend de l'octet 1 de l'octet 2 et de l'octet 3,
• L'octet de contrôle est calculé par la centrale DCC en effectuant un "OU EXCLUSIF" ou "XOR",
• Les bits de l'octet 1 et de l'octet 2 sont additionnés bit à bit en utilisant la fonction "OU EXCLUSIF", le résultat de cette opération est ensuite utilisé pour étre additionné à l'octet 3 pour obtenir le résultat final.  
Voir exemple sur La TRAME 4 OCTETS, 16383 Décodeurs et 14 ou 28 pas de vitesse.

12) 
Bit "STOP" à "1".
Fin de transmission du paquet.