Le protocole DCC (ou protocole NMRA) - Version 'BASIC'


Le protocole DCC

Le protocole DCC a été défini par le NMRA (National Model Railroad Association) aux USA. Le protocole en question a été validé définitivement en 1994, en tant que 'standard' national.
En réalité, les bases de ce protocole ont été jetées au début des années 1990 par LENZ, en Allemagne, qui souhaitait améliorer le protocole Märklin (LENZ et Märklin ont travaillé longtemps ensemble à la mise au point des décodeurs de 2° génération, notamment en concevant la puce LME - Lenz Märklin Electronik).

Chez LENZ, on a considéré que le maintien d'une compatibilité avec les générations précédentes de décodeurs portait préjudice aux fonctionnalités que les modélistes étaient en droit d'attendre du numérique. Contrairement à Märklin, dont le protocole de 2° génération est accepté par les anciens décodeurs, le protocole LENZ/DCC est entièrement nouveau et demande des décodeurs spécifiques.



Le signal de commande et d'alimentation

Comme sur le système Märklin, on trouve en sortie du contrôleur un signal carré, qui alterne en permanence entre +18V (limite +22V) et -18V (limite -22V).
Ce signal est destiné à alimenter les décodeurs et les moteurs, mais également à transporter les informations de télécommande.

A la différence du système Märklin, chaque fois qu'une impulsion d'une polarité donnée est envoyée sur les rails, on envoie à la suite une seconde impulsion, de même durée, mais de polarité opposée.
D'un point de vue technique, cette méthode permet d'avoir une valeur moyenne nulle (alors que la valeur moyenne du système Märklin est variable, d'où les variations d'intensité lumineuse des feux parfois observée lorsque le train change d'orientation).

L'état '1' est représenté sur la voie par une impulsion de 58 µs, suivie d'une impulsion inverse de 58 µs (soit 116 µs au total). Toutefois, un décodeur doit considérer comme un '1' des alternances durant chacune entre 52 µs et 64 µs. A l'émission, ces tolérances sont ramenées à 55 µs et 61 µs).

L'état '0' est représenté sur la voie par une impulsion d'au moins 100 µs, suivie d'une impulsion inverse de même durée (soit 200 µs au minimum). Ici aussi, un décodeur doit considérer comme un '0' des alternances durant chacune entre 90 µs et 10000 µs. A l'émission, ces tolérances sont ramenées à 95 µs et 9900 µs). Toutefois, un bit '0' ne peut durer au total plus de 12000 µs.


Des bits aux trames...

Les bits sont toujours envoyés par 'trames'.

Un trame est formée de la façon suivante : Les décodeurs doivent vérifier que les trames qu'ils reçoivent respectent les règles données ci-dessus. Dans le cas contraire, la trame est rejetée par le décodeur.

Ce train habite à l'adresse indiquée...

Comme pour le protocole Märklin, l'octet d'adresse permet au contrôleur d'indiquer le numéro du décodeur à qui est destiné le message.
L'octet d'adresse étant formé de 8 bits, 256 adresses sont utilisables. Toutefois, certaines règles limitent le nombre maximum de décodeurs pouvant être présents sur le réseau à un instant donné :

AdresseFonction
00000000Diffusion : tous les décodeurs qui reçoivent une trame avec cette adresse
éxécutent l'ordre quelle que soit leur propre adresse
00000001
à
01111111
Adresses pour les décodeurs multifonctions
Les adresses de 01100100 à 01111111 sont réservées pour les messages de service
10000000
à
10111111
Adresses pour les décodeurs d'accessoires
11000000
à
11100111
Adresses pour les décodeurs multifonctions à adresse 14 bits
11101000
à
11111110
Adresses réservées pour de futures extensions
11111111'Idle' : cette adresse est utilisée pour diffuser des trames sans action réélle
afin de maintenir une communication permamente sur le réseau

On dispose donc (hormis le cas particulier des adresses sur 14 bits) de 99 adresses disponibles pour les décodeurs multifonctions (décodeurs de locomotives).

A vos ordres...

Le second octet de la trame contient le code fonction. Ce code décrit au décodeur ce que l'on attend de lui.
Selon la valeur des deux premiers bits, le décodeur peut savoir s'il s'agit d'une trame 'BASIC' (ordres simples de traction) ou d'ordres 'EXTENDED' (permettant d'accéder à des fonctions spécifiques, telles que la programmation).

Une commande 'BASIC' commence toujours par les bits '01', sauf pour la commande de RESET, dont l'octet de commande vaut 00000000.
A la réception d'une commande de RESET, le décodeur se met dans le même état que s'il venait d'être alimenté. En particulier, la consigne de traction est ramenée à 0 (arrêt immédiat du moteur).

L'octet de commande 'BASIC' est formé de la façon suivante : 01DUVVVV.
Bits VVVV (3..0)Vitesse
0000Arrêt (avec rampe le cas échéant)
0001Arrêt d'urgence (immédiat)
0010Vitesse 1
0011Vitesse 2
0100Vitesse 3
0101Vitesse 4
0110Vitesse 5
0111Vitesse 6
1000Vitesse 7
1001Vitesse 8
1010Vitesse 9
1011Vitesse 10
1100Vitesse 11
1101Vitesse 12
1110Vitesse 13
1111Vitesse 14

En mode 'BASIC', le protocole DCC ne fait donc pas mieux que Märklin...
Toutefois, la trés grande majorité des décodeurs utilisent le bit U comme un cinquième bit de vitesse (bit de poids faible), doublant ainsi la résolution et offrant 28 vitesses dans chaque direction.
La résolution peut être portée à 126 pas (7 bits de vitesse) moyennant l'utilisation des trames 'EXTENDED'.

Un petit contrôle pour finir...

Le dernier octet d'une trame ('BASIC' ou 'EXTENDED') est un code de contrôle. Ce code est calculé par le transmetteur comme le OU EXCLUSIF (addition sans retenue) des deux précédents octets, bit par bit.
Lorsqu'un décodeur reçoit une trame, il refait le même calcul, et compare le résultat à celui transmis dans la trame. Si le résultat est identique, c'est que la trame a été transmise sans erreur : le décodeur l'accepte et éxécute l'ordre. Sinon, il y a une erreur quelque part : le décodeur rejette la trame et n'éxécute pas l'ordre transmis.
Ce système (appelé techniquement 'contrôle BCC') permet de détecter les erreurs, avec une fiabilité meilleure que 99,5%.

Retour à la page principale