Le PROTOCOLE DCC pour la PROGRAMMATION des DÉCODEURS d'ACCESSOIRES
(Digital Command Control)




Le DÉCODEUR DCC
Le décodeur contient des variables de configuration appelées (CV), qui sont des paramètres de configuration stockés en mémoire non volatile dans le décodeur. 
Ces variables de configuration pour les décodeurs d'accessoire peuvent être modifiées pour adapter chaque décodeur à l'utilisation envisagée et personnaliser le fonctionnement des accessoires branchés au décodeur, aiguilles, signaux, lampadaires....

A l'origine les CV 1-512 étaient réservés à l'utilisation de la NMRA.
Cependant de nombreux décodeurs d'accessoires ont été vendus et utilisaient les CVs 1-512. Cela a été fait pour diverses raisons, notamment l'impossibilité pour certaines stations de commande d'accéder à des CVs supérieurs à 512.  

 En reconnaissance de nombreux décodeurs accessoires utilisant les CVs inférieurs et le désir de créer plus d'espace pour les fabricants, les définitions de CV telles que définies précédemment ont été déplacées de 513 à 1024 vers 1 à 512.  
L'utilisation des CV 513-1024 est facultative. Le fabricant peut utiliser ces CVs supérieurs de la manière qu'il juge appropriée.  

Ces changements permettront aux décodeurs d'accessoires existants d'utiliser les CV 513-1024 tels que définis précédemment. 

Il faut toujours se reporter à la notice du décodeur pour connaître les particularités de programmation ainsi que le rôle de chaque Cv et leurs paramétrages. 
 

decodeur accessoire
Décodeur d'accessoire

TRAME 6 OCTETS pour la PROGRAMMATION de 510 DÉCODEURS
Le protocole DCC a prévu plusieurs possibilités concernant la commande des accessoires.
Nous ne verrons que la trame pour la programmation de 510 décodeurs d'accessoire qui suffit amplement pour un réseau personnel.

Trame 6 octets :

     • Pour la commande de 510 décodeurs, correspondant à 2040 adresses de sorties d'accessoire.
 

Préambule   Octet 1   Octet 2   Octet 3   Octet 4
  Octet 5   Octet 6  
1111111111111111 0 1 0 A A A A A A 0 1 A A A C D D D 0  1 1 1 0 C C Cv Cv  
0
Cv Cv Cv Cv Cv Cv Cv Cv   0  D D D D D D D D  0  C C C C C C C C  1
1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14)
Trame DCC 6 octets pour programmation des accessoires

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 :
L'octet commence par le bit 7 à "1" et 6 à "0" indiquant que l'on s'adresse à un accessoire.
• Les 6 bits suivants contiennent l'adresse de l'accessoire en combinaison avec les bits 6, 5, 4, de l'octet 2 à commander en binaire. 
    • Les 6 bits de l'octet 1 représentent les poids faibles et les 3 bits de l'octet 2 les poids forts.

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

5) Envoi de l'octet 2 :
• L'octet commence par le bits 7 à "1" qui indique que l'adresse est codée sur 9 bits,
• Les bits 6, 5, 4, contiennent l'adresse de l'accessoire en combinaison avec les bits 5, 4, 3, 2, 1, 0, de l'octet 1.
    • Les 3 bits de l'octet 2 représentent les poids forts et les 6 bits de l'octet 1 les poids faibles.
    • Les 3 bits de l'octet 2 sont codés en complément à 1.
      • Exemple :
             • 110 vaut 001 en décimal : 1
             • 101 vaut 010 en décimal : 2
             • 100 vaut 011 en décimal : 3
             • 011 vaut 100 en décimal : 4             
             • 010 vaut 101 en décimal : 5
             • 001 vaut 110 en décimal : 6
             
             • 111 vaut 000 en décimal : 0
             • 000 vaut 111 en décimal : 7

• Le bit 3 "C" indique si une sortie modifiée ou toutes les CVs du décodeur :
   • "1" Modifie la sortie indiquée par "DDD",
   • "0" et "D2 = 0", "D1 = 0", "D0 = 0" Modifie toutes les sorties.

• Les bits 2, 1, 0, "D, D, D" indique l'élément dans une paire et l'accessoire concerné. 
   • Le décodeur peut piloter 4 paires de sorties :
   • "D2", "D1", "D0" définissent quelles paires de sortie sont concernées. 

6) 
Séparation par un bit "START" à "0".
7) Envoi de l'octet 3 
• L'octet commence par les bits 7, 6 et 5, à "1", (111 : Correspondant à : Instruction d'Accès à la Variable de Configuration) 
• Le bit 4 vaut : 
"0" : Forme longue qui permet d'accéder à toutes les variables de configuration, 
 
• Les bits 3, 2, "CC" définissent la variable à modifier : 
"CC" = "01" vérification de l'octet :
 Nota
"CC" = "11" écriture de l'octet :
 Nota
"CC" = "10" manipulation des bits : 
         L'instruction pour la manipulation utilise un format de donnée particulier : 111CDBBB 
                      Ou : 
                       • C décrit si l'opération est un bit de vérification ou une opération de bit d'écriture.(C = 1, Ecriture du bit : C = 0, vérification du bit), 
                       • D contient la valeur du bit à vérifier ou à écrire, 
                       • BBB représente la position du bit dans le CV. 
 
• Les bits 1, 0, "Cv Cv" contiennent l'adresse de la Cv à modifier en combinaison avec les 8 bits de l'octet 4. Ils représentent les bits de poids forts. 
• Les 8 bits suivants de l'octet 4 contiennent l'adresse de l'accessoire en combinaison avec les bits 1, 0, de l'octet 3 à commander en binaire. L'octet 4 représente les bits de poids faibles. 

Nota : La variable de configuration sélectionnée est l'adresse sur 10 bits plus 1. Par exemple, pour adresser la CV 3, l'adresse 10 bits est "00 00000010".

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

9) Envoi de l'octet 4 :  
• Contient l'adresse de la Cv à modifier en combinaison avec les 2 bits de l'octet 3.

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

11) Envoi de l'octet 5 :  
• Données à placer dans la CV (0 à 255) sélectionnée par l'adresse codée sur 10 bits. Le contenu de la variable Cv sélectionnée est remplacé par cette valeur.


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

13) Envoi de l'octet 6 de contrôle :
• La valeur des bits de l'octet de contrôle dépend de l'octet 1 de l'octet 2 de l'octet 3 de l'octet 4 et de l'octet 5,  
• 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 puis ensuite à l'octet 4 puis ensuite à l'octet 5 pour obtenir le résultat final.

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

Nota :
L'octet de contrôle calculé est inséré dans la trame DCC qui est ensuite envoyé 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 parasite pouvant 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.

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

VIDÉO de PROGRAMMATION d'un DÉCODEUR D'ACCESSOIRE
Vidéo montrant la programmation d'un décodeur d'accessoire à l'aide de la centrale DCC version 2.1.