Auteur Sujet: Question mise en place CAN dans la centrale DCC  (Lu 16290 fois)

becbunsen

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
Question mise en place CAN dans la centrale DCC
« le: décembre 06, 2023, 09:44:26 pm »
Bonjour,

J'envisage de mettre en place un bus CAN dans mon reseau pour la retrosignalisation et les automatismes.
J'ai 2 questions de débutants:

- Comment implanter le CAN dans la centrale DCC ? j'ai un Mega avec un shield moteur, je le commande trés facilement en liaison serie. je peux contourner le probleme avec un arduino qui va transcrire mes ordres CAN en messages serie pour la centrale mais je pense qu'on peut brancher directement l'interface CAN sur le mega de la centrale. je ne sais pas alors comment gerer le code

- Existe t'il un protocole "tout fait" pour les messages CAN concernant le modelisme ferroviaire ou chacun crée le sien selon ses besoins?

Merci de vos retours
Julien

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #1 le: décembre 06, 2023, 09:55:56 pm »
- Comment implanter le CAN dans la centrale DCC ? j'ai un Mega avec un shield moteur, je le commande trés facilement en liaison serie. je peux contourner le probleme avec un arduino qui va transcrire mes ordres CAN en messages serie pour la centrale mais je pense qu'on peut brancher directement l'interface CAN sur le mega de la centrale. je ne sais pas alors comment gerer le code
J'ai ma centrale qui comprend un Mega, une carte Can et le fameux LMD18200.
voir https://forum.locoduino.org/index.php?topic=290.30
Avec DCCpp il existe des fonctions API pour piloter les machines, en plus des autres commandes possibles.
Il faut écrire du code pour traduire les messages Can en commandes DCC.
Il y a des explications sur mon fil du forum.
Si besoin, je peux te transmettre des bouts de code.

Citer
- Existe t'il un protocole "tout fait" pour les messages CAN concernant le modelisme ferroviaire ou chacun crée le sien selon ses besoins?
Non pour le moment mais on démarre une réflexion pour LaBox qui est pourvue du Can en standard. On publiera quand on aura quelque chose.
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #2 le: décembre 06, 2023, 10:01:45 pm »
Bonjour,
utiliser le protocole CAN n'est pas immédiat et Dominique confirme que c'est une réflexion en cours pour LaBox.
Christophe a fait valoir que Marklin l'utilise et donc avait standardisé pour son usage.
La communication du satellite V1 (voir l'article) en a fixé quelques règles.
Mais avant de se poser la question de la communication, mieux vaut se poser celle de l'architecture.
LaBox ne se veut pas un gestionnaire.
Cordialement

becbunsen

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #3 le: décembre 07, 2023, 09:02:26 am »
Mon réseau est plutôt du type étagère organisé en module que j’ajoute successivement, je n’ai pas la place pour un grand réseau permanent et je préfère m’appliquer par petit bout avec un module pleinement opérationnel avant de passer au suivant.

Je voudrais donc que chaque module ait un maximum d’automatismes avec un gestionnaire propre et limiter au mieux le recours à un gestionnaire central. Je n’ai de toutes façons pas un grand nombre de voies.
J’ai Jmri, ça fonctionne mais je ne veux pas l’utiliser
Il faut donc que je relie chaque gestionnaire de module à la centrale pour agir sur le Controle des loco.

La plus grosse difficulté est le Controle de la loco. Pour les tests, je peux spécifier l’adresse de la loco dans le code mais ce n’est pas satisfaisant si on veux utiliser n’importe quelle loco.
ABC permet des freinages et redémarrage sans connaître l’adresse, c’est la solution sur laquelle j’etais parti, notamment pour la sécurité ( canton occupé, aiguille non positionnée) et les arrêts en gare.

L’ideal serait railcom et j’attend avec impatience la centrale compatible!!
Le principe: une loco rentre sur le module, elle est identifiée et peut donc être contrôlée sur le module en fonction des détecteurs de celui-ci. Une fois sortie, c’est le gestionnaire de l’autre module qui prend le relais.




Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #4 le: décembre 07, 2023, 09:44:28 am »
Avez-vous un/des schémas. Plans et des photos ?
Si je comprends bien il s’agit de plusieurs réseaux indépendants reliés entre eux par un/des voies et un système de commande centralisé pour circuler d’un réseau a l’autre ?
Cordialement,
Dominique

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1088
  • HO avec DCC++
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #5 le: décembre 08, 2023, 09:22:43 am »
Michel a raison de metre le doigt sur l’aspect technique qui n’est pas, et de loin, le principal problème.

Faire circuler des messages CAN sur un bus, on sait faire.

Mais pour faire quoi et comment le faire au mieux. Et il a donc raison s’insister, qu’ai-je envie de faire sur mon réseau ? Car même si nous cherchons à standardiser le plus possible, nous aurons du mal à tout appréhender.

C’est vrai que j’ai beaucoup étudier les commandes CAN de Marklin et il faut franchement reconnaitre qu’ils ont fait un super boulot dont je suis persuadé nous devons nous inspirer.

C’est la messagerie qui est le cœur de la solution, la vraie valeur ajoutée. Combien d’appareils à piloter, dans quelles catégories (Traction, rétro signalisation de capteurs tout-ou-rien), de détection plus élaborées (Railcom, RFID, MFX…). Comment élaborer des messages aussi simples que possibles et portant le plus efficace possible. Voilà un petit aperçu.

Ce serait effectivement intéressant que vous soumettiez vos souhaits car je cherche à faire actuellement un inventaire des besoins pour voir le champ global de la réflexion.

S’inspirer de Marklin a ses limites car ils n’utilisent le CAN que pour la seule traction (au sens large tout de même) mais pas à la rétro signalisation par exemple qui reste en S88, même techniquement un peu amélioré.

Michel a encore raison, j’ai mis les doigts dedans (le CAN) et je n’ai pas l’intention de m’arrêter avant tout de suite. On en reparlera donc volontiers.

Sur l’aspect automatismes dont vous parlez, je vais publier très prochainement le début d’une série d’articles sur ce que j’ai appelé « les satellites autonomes ». Je crois que ça répond bien à votre attente. Il est associé à Railcom effectivement, car si LaBox n’a pas encore Railcom, nous avons tout de même des centrales compatibles Railcom. Avez-vous lu l’article : https://www.locoduino.org/spip.php?article334

Et ils utilisent un bus CAN pour communiquer. La vidéo ici n’est pas forcement très explicite mais elle montre comment une locomotive est tout d’abord ralentie puis arrêtée sans aucune intervention humaine quand le canton précédent est occupé. https://youtu.be/qTaGxd1uDpA?si=h6VSbw2_M5puNT3i

N'hésitez pas à revenir vers moi.

Bien amicalement

Christophe

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1088
  • HO avec DCC++
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #6 le: décembre 08, 2023, 09:38:09 am »
Je profite de ce fil pour poser ma question qui est relative au CAN. Vous semble t'il possible d'associer un transceiver CAN à un ATTiny par exemple ? Je me dis qu'il peut être intéressant de mettre sur le bus CAN de petits appareils comme par exemple 4 boutons commutateurs d'aiguilles qui adresseraient leur commande à un satellite par exemple. Pour 4 boutons, je ne vois pas mettre un Nano ou un ESP par exemple.

Ou alors, quel est le plus simple et le moins couteux des microcontrôleurs susceptibles de faire le job ?

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #7 le: décembre 08, 2023, 12:04:53 pm »
Bonjour Christophe,
c'est une question intéressante, comme l'application visée.
Un petit tour sur Internet ne m'a pas permis de trouver de bibliothèque CAN pour Attiny, apparemment il y a eu des tentatives ...
Cela dit, on est obligé de passer par un module driver CAN à MCP2565 (2,7€)
Un ATtiny en module passe par un Digispark avec une mise en œuvre un peu acrobatique. (1 à 3€)
Un ATtiny85 chez JLCPCB est à 2.25$
Un Arduino pro mini chez Aliexpress est à 2€
Et pour finir, comment intégrer tout ça : une mini carte mère ou un un pcb avec les composants bruts ?
Cordialement

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1088
  • HO avec DCC++
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #8 le: décembre 08, 2023, 02:16:26 pm »
Merci Michel pour la réponse. J’avais fait une rapide recherche et je n’avais rien trouvé de probant comme toi. Et effectivement, ce que je voyais c’était des économies compte tenu de la simplicité du montage, mais à moins de 3€ le pro mini, ça satisfait le cahier des charges.

Bien. A toi

Christophe

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #9 le: décembre 08, 2023, 03:37:13 pm »
Christophe,
Ca me rappelle mes prototypes de Satellites V1 : Un Pro-mini et une carte Niren !

Il m'en reste dans les fonds de tiroir si tu en veux qq uns..
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #10 le: décembre 08, 2023, 04:02:07 pm »
En terme de coût, je me demande si un ESP32 + un MCP2562 n'est pas l'optimum :
5€ + 1€ chez Aliexpress. Mais ça consomme plus ...
Cordialement

becbunsen

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
Re : Re : Question mise en place CAN dans la centrale DCC
« Réponse #11 le: janvier 08, 2024, 12:51:49 am »
Michel a raison de metre le doigt sur l’aspect technique qui n’est pas, et de loin, le principal problème.

Faire circuler des messages CAN sur un bus, on sait faire.

Mais pour faire quoi et comment le faire au mieux. Et il a donc raison s’insister, qu’ai-je envie de faire sur mon réseau ? Car même si nous cherchons à standardiser le plus possible, nous aurons du mal à tout appréhender.

C’est vrai que j’ai beaucoup étudier les commandes CAN de Marklin et il faut franchement reconnaitre qu’ils ont fait un super boulot dont je suis persuadé nous devons nous inspirer.

C’est la messagerie qui est le cœur de la solution, la vraie valeur ajoutée. Combien d’appareils à piloter, dans quelles catégories (Traction, rétro signalisation de capteurs tout-ou-rien), de détection plus élaborées (Railcom, RFID, MFX…). Comment élaborer des messages aussi simples que possibles et portant le plus efficace possible. Voilà un petit aperçu.

Ce serait effectivement intéressant que vous soumettiez vos souhaits car je cherche à faire actuellement un inventaire des besoins pour voir le champ global de la réflexion.

S’inspirer de Marklin a ses limites car ils n’utilisent le CAN que pour la seule traction (au sens large tout de même) mais pas à la rétro signalisation par exemple qui reste en S88, même techniquement un peu amélioré.

Michel a encore raison, j’ai mis les doigts dedans (le CAN) et je n’ai pas l’intention de m’arrêter avant tout de suite. On en reparlera donc volontiers.

Sur l’aspect automatismes dont vous parlez, je vais publier très prochainement le début d’une série d’articles sur ce que j’ai appelé « les satellites autonomes ». Je crois que ça répond bien à votre attente. Il est associé à Railcom effectivement, car si LaBox n’a pas encore Railcom, nous avons tout de même des centrales compatibles Railcom. Avez-vous lu l’article : https://www.locoduino.org/spip.php?article334

Et ils utilisent un bus CAN pour communiquer. La vidéo ici n’est pas forcement très explicite mais elle montre comment une locomotive est tout d’abord ralentie puis arrêtée sans aucune intervention humaine quand le canton précédent est occupé. https://youtu.be/qTaGxd1uDpA?si=h6VSbw2_M5puNT3i

N'hésitez pas à revenir vers moi.

Bien amicalement

Christophe

Merci de vos retours, Je reviens ici tardivement, j'avoue que je cherche encore le mode de fonctionnement de mon réseau. Ce qui est sur: c'est que mon reseau est de type étagere (etroit) par module et évolutif. je ne travaille que sur un module à la fois (1,20m de long sur 30 de large) et je ne connais pas à l'avance mes futurs modules, j'envisage quand même une boucle de retournement d'un coté.
Le "modele" de ce que j'aimerai réaliser, en terme de taille et d'aspect serait (en toute modestie...) quelque chose comme celui-ci

Dans cet exemple, le fonctionnement des 2 gares pourrait être indépendant (il faut juste ne pas envoyer de trains de chaque coté comme c'est une voie unique)
Pour l'instant, J'attaque mon second module qui sera une simple gare à 2 voies + 1 voie de garage. J'ai conçu un connecteur en 3D pour bien aligner les modules et les extrémités des rails sont soudés sur une bande de PCB vissé dans le module. (il faut que je trouve comment mettre des photos.)
Concernant la connectique, j'ai envisagé une connection entre les modules par connecteurs Molex 6 poles : 2 pour le DCC, 2 pour un 12V et 2 pour le CAN.
La connection Can permet aux modules d'interagir avec la traction mais j'aimerai un maximum d'automatisation en local (feu et freinage en fonction des position d'aiguilles et des occupations de cantons.

Le but n'est pas forcement de planifier des itinéraires compliqués mais simplement d'éviter les collisions et provoquer des arrets en gare.
Bref je cherche encore
j'avais envisagé l'utilisation du freinage ABC avec une bonne configuration de chaque locomotive, mais le railcom simplifierait évidement la donne.

Pour l'instant, j'avoue être betement bloqué par l'impossibilité de controler mes aiguilles en DCC....impossible de decoder le signal, j'ai fait 3 montages, éssayé plusieurs valeurs..... j'ai commandé les composants de Labox pour voir si ca ne vient pas de ma centrale DCC.

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1088
  • HO avec DCC++
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #12 le: janvier 08, 2024, 08:47:33 am »
Bonjour becbunsen,

Tu abordes plusieurs sujets en un.

Tout d’abord dans le titre du sujet où tu parles de mettre en place CAN dans la centrale DCC. Bon, plus exactement, je pense que tu veux dire, « comment piloter ma centrale DCC en utilisant un bus CAN ».

Tout dépend bien sur de ta centrale, mais si par exemple tu utilises LaBox de Locoduino, nous avons, mes camarades Dominique, Michel et moi-même développé et testé des commandes CAN qui permettent de piloter LaBox.

Tu trouveras sur ce lien le programme complet de LaBox auquel j’ai ajouté les fichiers « CanMsg .h» et « CanMsg.cpp »

https://github.com/BOBILLEChristophe/CommandStation-EX-LaBox2/blob/main/CanMsg.cpp

Dans le fichier « config.LaBox.h », nous avons ajouté ligne 181 #define CAN en plus des paramètres spécifiques à LaBox

#define USE_HMI
#define HMI_SHOW_CURRENT
#define CAN

Enfin, le fichier « CommandStation-EX-LaBox2.ino » pour inclure le CAN.

Dans le fichier CanMsg.cpp tu vas trouver un certain nombre de commande qui permettent de piloter les locomotives en CAN (à partir de la ligne 113) :

uint16_t loco = 0;
      if (cmde < 0xFA)
        loco = (frameIn.data[0] << 8) + frameIn.data[1];

      switch (cmde) // Fonction appelée
      {
      case 0xF0:
        DCC::setThrottle(loco, frameIn.data[2], frameIn.data[3]);
        xQueueSendToBack(xQueue, &frameIn, 0);
        break;
      case 0xF1:
        DCC::setFn(loco, frameIn.data[2], frameIn.data[3]); // frame.data[2] = fonction, frame.data[3] : 'on' ou 'off'
        break;
      case 0xF7:
        // WRITE CV on MAIN <w CAB CV VALUE>
        DCC::writeCVByteMain(loco, frameIn.data[2], frameIn.data[3]);
        break;
      case 0xFE:
        TrackManager::setMainPower(frameIn.data[0] ? POWERMODE::ON : POWERMODE::OFF);
        xQueueSendToBack(xQueue, &frameIn, 0);
        break;
      case 0xFF:
        DCC::setThrottle(0, 1, 1); // emergency stop
        xQueueSendToBack(xQueue, &frameIn, 0);
        break;


Comme tu le vois, nous trouvons les commandes de traction, les commandes de fonction (jusqu’à 28 fonctions), la mise sous tension du réseau, l’emmergency stop et même la possibilité de modifier les CV qui sont modifiables sur la POM comme le son.


Sur cet autre lien, tu trouveras maintenant un programme conçu pour. Tester toutes ces commandes CAN : https://github.com/BOBILLEChristophe/Test_CommCan_LaBox_2

Ce programme doit être installé sur n'importe quel Arduino relié au bus CAN avec la centrale, il tourne en automatique pour voir s'executer une à une les principales commandes à destination de la centrale.

Voilà déjà pour commander une centrale DCC avec des commandes CAN.

Pour le pilotage en automatique de ce type de réseau, je t’en reparle dans la journée.

becbunsen

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #13 le: janvier 08, 2024, 08:58:57 pm »
Merci, je vais etudier tout ça mais c'est en tous cas exactement l'information que je cherchais!

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1088
  • HO avec DCC++
    • Voir le profil
Re : Question mise en place CAN dans la centrale DCC
« Réponse #14 le: janvier 08, 2024, 09:06:17 pm »
N'hésite surtout pas à revenir vers moi pour plus d'explications comme par exemple la mise en œuvre concrète. Par ailleurs pour la gestion du petit réseau que tu envisages, je t'invite à suivre ce que je publie sur les satellites autonomes sur le forum et sans doute bientôt sous forme d'articles.

Bon courage

Christophe