Hallo Zusammen, ich bin Student der Elektrotechnik und habe einen Themenvorschlag für eine Abschlussarbeit bekommen. Es soll darum gehen eine Schnittstelle zwischen einem CANopen-Bus nach DS301 und einem I2C-Bus zu programmieren. Als Zeitrahmen sind 22 Wochen angesetzt inklusive ausführlichem Bericht. In Sachen CAN bin ich unerfahren und bin nach meinen Recherchen zu CANopen zunächst etwas abgeschreckt von dem Umfang. Haltet ihr das Vorhaben machbar? Vielen Dank schon mal!
Ja, das sollte machbar sein. Ist die Hardware vorgegeben? Du musst den CANOpen Stack selber ja nicht mehr neu machen, den gibts fertig. https://github.com/CANopenNode/CANopenNode Wenn Du die Hardware selber frei wählen kannst, dann nimm einen dsPIC33FJ128GP802-I/SP Controller und einen MCP2562E/P Transceiver. Alles im DIL-Gehäuse, einfach zu löten, einfach in Betrieb zu nehmen, und der Stack oben kennt den Chip. I2C selber ist auch nicht so schwer, und der Controller hat gleich zwei I2C Controller. Schau es Dir einfach mal an. Du brauchst: - Microchip MPLAB X und den XC16 Compiler - beides gibts kostenlos zum Download bei Microchip.com. - PICKIT3, kostet als China-Clone ca 20€ - einen garantiert funktionierenden CANOpen Master - den muss man Dir zur Verfügung stellen. Weiterhin empfehlenswert: - ein Logicanalyzer. Die 12..15€ Saleae-Clones auf Amazon reichen vollständig. Das ist ein echter Timesaver! - wenn es geht, ein weiteres CAN-Bus Interface für Deinen PC, damit Di auf den Bus mithören kannst. Das geht zwar notfalls auch mit dem Logicanalyzer und einem weiteren CAN-Transceiver, aber mit einem zusätzlichen CAN-Bus-Knoten ist es bequemer. Vielleicht kannst Du Dir sowas ausleihen. Damit sollte alles komplett sein. fchk
Hallo Frank, vielen Dank für deine schnelle und vor allem ausführliche Antwort. Bei der Hardware bin ich tatsächlich frei in der Auswahl und der CANopen-Master steht zur Verfügung. CAN-seitig wird es auch nur diesen Teilnehmer geben. Ich werde mir deine Vorschläge ansehen und ggf. einen Berichten zum Projekt posten, wenn es fertig ist.
JW25 schrieb: > CAN-seitig wird es auch nur diesen > Teilnehmer geben. Dann wirst du aber nicht lange Freude daran haben: Ein CAN-Bus besteht immer aus mindestens 2 Teilnehmern. Denn wenn der sendende Knoten kein ACK von einem anderen Teilnehmer bekommt, wiederholt er das Senden des Frames so lange, bis sein Errorcounter voll ist und stellt dann das Senden ein. Also brauchst du mindestens 2 CAN-Teilnehmer, die sich irgendwas erzählen.
Hallo Lutz, Danke für deine Antwort. Ich hatte mir vorgestellt die Schnittstelle als Knoten einzurichten. Also in Kommunikation mit dem CAN zu treten, die Daten zu puffern und an den I2C zu senden.
JW25 schrieb: > Also in Kommunikation mit dem CAN zu treten, die > Daten zu puffern und an den I2C zu senden. Fehlen da zwischen "puffern" und "an den I2C senden" nicht noch mehrere Abstraktions- und Protokollwandlungsschichten? Oder möchtest Du wirklich die "rohen" I2C-Daten wie I2C-Adressen, Stop-Conditions etc. übers CANopen schicken? Das dürfte zwar technisch möglich sein, aber passt eher weniger zum gängigen Abstraktionsniveau bei CANopen. Gängiger wäre, daß Du per I2C z.B. einen digitalen Temperatursensor oder ein GPIO-Expander ansprichst. In Deinem Schnittstellenmodul hast Du dann die gesamte I2C-Kommunikation mit diesem Temperatursensor drin und lieferst hinterher per CANopen direkt den gemessenen Temperaturwert zurück, nicht den rohen Registerinhalt von dem Sensor. Für Sensoren gibt es in CANopen ein standardisiertes Geräteprofil. Es ist gerade der Witz von CANopen diese Geräteprofile zu nutzen und nicht nur irgendwelche sehr produktspezifische rohe Registerwerte.
Hallo Gerd, dass dazu auch noch ein Umwandlungsprozess gehört stimmt natürlich. Konkret geht es darum in einem Gerät das den I2C verwendet die CANopen-Schnittstelle eines zugekauften Antriebsreglers nutzbar zu machen. Wie gesagt fehlt mir die Erfahrung mit CANopen und ich gehe deswegen vielleicht etwas naiv an die Sache heran.
JW25 schrieb: > Konkret geht es darum in einem Gerät das den I2C verwendet die > CANopen-Schnittstelle eines zugekauften Antriebsreglers nutzbar zu > machen. Wie gesagt fehlt mir die Erfahrung mit CANopen und ich gehe > deswegen vielleicht etwas naiv an die Sache heran. Gibt es eine saubere Dokumentation für die verwendeten CANopen-Geräteprofile des Antriebsreglers, inkl. evtl. herstellerspezifischer Erweiterungen etc.? Gibt es eine saubere Dokumentation für Dein I2C-Gerät mit allen Registern etc.? Wenn nein, dann lass die Finger davon. Kannst Du jedes der Geräte für sich in seiner nativen, funktionsfähigen Umgebung beobachten und dort die Protokolle sniffen? Also den Antriebsregler z.B. mit einer vom Hersteller als voll unterstützt angegebenen Peripherie? Die Arbeit besteht aus den Grundlagen beide Schnittstellen in den Griff zu bekommen. Das ist überschaubar und realistisch. Dann geht es ans Umwandeln der Protokolle. Das dürfte der Hauptteil der Arbeit werden. Wenn Du jetzt von einer oder gar beiden Seiten nur sehr dünne oder gar keine Dokumentation hast, ist Reverse-Engineering, Protokollanalyse etc. angesagt. Da hilft es sehr schon etwas Erfahrung mit sowas zu haben. Aber irgendwelche undokumentierten Eigenheiten können bei sowas schnell mal jede Zeitplanung durcheinanderwirbeln.
Schau dir mal die NXP LPC11C24, da findest du in den LPCopen Bibliotheken einen ganz guten Einstieg in CANopen und I2C. Zusätzlich kann ich dir das CiA-301 und CiA-401 ans Herz legen. Müsstest mal auf deren Homepage nachsehen, da gibt es auch viele Unterlagen zu Gateways. Wenn man die entsprechenden Dokumente nicht herunter laden kann, dann denen einfach ein Mail schicken und danach fragen, mit dem Hinweis, dass man es für eine Studienarbeit benötigt. Mir hatte man damals ganz problemlos alle angeforderten Dokumente geschickt. Christian_RX7
Hallo zusammen, Nach nochmaliger Rücksprache werde ich wohl ein anderes Abschlussthema angehen. Trotzdem hat mich das Thema gepackt und ich werde mich in meiner Freizeit damit beschäftigen. Vielen Dank nochmal für die guten Ratschläge! Sollte ich Fortschritte vorweisen können werde ich darüber berichten
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.