Auteur Sujet: Détection du mode Programmation émanant d'une centrale DCC  (Lu 3164 fois)

lambda95t3

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Détection du mode Programmation émanant d'une centrale DCC
« le: juillet 08, 2017, 11:17:14 am »
Certaines centrales, telles que la Roco z21, ne possèdent qu'une sortie DCC pour l'exploitation du réseau ET pour la programmation des locomotives (en particulier de leur adresse). En général, on installe un inverseur pour réserver une voie à la programmation et isoler le réseau; mais il ne faut pas oublier de le basculer. La loi de Murphy dit que, un jour ou l'autre, quelqu'un programmera sa locomotive par erreur sur le réseau, reprogrammant TOUS les décodeurs qui s'y trouvent.  :-[   .
On ne rit pas: ça vient d'arriver dans mon club avec un débutant qui ne savait pas qu'en programmant sa loco posée sur le réseau, il allait reprogrammer toutes les autres.  >:(

Pour éviter cela, il y a la solution d'acheter une centrale à deux sorties distinctes, réseau et programmation, par exemple une Z21.

Mais ce que j'ai lu sur ce forum me laisse penser qu'il pourrait y avoir une solution moins chère où un Arduino surveillerait les signaux DCC émis par la centrale. S'il détecte un passage en mode programmation, il allume une grosse LED rouge d'alerte et il bascule automatiquement le fameux inverseur (un relais) pour ne programmer que sur la voie de programmation.

Étant complètement débutant en Arduino, ignorant en électronique et peu familier des normes DCC, je suis incapable de traiter un tel problème.
Mais je ne suis sans doute pas le seul à y être confronté.
Je ne sais même pas si un dispositif à base d'Arduino tel que je l'imagine serait possible et/ou judicieux, ou s'il faudrait s'orienter dans une autre direction.

Si quelqu'un a un avis ou une solution "sur étagère" pour ce problème, j'en prendrai connaissance avec grand intérêt (NB: mon temps de réaction est souvent lent, voire très lent).

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 690
    • Voir le profil
Re : Détection du mode Programmation émanant d'une centrale DCC
« Réponse #1 le: juillet 08, 2017, 02:01:06 pm »
Bonjour

Le problème est que le paquet Dcc de programmation envoyé par la centrale ne peut pas être intercepté, il sera reçu par tous les décodeurs raccordés à la voie. L'Arduino le recevra en même temps que tout le monde, et il sera trop tard pour basculer...

A moins de mettre un Arduino intermédiaire entre la centrale et la voie : dans ce cas de figure, l'Arduino analyse tout ce que lui envoie la centrale qui n'est pas raccordée à la voie, et ne renvoie sur les rails que ce qu'il veut bien... Il subsistera un petit délai entre l'émission et la réception des paquets causé par l'analyse puis le renvoi des paquets de l'Arduino, mais ce doit être jouable.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2597
  • 100% Arduino et N
    • Voir le profil
Re : Détection du mode Programmation émanant d'une centrale DCC
« Réponse #2 le: juillet 08, 2017, 08:12:04 pm »
Question simple : est-ce la z21 dispose d'une entrée permettant de savoir si elle est reliée à la voie principale ou la voie de programmation et un moyen de bloquer ce mode de programmation ?

Cordialement,
Dominique

lambda95t3

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Détection du mode Programmation émanant d'une centrale DCC
« Réponse #3 le: juillet 09, 2017, 12:52:21 pm »
Merci pour les indications.

En ce qui concerne la z21:
- sur la centrale elle-même, rien ne permet de savoir si la sortie DCC est reliée au réseau ou à une voie de programmation. C'est bien le problème. Ce n'est qu'en installant un inverseur en aval de cette sortie qu'on pourra basculer de l'un à l'autre. Je pense qu'il en est de même pour toutes les centrales à sortie DCC unique.
- et je ne connais pas de moyen d'empêcher la z21 de basculer en mode Programmation.
C'est pour cela que j'imaginais un contrôle en aval par un Arduino pour détecter le signal critique et agir en conséquence.
C'est ce que décrit Thierry.
Perso, je voyais plutôt l'Arduino branché comme une voie normale sur la sortie DCC avec un relais qui coupe le DCC vers le réseau quand l'Arduino détecte le signal de programmation.
La question de délai est évidemment critique : est-ce faisable avant qu'il ne soit trop tard?

Et bien sûr, l'Arduino ne coupe rien si on a raccordé la centrale à la voie de programmation. Mais ça, c'est facile à faire avec l'inverseur réseau  <> voie de programmation qui, en plus, devra simplement couper l'alimentation de l'Arduino quand il donne la voie de programmation, arrêtant ainsi la surveillance dans ce cas. À moins que je néglige quelque chose qui m'échapperait?

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2597
  • 100% Arduino et N
    • Voir le profil
Re : Détection du mode Programmation émanant d'une centrale DCC
« Réponse #4 le: juillet 09, 2017, 02:35:05 pm »
Bonjour,

Donc la z21 est mal foutue (désolé !), je ne savais pas que c'était à ce point et je suis content de m'en passer, en particulier en utilisant le logiciel DCC++ qui est abondamment décrit dans la série d'articles "Réalisation de centrales DCC avec le logiciel libre DCC++" et notamment sa mise en oeuvre http://www.locoduino.org/spip.php?article187. Et les articles à venir vont considérablement faciliter la commande web.

Alors que la Z21 (sa grande soeur) dispose des 2 sorties. Est-ce ça le marketing où on prend le client pour un C..onsommateur  :'( ?

Maintenant, s'il faut faire avec, la proposition de Thierry est la bonne : pour décider si une commande DCC est destinée à la voie de programmation, il faut analyser toutes les commandes de programmation pour les bloquer ou analyser les commandes pour le voie principale, par exemple, toutes celles qui contiennent une adresse DCC pour bloquer les autres.

Les documents des standards NMRA qui décrivent le protocole sont ici :
https://www.nmra.org/index-nmra-standards-and-recommended-practices
C'est dans la section S-9.2 et les commandes pour la voie de programmation sont dans la section S-9.2.3 (DCC service mode).

Je peux vous confirmer qu'il est quasiment impossible de demander à un Arduino d'analyser en temps réel les commandes pour couper à temps une commande de programmation. C'est même le relai qui serait l'organe le plus lent.  Le plus sûr est donc de stocker les commandes pour les analyser et les renvoyer plus tard (quelques fractions de seconde).

Mais rien que cela est déjà plus compliqué que de réaliser une centrale DCC++

C'est à vous de choisir : revendre la z21, ou l'upgrader en Z21 (si c'est possible) ou passer à DCC++

C'est bien pour cela qu'a Locoduino nous nous efforçons de vous donner toutes les informations et les chances de réaliser par vous même vos circuits de commande par Arduino. Nous ne voulons pas "hacker" les solutions du commerce qui vous entraînent dans une dépendance à laquelle il est parfois difficile de se soustraire.

Comme je n'ai pas eu le temps d'explorer tous les forums sur la z21, je peux avoir oublié une solution donc je vous retourne la question : si vous trouvez quelque chose, je vous remercie de le partager sur ce fil.

Amicalement
Dominique
Cordialement,
Dominique

lambda95t3

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Détection du mode Programmation émanant d'une centrale DCC
« Réponse #5 le: juillet 15, 2017, 11:18:38 am »
Merci  :) pour cet avis très précieux: je prends bonne note qu'il ne vous semble pas possible d'agir suffisamment rapidement avec un Arduino pour bloquer en temps réel une commande de programmation émise par la centrale.

Quant aux autres options, soit elles consistent à bâtir une "usine à gaz" autour de la z21, soit à reprendre le problème à la base, ce qui me paraît nettement plus rationnel.
Quant à la conception et aux spécifications de la z21, j'ai un peu l'impression qu'elles découlent plus d'une étude marketing de segmentation de marché que du souhait d'apporter au meilleur coût une solution optimale pour le client   :(  . Mais ça marche puisque le prix d'appel de la z21 fait que notre club avait décidé d'en acheter une et que nous ne sommes sans doute pas les seuls à avoir été "piégés" par ce marketing sans pleinement mesurer les contraintes ultérieures en termes "d'exploitation club".

Nous allons redébattre du sujet z21 au sein de notre club; je doute que nous nous orientions vers une solution DCC++ car peu d'entre  nous possèdent un niveau de maîtrise suffisant de l'Arduino et de sa programmation et/ou du temps à y consacrer.

Cela dit, je ne manquerai pas de revenir sur ce forum/fil lorsque nous aurons pris une décision, qui dans l'immédiat pourrait bien être "status quo" compte tenu d'autres priorités, et bien sûr partager au cas où nous trouverions une solution. Encore merci pour vos avis.