Sélection d'une couche réseau sur le bus CAN

10

Je prévois d'utiliser le bus CAN dans une application d'automatisation industrielle, mais j'ai du mal à décider comment implémenter la couche réseau. Quelqu'un ici a-t-il des recommandations pour un protocole de couche supérieure à utiliser sur CAN qui fournit des directives sur la façon d'attribuer des ID de message et de formater les paquets de données? Dois-je développer ma propre couche réseau propriétaire ou implémenter une norme existante comme CANopen?

mjh2007
la source

Réponses:

7

Vous voudrez certainement choisir une couche réseau standard. J'ai vu des cas où les gens ont roulé les leurs, et souvent le protocole est inefficace, et finalement c'est une perte de temps. Une couche réseau éprouvée fournit des fonctionnalités de base pour résoudre la plupart des problèmes que vous rencontrerez probablement lors de la mise en réseau avec un appareil intégré, ce qui vous fera économiser un temps précieux et de l'argent au final.

Je connais bien CANopen, je vais donc mettre un peu d'explication ici et cela pourrait vous aider à décider si c'est la voie que vous souhaitez suivre. Si cela ne correspond pas à ce que vous devez faire, je chercherais autre chose.

CANopen est très centré sur les données. Tous les nœuds esclaves CANopen (les choses que vous contrôlez à partir d'un nœud maître, comme les capteurs ou les pilotes de moteur) fournissent un dictionnaire qui contient toutes les données de configuration, de contrôle et d'acquisition de données dont vous avez besoin de lire / écrire pour faire votre travail. Vous pouvez ensuite lire / écrire ces objets individuellement via le mécanisme SDO (service data object), ou lire / écrire périodiquement ces objets dans des transmissions de messages CAN temporisés via le mécanisme PDO (producteur data object). Le démarrage, l'arrêt et la réinitialisation, ainsi que la détection des pulsations cardiaques / des dysfonctionnements des nœuds sont fournis par les services NMT, ainsi que par un service d'attribution d'ID de nœud (si vous souhaitez l'utiliser). Pour implémenter un périphérique à l'aide d'une bibliothèque CANOpen intégrée, vous configurez essentiellement un dictionnaire d'objets, configurez des PDO pour envoyer / recevoir périodiquement des mises à jour de données, et écrire un code utilisateur qui se comporte en fonction de ces entrées de données. Il y a d'autres choses que CANopen fournit, mais c'est l'essentiel. Lisez ce livre pour plus d'informations.

J. Polfer
la source
Le livre parle d'une implémentation de CANopen appelée MicroCANopen. Quelle implémentation de CANopen utilisez-vous?
mjh2007
1
@ mjh2007 - Nous avons lancé le nôtre, car il devait être utilisé en conjonction avec un autre protocole.
J.Polfer
"CANOpen" -> "CANopen"
Peter Mortensen
7

J'écris du code pour accéder au bus CAN sur les voitures GM, qui utilise une couche réseau principalement propriétaire. Avez-vous étudié OpenCAN? Je choisirais un standard ouvert tel que CANOpen ou même OpenCAN. Cela dépend vraiment du niveau de contrôle et de flexibilité que vous souhaitez dans votre environnement d'automatisation.

Brad Hein
la source
7
il y a un OpenCAN ainsi que CANOpen? aiggh! nom horrible.
Jason S
1
@Jason, je blâme Microsoft.
Kortuk
5

Il y a eu d'excellentes réponses. Je ne sais pas quel micro vous utilisez, mais voici des liens vers quelques informations de microchip.

Bibliothèque J1939

Micrologiciel esclave DeviceNet ™ groupe 2 pour PIC18 avec CAN

Peut ouvrir

Ils ont chacun du code et une fiche technique de base vous permettant de savoir ce dont vous avez besoin pour les implémenter.

Kortuk
la source
1
En fait, j'utilise Microchip, c'est donc très utile. Merci!
mjh2007
1
Ce sont tous pour le pic18. Il semble qu'avec CANopen vous avez un maître qui modifie les paramètres des autres, pour la plupart de ce que mon utilisation de canbus comprend, cela correspond parfaitement.
Kortuk
Utilisez-vous la bibliothèque Microchip pour implémenter CANopen?
mjh2007
1
Dans le processus de mise en œuvre, c'est un processus lent car il nécessite de nombreuses personnes différentes à s'engager pour que je fasse un changement de système. Je vous mettrai à jour quand il sera implémenté si cela peut vous aider.
Kortuk
1
@ mjh2007, j'ai arrêté de travailler pour le processeur et les étudiants qui ont pris la relève ont décidé que beaucoup avaient auparavant de ne pas utiliser le matériel précédent et d'acheter quelque chose avec lequel ils étaient plus à l'aise. Encore une fois, aucun progrès n'est réalisé sur ce projet de professeurs, mais cela se produit lorsqu'un professeur ne sait pas ce qui se passe et permet simplement aux gens de tout changer une fois par an.
Kortuk