Auswahl einer Netzwerkschicht über den CAN-Bus

10

Ich plane, CAN-Bus in einer industriellen Automatisierungsanwendung zu verwenden, habe jedoch Schwierigkeiten, zu entscheiden, wie die Netzwerkschicht implementiert werden soll. Hat hier jemand Empfehlungen für ein Protokoll höherer Ebene über CAN, das Richtlinien zum Zuweisen von Nachrichten-IDs und zum Formatieren von Datenpaketen enthält? Sollte ich meine eigene proprietäre Netzwerkschicht entwickeln oder einen bestehenden Standard wie CANopen implementieren?

mjh2007
quelle

Antworten:

7

Sie werden auf jeden Fall eine Standardnetzwerkschicht wählen wollen. Ich habe einige Fälle gesehen, in denen Leute ihre eigenen gerollt haben, und häufig ist das Protokoll ineffizient, und am Ende ist es Zeitverschwendung. Eine bewährte Netzwerkschicht bietet grundlegende Funktionen, um die meisten Probleme zu lösen, die bei der Vernetzung mit einem eingebetteten Gerät auftreten können, und spart Ihnen am Ende wertvolle Zeit und Geld.

Ich bin mit CANopen vertraut, daher werde ich hier eine kurze Erklärung abgeben, die Ihnen bei der Entscheidung helfen kann, ob Sie diesen Weg gehen möchten. Wenn es nicht passt, was Sie tun müssen, würde ich mir etwas anderes ansehen.

CANopen ist sehr datenorientiert. Alle CANopen-Slave-Knoten (Dinge, die Sie von einem Master-Knoten aus steuern, wie Sensoren oder Motortreiber) bieten ein Wörterbuch, das alle Konfigurations-, Steuerungs- und Datenerfassungsdaten enthält, die Sie lesen / schreiben müssen, um Ihre Arbeit zu erledigen. Sie können diese Objekte dann einzeln über den SDO-Mechanismus (Service Data Object) lesen / schreiben oder diese Objekte regelmäßig in zeitgesteuerten CAN-Nachrichtenübertragungen über den PDO-Mechanismus (Producer Data Object) lesen / schreiben. Das Starten, Herunterfahren und Zurücksetzen sowie die Erkennung von Herzschlägen und Knotenfehlern werden von NMT-Diensten sowie von einem Dienst zur Zuweisung von Knoten-IDs bereitgestellt (falls Sie ihn verwenden möchten). Um ein Gerät mithilfe einer eingebetteten CANOpen-Bibliothek zu implementieren, richten Sie im Grunde ein Objektwörterbuch ein, richten PDOs ein, um regelmäßig Datenaktualisierungen zu senden / empfangen. und schreiben Sie Benutzercode, der sich basierend auf diesen Dateneinträgen verhält. Es gibt andere Dinge, die CANopen bietet, aber das ist der größte Teil davon. Lesen Sie dieses Buch für weitere Informationen.

J. Polfer
quelle
Das Buch spricht über eine Implementierung von CANopen namens MicroCANopen. Welche Implementierung von CANopen verwenden Sie?
mjh2007
1
@ mjh2007 - Wir haben unser eigenes gerollt, da es in Verbindung mit einem anderen Protokoll verwendet werden musste.
J. Polfer
"CANOpen" -> "CANopen"
Peter Mortensen
7

Ich schreibe Code für den Zugriff auf den CAN-Bus von GM-Fahrzeugen, der eine meist proprietäre Netzwerkschicht verwendet. Haben Sie sich mit OpenCAN befasst? Ich würde einen offenen Standard wie CANOpen oder sogar OpenCAN wählen. Dies hängt wirklich von der Kontrolle und Flexibilität ab, die Sie in Ihrer Automatisierungsumgebung wünschen.

Brad Hein
quelle
7
gibt es ein OpenCAN sowie CANOpen? aiggh! schreckliche Namensgebung.
Jason S
1
@ Jason, ich beschuldige Microsoft.
Kortuk
5

Es gab gute Antworten. Ich weiß nicht, welches Mikro Sie verwenden, aber hier sind Links zu einigen Informationen von Mikrochip.

J1939 Bibliothek

DeviceNet ™ Group 2 Slave-Firmware für PIC18 mit CAN

Öffnen können

Sie verfügen jeweils über Code und ein grundlegendes Datenblatt, in dem Sie wissen, was Sie zur Implementierung benötigen.

Kortuk
quelle
1
Eigentlich benutze ich Microchip, das ist also sehr hilfreich. Vielen Dank!
mjh2007
1
Das sind alles für das Bild 18. Es scheint, dass Sie mit CANopen einen Master haben, der die Einstellungen der anderen ändert. Für die meisten meiner Canbus-Anwendungen passt dies perfekt.
Kortuk
Verwenden Sie die Microchip-Bibliothek, um CANopen zu implementieren?
mjh2007
1
Bei der Implementierung ist dies ein langsamer Prozess, da sich viele verschiedene Personen für mich verpflichten müssen, eine Systemänderung vorzunehmen. Ich werde Sie aktualisieren, wenn es implementiert ist, wenn das hilft.
Kortuk
1
@ mjh2007, ich hörte auf, für den Prozessor zu arbeiten, und die Studenten, die das Amt übernahmen, beschlossen, wie viele zuvor, die vorherige Hardware nicht zu verwenden und etwas zu kaufen, mit dem sie sich besser auskannten. Wieder keine Fortschritte bei diesem Professorenprojekt, aber das passiert, wenn ein Professor nicht weiß, was los ist und die Leute einfach einmal im Jahr alles ändern lassen.
Kortuk