Communication Canopen entre un Arduino et un Automate

Bonjour à tous,

J'aurais besoin d'éclairages sur un projet que je souhaite mener à savoir faire communiquer un Arduino (UNO) et un automate Proface gamme LT4000.
Pour quoi faire? : je veux concevoir des petits variateurs qui piloteront des moteurs CC et qui pourront communiquer avec l'automate pour la synchro et les ordres de fonctionnement.

J'ai choisi le protocole CANopen qui est très utilisé en industrie et je pense plus facile en mettre en œuvre du fait du nombre d'informations disponibles sur internet.
A ce titre j'ai déjà fait communiquer 2 cartes Arduino en CAN via un module MCP2515 et ça marche youpi.

Là où ça va se compliquer c'est de faire communiquer les différents Arduinos vers l'automate.
Je ne vois pas vraiment comment l'interfacer et réaliser ma table d'échanges avec notamment : Vitesse
Sens de rotation
Arret de type 1
Arret de type 2
Retour état variateur
...

En faisant des recherches j'ai découverts les fichiers .eds et .dcf, ce sont ces fichiers que l'on importe dans un logiciel de programmation automate pour paramétrer les modules dialoguant en CAN. (c'est le cas pour Proface notamment).

Pourriez-vous me dire si la piste de ces fichiers est la bonne ou si il y a d'autres solutions.

J'espère que tout est clair.

Merci
Thomas

Salut @thomasd73
Ce n'est pas une réalisation finie. Demande aux modérateurs de déplacer ce post dans la partie globale francophone : Français.

Bonnes bidouilles

Cordialement
Pandaroux007 :fox_face:

Bonsoir

déplacement effectué pour éviter d'encombrer le sous-forum exclusivement dédié à la présentation de réalisations abouties
image

Bonjour,

J'avoue que malgré la lecture des règles du forum, je me perdais un peu dans toutes les catégories.
En espérant qu'avec votre aide mon projet puisse aboutir ainsi je le mettrais dans "Réalisations et Projets Finis".

Bonne journée,
Thomas

Bonjour à tous,
Et bien quel entrain pour mettre le sujet au bon endroit, j'espère qu'autant de réponses techniques seront apportées... :wink:
Bonne journée

Hélas, trois (mois) hélas, pas de réponses techniques...

CANopen n'est pas si simple. Aucune idée de la manière de programmer un LT4000, mais après avoir vu quelques infos sur l'engin, pourquoi ne pas simplement utiliser son interface série ?
Il faut aussi définir les fonctionnalités qui seront implémentées dans l'Arduino et dans le Proface. L'interface physique/link est facile (CAN), mais les couches supérieures pas du tout.

Il y a une librairie voire plusieurs libraries CANopen sur GitHub (p.ex. GitHub - DanielMartensson/Easy-CANopen: A CANopen protocol for all systems such as embedded, PC, etc.) mais si les moteurs sont sur le LT4000 et que le but est de "donner des ordres", il faudra commencer par trouver un code CAN qui veuille dire quelque chose ( Motor1 Start), et essayer, puis étoffer le sketch.

Bonjour Tochinet,

Comme tu dis Hélas... mais j'ai continué mes recherches et je suis arrivée à la conclusion suivante : faire communiquer l'Arduino et l'automate en CAN c'est compliqué notamment lorsqu'il faut réaliser le fichier d'échange EDS... je me suis même rapproché du fabricant Proface mais tout seul c'est quasi impossible.
Je suis donc parti sur une idée un peu différente :
L'automate communiquera avec un Arduino Mega en fonctions logiques (DI/DO et PWM) et le Mega communiquera avec les autres Arduino (eslaves) en CAN.

Je dois avouer que je n'ai pas pensé un instant à la communication série que tu mentionnes, c'est aussi une très bonne idée.
Aurais-tu des pistes à ce sujet ?

Bonne journée

Dans le temps (au début d'Arduino, quand il n'y avait que le MEGA et le UNO ou le 2009), l'idée était d'utiliser les "esclaves" avec un programme standard appelé "Firmata", qui avait adapté la norme MIDI à l'Arduino (note ON pour les DIO, un control pour les Analog Output, etc.). Deux gros avantages c'est que l'"intelligence" reste dans ton MEGA plein de mémoire, et que l'interface physique peut être Serial (voire CAN), Ethernet, I2C etc.

Mais c'est quand même un peu passé de mode. Perso je n'ai jamais utilisé.

Pour programmer "à distance" un Arduino en live, il y a aussi "SerialCommand", "EasyTransfer" et d'autres.

Bonjour,
Effectivement c'est l'idée d'utiliser un MEGA en maître.

SerialCommand c'est le moniteur série de l'IDE ? car en faisant des recherches dessus j'ai l'impression que les fonctions sont les mêmes qu'avec le moniteur série.
Après je ne pense pas avoir d'autre solution que la communication logique entre les Arduinos et l'automate...

SerialCommand est une vieille librairie pour commander l'exécution d'une fonction à distance.

Rien à voir avec le moniteur série, sauf qu'on peut évidemment l'utiliser comme terminal aussi.