Auteur Sujet: Le bus CAN normalisé LCC (Layout Command Control)  (Lu 8228 fois)

nopxor

  • Full Member
  • ***
  • Messages: 195
    • Voir le profil
Le bus CAN normalisé LCC (Layout Command Control)
« le: décembre 26, 2023, 03:28:43 pm »
Bonjour,

Locoduino est fan du bus CAN, mais hélas son bus CAN n'est pas reconnu par les logiciels JMRI, RocRail, TrainController etc..
Le bus CAN est aussi aimé à l'étranger et particulièrement aux USA.

La National Model Railroad Association (Fédération nationale de modélisme ferroviaire), ou NMRA, 
L'association américaine travaillant pour le développement et la promotion du modélisme ferroviaire l'a adopté et standardisé en 2021.

Elle a choisi la norme LCC: Layout Command Control
https://openlcb.org/openlcb-and-lcc-documents/layout-command-control-lcc/
En fait, c'est le standard OpenLCB (Open Layout Control Bus) qui a été adopté et défini comme LCC.

Ce bus CAN normé Open Standard est reconnu par JMRI. Les autres logiciels ne devraient pas tarder à l'adopter aussi.
https://www.jmri.org/help/fr/html/hardware/can/index.shtml
JMRI reconnait également un autre bus CAN, le CBUS de source britannique: MERG (Model Electronic Railway Group)

Le site Sumida Crossing liste et compare l'offre actuelle des systèmes actuels de bus de contrôle:
http://www.sumidacrossing.org/LayoutControl/ControlBus/

Il existe déja plusieurs fournisseurs de cartes LCC (RRCirkits, cmOS Engineering) mais les amateurs de DIY (do it yourself) ne sont pas en reste.
https://openlcb.org/knowledge-base/

LCC est open source et il existe des librairies pour les dévellopeurs:
Open Model Railroad Network:
https://github.com/bakerstu/openmrn

OpenMRNLite Arduino Library:
https://github.com/openmrn/OpenMRNLite

Un exemple de projet de carte in/out à base d'ESP32:
https://github.com/atanisoft/esp32olcbio

Pour des modélistes qui envisagent un contrôle de leur réseau par ordinateur, LCC est une norme ouverte qui a de l'avenir.

Quelques liens:
http://www.sumidacrossing.org/Musings/files/151006_LCC_I_Layout_Command_Control.php
http://www.sumidacrossing.org/Musings/files/151018_LCC_II_How_It_Works_Physical.php
http://www.sumidacrossing.org/LayoutElectricity/microcontrollers/Arduinos/LCCforArduino/

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Le bus CAN normalisé LCC (Layout Command Control)
« Réponse #1 le: décembre 26, 2023, 04:32:00 pm »
Bonjour et bravo pour cette recherche détaillée.

J'ai donc beaucoup à découvrir
Je me pose la question : est ce que Marklin s'est inscrit dans cette standardisation ou simplement n'est pas concerné car à un autre niveau ?
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3037
  • 100% Arduino et N
    • Voir le profil
Re : Le bus CAN normalisé LCC (Layout Command Control)
« Réponse #2 le: décembre 26, 2023, 05:00:26 pm »
Oui merci nopxor ,

C’est une base de réflexion très utile et très complète.

J’ai regardé la carte d’Atany qui est disponible en fichiers Kicad et Gerber (4 par plaque) : elle ressemble assez à la carte satellite Christophe.

Mais le soft est rapidement incompréhensible pour moi.
Je me souviens aussi des réticences de DCC-EX a l’encontre de OpenLCB : risque d’usine à gaz.

Tout cela s’appuie sur une connexion à JMRI ou Rockrail via une carte USB/Can pour PC une interface Can sur RPi.

La réalisation d’un petit gestionnaire dans un noeud Can me semble toujours séduisante et pourrait se contenter d’un protocole plus simple. Mais il faut développer un gestionnaire alors qu’il en existe tout fait dans JMRI ou RocRail.

Je n’ai pas encore l’expérience de JMRI ou RocRail pour pouvoir dire ce qui est le plus intéressant.
Qu’en pense nopxor ?
Cordialement,
Dominique

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1080
  • HO avec DCC++
    • Voir le profil
Re : Le bus CAN normalisé LCC (Layout Command Control)
« Réponse #3 le: décembre 26, 2023, 05:23:15 pm »
Bonjour Nopxor,

Je suis assez content que tu abordes ce sujet aujourd’hui car nous sommes actuellement quelques-uns à nous y intéresser également.

Mais tout d’abord, cela ne veut pas dire grand-chose :

Locoduino est fan du bus CAN, mais hélas son bus CAN n'est pas reconnu par les logiciels JMRI, RocRail, TrainController etc..

Locoduino n’a pas de bus CAN à lui ! Ou du moins, Locduino utilise un bus CAN qui est en tous points conforme à la norme Il serait plus exact de dire « sa messagerie » ou encore son « protocole ». Et pour cause, à part une messagerie minimalise réalisée pour les satellites V1, il n’a pas encore été question de protocole CAN spécifique pour Locoduino.

Concernant LCC, j’aimerais partager ton optimisme. Tu cites abondamment le Sumida Crossing que j’ai moi-même lu à plusieurs reprises. Je trouve au contraire qu’il pointe un certain nombre de problèmes et incohérences tout en reconnaissant que cela est séduisant, comme je pourrais aussi le dire.

Mais je me suis comme d’autres à Locoduino intéressé à LCC et nous sommes arrivés aussi à la conclusion que c’était fouillis, complexe et comportait même des erreurs par rapport à la norme. Il n’existe pas une offre matérielle très abondante et elle est chère. Ce protocole est très peu documenté, ce qui est un peu dommage quand on aspire à s'imposer comme norme.

Par ailleurs, cela doit faire au moins 12 ans que je connais LCC qui ne décolle pas, je ne dirais pas que c’est un système qui a de l’avenir.

Je trouve que CBUS, également reconnu par JMRI et Rocrail et sans doute plus intéressant.

Je suis certes assez critique sur OpenLCB (LCC) mais je t’assure que je ne demande qu’à être convaincu du contraire.

Aussi comme j’ai pu le dire au début, je suis assez content que le sujet soit ouvert et que chacun puisse apporter ses compétences et ses expériences. Il serait bien en effet que Locoduino puisse adopter une messagerie CAN bien adaptée au modélisme ferroviaire. La question est par exemple d’actualité pour LaBox commandée en CAN. Tu as ouvert la voie à ce qui pourrait être un sujet de travail commun. J’espère que d’autres adhéreront.

Bien amicalement

Christophe

« Modifié: décembre 27, 2023, 08:57:31 am par bobyAndCo »

nopxor

  • Full Member
  • ***
  • Messages: 195
    • Voir le profil
Re : Le bus CAN normalisé LCC (Layout Command Control)
« Réponse #4 le: décembre 26, 2023, 06:00:47 pm »
Pour l'instant les allemands (dont Märklin) n'ont pas encore suivi les normes NMRA. Ils continuent à vendre leur systèmes propriétaires.
Il est vrai aussi que souvent ils préferrent être à l'initiative des normes...
Pour rappel, c'est eux qui ont initier le DCC.
Mais le bus CAN étant le plus moderne et le plus robuste, ils y viendront sûrement. A leur sauce ou pas, on verra.
Pour le coup les américains ont l'initiative d'un projet ouvert.

Le fait que le gestionnaire existe dans JMRI est un avantage indéniable.
On peut toujours préférer réécrire soi même un gestionnaire mais n'est-il pas préférable d'utiliser un standard de fait.
On utilise déja le standard DCC, l'idée des américains c'est que l'on utilise maintenant la norme LCC en complément.
Personnelement je trouve l'idée plutôt bonne. Même si la norme n'est pas parfaite pour l'instant, elle a le mérite d'exister.
L'offre matérielle est effectivement pas donnée car elle est assez peu concurencée.
Mais le système est ouvert aux réalisations personnelles.
Il manque un projet personnel de connection USB-LCC à moindre coût, car le ticket d'entrée est à 70$.

Je ne connais pas CBUS, peu documenté.


Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3037
  • 100% Arduino et N
    • Voir le profil
Re : Le bus CAN normalisé LCC (Layout Command Control)
« Réponse #5 le: décembre 26, 2023, 07:47:18 pm »
J’aimerai bien savoir comment est fait le « moteur » interne d’un gestionnaire comme JMRI ou RocRail (j’ai installé iTrain sur mon Mac cet après-midi, ça doit être à peu près la même chose).

Ce qui m’énerve c’est la description du réseau à coup de fenêtres pleines de pop up et boites à cocher.

Un dessin du réseau sur une plaque de plexi percée pour les leds d’occupation et les inters de commandes d’aiguilles, c’est plus simple et sympa !

Il faut sans doute une description de l’état du réseau (genre tableau) mis à jour par la retro avec les règles de circulation et de sécurité.

Sinon la carte ESP32 d’Atany pourrait faire une belle passerelle vers openLCB si le soft existe (a voir).
Cordialement,
Dominique

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1080
  • HO avec DCC++
    • Voir le profil
Re : Re : Le bus CAN normalisé LCC (Layout Command Control)
« Réponse #6 le: décembre 26, 2023, 11:43:05 pm »
Pour l'instant les allemands (dont Märklin) n'ont pas encore suivi les normes NMRA. Ils continuent à vendre leur systèmes propriétaires.
Il est vrai aussi que souvent ils préferrent être à l'initiative des normes...
Pour rappel, c'est eux qui ont initier le DCC.
Mais le bus CAN étant le plus moderne et le plus robuste, ils y viendront sûrement. A leur sauce ou pas, on verra.
Pour le coup les américains ont l'initiative d'un projet ouvert.

Les allemands ne sont pas et ne seront pas suiveurs du NMRA sur LCC. Marklin et Zimo avaient déjà implanté la technologie CAN bien avant que OpenLCB ne s'y intéresse. Marklin utilise le CAN avec ses centrales (CS2, CS3, MS2) pour tout ce qui touche à la traction (au sens large). Mais pour ce qui est de la rétrosignalisation, ils n'ont pas franchi le pas. Très certainement pour leur sacro-saint principe de retro compatibilité ? Le S88 est la norme chez Marklin malgré ses imperfections et je doute que ça change. C'est sans doute dommage car pour ce qui est de la partie où ils utilisent le CAN, le protocole de messagerie est particulièrement bien conçu pour le modélisme ferroviaire.

Si ça en intéresse quelques uns, je vous renvoie sur une vidéo où je pilote une locomotive en MFX (mais ça pourrait être en DCC) à partir de Rocrail, directement en CAN avec le protocole de Marklin: https://youtu.be/Avg2xslDWZQ?si=G_gu_k3ql9VeP_4a



Et un peu en sens inverse, j'ai aussi récemment développé les commandes CAN pour piloter LaBox à partir d'une MS2 de Marklin... et ça fonctionne parfaitement !

DCC et LCC n'ont rien en commun. Autant le premier a été un succès, autant le second est déjà un échec confirmé. Il n'a pas décollé en 20 ans, personne ne se l'est (vraiment) approprié, je pense que cela suffit pour la démonstration.

Il y a d'autres protocoles qui semblent intéressants comme canOpen implanté dans Rocrail. Ce n'est pas un protocole conçu pour le modélisme ferroviaire mais le projet que j'ai survolé semble très aboutit : https://en.wikipedia.org/wiki/CANopen

Et une nouvelle fois, je reparle ici de CBUS.

Enfin, si rien ne nous convient, alors à Locoduino de construire son propre protocole et comme l'a fait remarquer Dominique, ce sont ensuite des API pour interfacer Rocrail ou JMRI.

Comme vous le voyez, l'échange est bien engagé.

Bien amicalement

Christophe




« Modifié: décembre 26, 2023, 11:46:59 pm par bobyAndCo »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1080
  • HO avec DCC++
    • Voir le profil
Re : Le bus CAN normalisé LCC (Layout Command Control)
« Réponse #7 le: décembre 27, 2023, 09:28:59 am »
Bonjour à tous,

Comme je suis un garçon plutôt tolérant, j’ai voulu regarder ce qu’il pouvait y avoir de bon dans le projet de LCC sur ESP32 sur le Github communiqué par Nopxor : https://github.com/atanisoft/Esp32OlcbIO.git

C’est assez pitoyable. Tout d’abord, vous remarquerez qu’il n’y a aucune hiérarchie de fichiers correspondants aux IDE courant. Pas de ‘.ino’ pour l’IDE Arduino, pas de ‘.ini’ pour PlateformIO.

J’ai essayé la compilation sur PlateformIO qui trouve bien le fichier ‘esp32io.cpp’ comme point d’entrée du programma (ce qui est aussi écrit dans le code) mais j’ai de très nombreuses erreurs de compilation dues essentiellement à des fichiers absents ou inexistants. Je vous donne un petit aperçu ci-dessous.

Voilà sans doute le principal problème avec LCC. Vous trouvez du code par-ci par-là mais je n’ai encore jamais vu un programme pour Arduino ou ESP32 fonctionner. Dans plateformIO, j’ai téléchargé la totalité de la bibliothèque FreeRTOS mais malgré cela, comme vous le voyez, j’ai de liens qui ne se font pas !!!

Si d’autres ont été plus malins que moi et ont réussi, je suis intéressé.


#include <dos.h>
          ^~~~~~~
compilation terminated.
.pio/libdeps/hornbill32dev/FreeRTOS/FileIO/fileIO.c:79:10: fatal error: FreeRTOS.h: No such file or directory

******************************************************************
* Looking for FreeRTOS.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:FreeRTOS.h"
* Web  > https://registry.platformio.org/search?q=header:FreeRTOS.h
*
******************************************************************

 #include "FreeRTOS.h"
          ^~~~~~~~~~~~
compilation terminated.
Compiling .pio/build/hornbill32dev/FrameworkArduino/Esp.cpp.o
*** [.pio/build/hornbill32dev/src/esp32io.cpp.o] Error 1
*** [.pio/build/hornbill32dev/src/esp32io_bootloader.cpp.o] Error 1
*** [.pio/build/hornbill32dev/src/esp32io_stack.cpp.o] Error 1
*** [.pio/build/hornbill32dev/src/web_server.cpp.o] Error 1
*** [.pio/build/hornbill32dev/lib89e/FreeRTOS/ParTest/ParTest.c.o] Error 1
*** [.pio/build/hornbill32dev/src/fs.cpp.o] Error 1
*** [.pio/build/hornbill32dev/lib89e/FreeRTOS/serial/serial.c.o] Error 1
*** [.pio/build/hornbill32dev/lib89e/FreeRTOS/main.c.o] Error 1
*** [.pio/build/hornbill32dev/lib89e/FreeRTOS/FileIO/fileIO.c.o] Error 1
Compiling .pio/build/hornbill32dev/FrameworkArduino/FirmwareMSC.cpp.o
src/nvs_config.cpp:45:10: fatal error: utils/format_utils.hxx: No such file or directory
 #include <utils/format_utils.hxx>
          ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio/build/hornbill32dev/src/nvs_config.cpp.o] Error 1