Comprendre et utiliser le protocole CAN de Marklin

JiPé et Alain

Comme je sais que vous connaissez l’Arduino, est-ce que vous pouvez completer le programme pour ajouter des Serial.print pour visualiser les valeurs des datas

Je mets en téléchargement la section 3.4 qui a trait aux commandes de vitesse

marklin_can_protokoll_42_43.pdf (75,4 Ko)

Pour connaitre l’adresse de la locomotive, on peut lire les 4 octets ensembles avec

Serial.println(frame.data32[0]);

data32[0] permet de lire les 32 bits d’un bloc à partir de l’octet 0

Pour la vitesse Serial.println(frame.data16[4]);

data16[4]) c’est 2 octets de datas (16 bits) à partir dela 5° case du tableau data !

Notez que vous verrez 2 fois une commande qui vous paraîtra similaire, mais ce n’est pas le cas, le protocole prévoit que chaque commande soit confirmée. Dans l’une, vous aurez le bit 17 de l’identifiant à 0 (commande) ou à 1 (réponse)

Christophe

2 « J'aime »

OUI, mais pas tout de suite.
Je veux faire les autres Serialprint() avant pour explorer un peu …
Mais déjà comme cela, c’est un plaisir d’appuyer sur un bouton de la MS2 et de voir la réaction en console de l’ordi.
Merci bien Christophe.

Alain

Vite fait (à l’arraché):

    case 0x06:  // Fonctions
         Serial.print("data[3] : ");Serial.println(frame.data[3]);
         break;

J’obtient successivement data[3] = 5 pour une BR74; 6 pour une V200, 7 pour une BR24, 8 pour la T3, 9 pour la G12 et

un coup de mfx (0X07) → soit la valeur 10 pour la ES44AC

De toutes les façons j’en ai pas d’autres … :smile:

Alain

Ah oui avec data[3], tu lis effectivement le dernier octet. Donc l’adresse MFX.

C’est cool et ça montre que ça fonctionne !

1 « J'aime »

Je pense que c’est bien que vous puissiez tester des commandes, voir quels sont les différents types de commande etc.

Mais on voit bien que ça va vite devenir compliqué si on continue à lire et écrire le code comme cela.

C’est pour cela qu’il va falloir commencer à s’intéresser à railuino. C’est une bibliothèque pour communiquer plus simplement en CAN avec une Gleisbos ou CSx

Alain entre autres avait participé à ce sujet que j’avais lancé en juillet dernier

Je vous laisse regarder ce sujet et éventuellement, poursuivre sur ce fil.

J’avais écrit plusieurs exemples pour tester cette bibliothèque avec des fonctionnalités interessantes.

La seule chose, c’est que je l’avais écrite pour ESP32 mais en regardant rapidement tout à l’heure, je pense que l’adaptation à l’Arduino devrait être très facile.

On en reparle sur ce fil si vous voulez !

Christophe

Bon, c’est en mauvaise voie pour moi. Ma CS2 refuse de sortir du mode stop. Elle semble bien démarer mais impossible de libérer le “STOP”… La lumière rouge reste allumée en permanence.
Je démonte demain … sans trop d’illusions.
JiPé

Bonjour JiPé,

Un peu plus haut tu as montré, image à l’appui, que tu arrivais à faire varier la vitesse. Et maintenant plus rien ? Qu’est-ce qui a changé ?

Je n’ai pas la possibilité de faire de tests avec la CS2. Ce que tu décris me fait penser à un problème de maître / esclave. Bien que ce concept soit totalement absent du protocole CAN, j’avais vu parfois que Marklin utilisait ce terme.

Il est possible qu’un mécanisme électronique détecte ou non la présence d’un terminal en CAN et que le programme agisse en fonction mais je n’y crois guère.

Essaye l’ordre de branchement, 1° lancer la CS puis brancher l’Arduino… ou l’inverse.

Ne néglige pas non plus la résistance de terminaison de 120Ω

Tiens nous au courant

Christophe

Je suis hors course pour le moment. Ma cs2 vient de me lacher… Et bien sûr,au courrier ce midi, la carte Shield CAN.
Difficile de ne pas râler…:bomb::japanese_ogre::japanese_goblin::japanese_ogre:

Bon, rassure moi, tu vois un lien avec nos manipulations ???

Christophe

Bonjour,
je ne pense pas. Elle présentait déjà des petites difficultés à s’activer. Je l’avais emmené chez un forumiste la semaine dernière car il avait des pb de reconnaissance de locos mFx. A mon retour, au déballage, la bare d’activation s’était déssolidarisée et j’avais donc ouvert ma CS pour remettre en ordre. Là, je pense que c’est plus grave.
Mais pas eu le temps de jetter un oeil encore (travaux de plafond et de murs plus urgent).

Pour info, j’en ai une à vendre.
Une 60215 en bon état extérieur et de fonctionnement, assortie ( ou non ) de son alimentation.

Bonjour Pierre,

Non, mais une bonne bouée hexadécimale peut aider… :grinning:

Ne t’en sépares pas car si ça n’est que mécanique, tu vas peut-être pouvoir la piloter justement avec le bus CAN par exemple comme on a fait avec Jérôme, une passerelle entre Rocrail et la CS.

Vivement que l’on aborde les commandes extérieures en CAN !!!

Christophe

Bonsoir a tous,

Je n’ai malheureusement pas le temps de faire des tests pour le moment mais je suis avec intérêt vos essais.

Olivier

1 « J'aime »

Bienvenue au club Olivier, et n’hésite pas à poser toutes les questions que tu souhaites.

Est-ce que tu envisages quelque chose de précis en CAN ?

Christophe

Bonsoir Olivier,
Voilà un bel encouragement.
D’autres essais vont suivre, j’en suis certain.
C’est pour moi une découverte passionnante.
Alain (d’Auvergne)

1 « J'aime »

Bonjour à tous,

J’ai reçu hier un nouveau module Can de chez SEEED puisque j’avais abimé par “charcutage” les autres. Ce matin j’ai refait les tests suivants:
a) Test de la boucle locale interne de la carte ==> OK
b) Test de transmission en duplex avec l’autre carte ==> OK
c) Test de surveillance du CAN-Märklin avec une Loco ==> OK

Conclusion: Ne pas toucher au Hardware du module CAN, mais s’en servir directement “Out of the Box”.

En pièce jointe, un rapport simplifié des expériences :
Rapport-27-02.pdf (2,6 Mo)

Très Cordialement.
Alain

3 « J'aime »

Bravo Alain, beau travail.

Bonne idée que de faire un doc de synthèse. On pourra rassembler au fur et à mesure le tuto sous cette forme.

Merci pour ton aide.

Christophe

Bonsoir à vous tous,

Pour répondre à Christophe, je suis intéressé pour plusieurs raisons :

  1. Le plaisir d’apprendre et de comprendre
  2. Voir ce qui pourrait être utile/intéressant pour mon circuit.
  3. J’essaie aussi de bien comprendre tout les messages sur la console de RocRail et le sniffer pourrait m’y aider.

Tout simplement,

Olivier

1 « J'aime »

Hé oui, quand j’ai vu Rocrail et la passerelle MS2 blablater en les surveillant des 2 cotés (Arduino IDE pour la passerelle CAN 》TCP et log de Rocrail de l’autre coté), j’ai trouvé cela fascinant. On ouvre le capot et on voit alors des choses que peu peuvent voir :heart_eyes:

Bon, allez, je vais acheter un Arduino et recommencer à 0 avec les bases du CAN. Cela m’éclate tout cela.

2 « J'aime »