Espion DCC

 Le DCC c'est bien mais c'est encore mieux quand on arrive à comprendre ce qu'il fait ! Depuis des années nous avons mis au point des centrales et des montages impliquant le DCC. En cas de doute sur une commande ou de panne, il est nécessaire d'avoir un outil pour capturer et décoder les paquets DCC. Espion DCC lève-toi !


Que disent les normes ?

Dans le monde idéal du DCC, les normes encadrent ce système. Les normes sont accessibles gratuitement sur le site du MOROP et de la NMRA (voir liens utiles). Les Normes Européennes de Modélisme, NEM 670, 671, 672 ont été mises à jour et il est nécessaire de les lire car certaines évolutions ne permettent pas de garder la compatibilité avec les anciens décodeurs. De plus les NEM font référence à d'autres normes : RailCommunity (www.railcommunity.org) :

RCN-210 DCC Transmission du bit

RCN-211 DCC Structure d’un paquet, et structure de base de tous les paquets et champs d’adresses

RCN-212 DCC Commande de l’exploitation des décodeurs dans les véhicules, et commandes des décodeurs des véhicules

RCN-213 DCC Commandes pour l’exploitation des décodeurs d’accessoires

RCN-214 DCC Commandes de configuration

Il est important de distinguer les paquets pour les locomotives de ceux des accessoires.

Pour les locomotives, la structure est la suivante (voir NEM 671):

Un préambule qui doit contenir au moins 12 bits 1 (111111111111),

L’adresse de la loco 0AAAAAAA. Le bit à suivant précède l’adresse (par exemple pour l’adresse 37 le codage sera 00110111),

La commande de direction et vitesse. Le 0 suivant marque le début de la commande qui suit 01DCSSSS, D = 1 pour la marche avant, D = 0 pour la marche arrière, CSSSS est la vitesse codée en 28 pas dans chaque sens (par exemple pour la vitesse 5 en avant : 01110100).

PPPPPPPP est l'octet de contrôle 


Pour les accessoires, la structure est la suivante pour les NEM (voir NEM 671 et RCN-213):

Basic  = {preamble} 0 10AAAAAA 0 1AAADAAR 0 PPPPPPPP 1

Etendu = {preamble} 0 10AAAAAA 0 0AAA0AA1 0 DDDDDDDD 0 PPPPPPPP 1

Les adresses vont de 1000-0000 à 1011-1111 incluse (128 à 191).

La structure du paquet pour le décodeur d'accessoires avec une adresse simple sur 11 bits est :

 10AA-AAAA 1AAA-DAAR

La structure du paquet pour le décodeur d'accessoires avec une adresse étendue sur 11 bits est:

 10AA-AAAA 0AAA-0AA1

Le D correspond à l'activation/désactivation de la sortie. La sortie est activée si D = 1. 


Pour les accessoires, la structure est la suivante pour la NMRA (voir RP-921 2006 Aug 21 Extended Packet Format) :

NMRA Basic           = {preamble} 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1

NMRA Etendu          = {preamble} 0 10AAAAAA 0 0AAA0AA1 0 000XXXXX 0 EEEEEEEE 1

Les décodeurs numériques accessoires peuvent être conçus pour commander des dispositifs à activation momentanée ou constante.

La durée d'activation de chaque sortie est contrôlée par les variables de configuration CVs #515 à 518. 

Le bit 3 du deuxième octet "C" est utilisé pour activer ou désactiver le dispositif adressé.

(Notez que si la durée d'activation prévue du dispositif est inférieure à ou égale à la durée définie, aucune désactivation n'est nécessaire). 

Étant donné que la plupart des dispositifs sont appairés, la convention veut que le bit "0" du deuxième octet soit utilisé pour activer ou désactiver le dispositif adressé.

Les bits 1 et 2 du deuxième octet sont utilisés pour indiquer laquelle des 4 paires de sorties le paquet contrôle. 

Les bits les plus significatifs de l'adresse de 9 bits sont les bits 4 à 6 du deuxième octet de données.

Par convention, ces bits (bits 4 à 6 du deuxième octet de données) sont en complément à un.

Attention, les codages ne sont pas tout à fait les mêmes entre NEM/RailCommunity et NMRA.


Espion lève-toi !

L'espion DCC est un outil développé et mis au point par C. Ferrari (voir liens utiles). Il est simple et fonctionne très bien. Il est constitué d'un Arduino Uno et d'un adaptateur sur une petite carte.

Vue de l'espion connecté au PC


Schéma du circuit de la carte d'adaptation

Pour avoir le schéma complet voir les liens ci-après.

Nous avons d'abord fait un essai avec une centrale digitale que nous connaissons bien : Le TCOUL.

Vue des paquets envoyés par la centrale TCOUL

Le décodage correspond bien à nos actions sur la locomotive avec l'adresse n°3. On peut remarquer beaucoup d'erreurs de bits manquants et erreur ni 0 et 1. Cela est probablement dû à la piètre qualité des longs branchements pour se raccorder à la centrale pour ce test. En capturant les paquets au plus proche de la sortie de la centrale, le taux d'erreur diminue significativement.

Passons au décodage des accessoires. Nous faisons d'une pierre deux coups en utilisant notre programme test pour la commande de la nouvelle gare d'échange. Nous avons codés les commandes en se basant sur la dernière version de la norme. Notre gare d'échange a 12 aiguilles dont les adresses commencent à 131.


Exemple de décodage de commandes d'aiguilles envoyées par un SPROG

Prenons la ligne de la commande de l'aiguille à l'adresse 131: 10000011 11011001 01011010

L'espion DCC décode :

1000 0011 1101 1001 0101 1010

Seuls les deux premiers octets nous intéressent:

1000 0011 1101 1001

Le 10 dans le premier octet et le 1 dans le deuxième octet correspondent à la commande d'accessoires.

L'adresse correspond au 000011 101 avec les 3 derniers bits inversés soit : 010 000011 (binaire) = 131(décimal).

Les chiffres sur la deuxième ligne indique le rang des bits : 9 bits de 0 à 8.

On a donc 512 adresses DCC pour les décodeurs d'accessoires avec chacun 8 E/S. On parle quelque fois de 4096 adresses (512 x 8).

Le 1 indique que la sortie est activée. A priori on envoie toujours "activé".

Les 3 dernier bits du deuxième octet sont pour le numéro de sortie. La norme indique qu'on considère que les 2 premiers bits sont le numéro de paire de sortie, et le dernier indique si on active la sortie paire ou impaire.

Donc on utilise la paire 0 et on active soit la sortie "paire" ou "impaire" selon le langage de la norme pour bouger l'aiguillage.

On peut considérer qu'on a 8 sorties indépendantes sans parler de paires.

Exemple de décodage de commandes d'aiguilles et signaux par les itinéraires

L'espion est simple à utiliser et le décodage fonctionne bien. Dommage, qu'il n'y ait pas de documentation associée et que la trame ne comporte pas un décodage intermédiaire en précisant les bits d'adresse et de commande. 

Un grand merci à Jacques qui a trouvé et réalisé cet espion dont nous ne pouvons plus me passer.

Liens utiles:

Normes Européennes de Modélisme ici

Espion DCC ici

le schéma : ici

les programmes de décodage de la trame sur le site : ici