Forum: Mikrocontroller und Digitale Elektronik CAN mir das einer mal erklären?


von F. F. (foldi)


Lesenswert?

Hallo Forum!

Es gibt unendlich viel über CAN zu lesen. Aber wo fange ich an?
Ich möchte gerne irgendwann einen AVR (mit CAN oder ohne?) an den CANbus 
bekommen.
Gibt es vielleicht ein Tutorial, Buch oder was auch immer, dass das 
anhand eines Mikrocontrollers erklärt?
Und zwar so, dass das auch ein nicht Wissenschaftler versteht.

Bin jetzt gleich erstmal weg, aber freue mich auf eure Beiträge.

Und bitte, nicht wie in jedem Beitrag darüber, diese Beiträge "Lass die 
Finger davon, wenn du noch nichts damit gemacht hast!", die bitte sein 
lassen.
Irgendwann haben auch die CAN Cracks einmal angefangen.

Was muss man wissen, welches CAN für Nutzfahrzeuge. Also CANopen ist 
schon einmal Pflicht für mich.

Lieben Dank!

Liebe Grüße
Frank

von Wolfgang (Gast)


Lesenswert?

F. F. schrieb:
> Es gibt unendlich viel über CAN zu lesen. Aber wo fange ich an?

z.B. mit den Suchbegriffen "CAN"+"tutorial"

Beitrag #5527913 wurde von einem Moderator gelöscht.
von Peter D. (peda)


Lesenswert?

CAN selber ist ganz einfach, Baudratengenerator initialisieren, ein MOB 
(Message Object) als Empfänger, ein MOB als Sender konfigurieren, 
fertig. Dafür gibt es für den konkreten MC Beispielcode vom Hersteller.

Für darauf aufsetzende Protokolle muß man dann den jeweiligen 
Protokollstandard lesen und die sind oft recht ausufernd. Der konkrete 
MC spielt dabei keine Rolle mehr. Diese Protokolle rufen dann nur noch 
CAN-Senden bzw. CAN-Empfang auf.

von Kaktusbombe (Gast)


Lesenswert?

Das ist zwar nicht am praktischen Beispiel von einem Microcontroller, 
aber falls du was zum CAN als Bus lernen willst, hat die Firma Vector 
auch ein kostenloses e-Tutorial dazu.

von Clemens S. (zoggl)


Lesenswert?

Besorg dir unbedingt eine gegenstelle die SICHER funktioniert.
Wenn du deinen avr und die gegenstelle debuggen musst drehst du bald am 
rad. Muss ja kein teures produkt sein.
Mit 40€ bist du gut dabei

Die cia pdfs sind öffentlich. Ran an den feind. Da kann nichts kaputt 
gehen...

Sg

von H.Joachim S. (crazyhorse)


Lesenswert?

Clemens S. schrieb:
> Besorg dir unbedingt eine gegenstelle die SICHER funktioniert.

Ganz wichtiger Tip.

30€ tun es auch:

https://www.antratek.de/usb-can-v7-00-analyzer?gclid=EAIaIQobChMIvK-Hje753AIVROd3Ch2CMwCAEAYYASABEgLsF_D_BwE

Meistens benutze ich aber die von PEAK, die sind bei mir seit über 10 
Jahren über jeden Zweifel erhaben.

Nicht mehr ganz zeitgemäss (ein Riesenchip, meist zu gross), aber 
dennoch ganz gut zum Einarbeiten: der MCP2515 + die gut dokumentierte 
Software von http://www.kreatives-chaos.com/
Die SPI-Schnittstelle ist kein Problem und funktioniert auch bei hohen 
Datenraten.

Hat den Vorteil, dass man damit den CAN mehr oder weniger an jeden MC 
anstricken kann. AVRs mit integriertem CAN finde ich zu teuer und setze 
ich auch nirgenwo in Serie ein. Bei ST und NXP (natürlich auch anderen) 
wirst du fündig.

Besonders witzig: LPC11 mit integriertem CAN-Transceiver, also eine 
echte Einchip-Lösung.

von Toxic (Gast)


Angehängte Dateien:

Lesenswert?

F. F. schrieb:
> Es gibt unendlich viel über CAN zu lesen.


Sprut hatte sich mal die Muehe gemacht,etwas Informationen darueber zu 
verbreiten:
http://sprut.de/electronic/interfaces/can/can.htm

Desweiteren habe ich 2 Dateien upgeloaded - in Englisch.

Der eine Anhang ist besteht aus 5 Elektorartikeln, der andere ist ein 
minimalistischer "Vortrag" - gedacht als Unterrichtsstoff fuer 
Studenten.Hatte ich irgendwann mal gefunden als Teil einer groesseren 
"Schulbuchlektuere" - eine die mir heute noch gute Dienste leistet wenn 
es um Grundlagen geht....

von F. F. (foldi)


Lesenswert?

So, bin wieder zu Hause.
Danke für die vielen Tipps. Werde nächste Woche von oben abarbeiten.
Der  MCP2515  ist mir auch schon ins Auge gestochen und dass du gute 
Erfahrungen gemacht hast, hilft mir in der Beurteilung weiter.

Wenn ich das was ich bisher las richtig verstanden habe, machen die 
tranceiver den Busverkehr selbstständig. Das was das gesendet wird muss 
dem entsprechenden Protokoll entsprechen.
Ist das so im Ansatz schon einmal richtig?

von Thomas F. (igel)


Lesenswert?

F. F. schrieb:
> Wenn ich das was ich bisher las richtig verstanden habe, machen die
> tranceiver den Busverkehr selbstständig. Das was das gesendet wird muss
> dem entsprechenden Protokoll entsprechen.
> Ist das so im Ansatz schon einmal richtig?

Nicht ganz: Der Controller kümmert sich um den Empfang und Versand der 
CAN-Botschaften. CAN-Controller sind z.B der externe MCP2515, oder 
bereits im Mikrocontroller integriert wie beim AT90CAN oder dann die 
größeren 32-Bitter (STM32, ATSAM, LPC).

Der Transceiver wie z.B. MCP2551 ist lediglich ein Leistungsverstärker 
um die einzelnen Bits über die CAN-Busleitungen zu schubsen. Die 
Intelligenz dagegen sitzt im Controller.

von China Man (Gast)


Lesenswert?

H.Joachim S. schrieb:
> Ganz wichtiger Tip.
>
> 30€ tun es auch:
>
> 
https://www.antratek.de/usb-can-v7-00-analyzer?gclid=EAIaIQobChMIvK-Hje753AIVROd3Ch2CMwCAEAYYASABEgLsF_D_BwE

Der scheint auch direkt bei den Chinesen erhältlich zu sein (ebay, ...).
Gibt es dafür auch eine SW, die unter Linux läuft?

von Volker S. (vloki)


Lesenswert?

F. F. schrieb:
> Der  MCP2515  ist mir auch schon ins Auge gestochen...

Würde ich nicht machen. Für das Geld für den, bekommst du bestimmt auch 
schon einen Controller mit CAN Modul.

z.B. den PIC18F25K83. Bei Mouser gerade sogar günstiger wie der MCP2551.
Von anderen Herstellern gibt es da vermutlich auch was, aber da kenne 
ich mich nicht aus.

Mit dem MCP2515 bräuchtest du ja drei Chips.
- einen Controller mit Hard- oder Software SPI
- den MCP2551 (nenen wir ihn SPI <-> CAN Wandler)
- einen Transceiver, z.b. MCP2551 (ganz grob so was wie ein MAX232 für 
CAN)

Beim PIC18F25K83 brauchst du auch einen Transceiver. (von On-Board 
Sonderlösungen wie der Siemens AP2921 mal abgesehen).

Es gibt auch Controller die ALLES beinhalten, auch den Transceiver. Da 
kann ich dir aber keinen nennen ;-)

von Dr. Sommer (Gast)


Lesenswert?

F. F. schrieb:
> Irgendwann haben auch die CAN Cracks einmal angefangen.
CAN an sich ist auch relativ simpel. Da reicht schon der 
Wikipedia-Artikel.

F. F. schrieb:
> Also CANopen ist
> schon einmal Pflicht für mich.
CANopen hingegen ist ziemlich kompliziert. Das passt ggf. nichtmal auf 
die kleinen AVR's. Da gibt es ein paar Bücher zu, die braucht man da der 
Standard kaum lesbar ist... Es gibt auch fertige Software-Pakete dafür - 
als Open-Source und auch kommerziell - dann muss man nicht alles selber 
machen.
Es ist aber möglich ein normales, nicht-CANopen-Gerät, in eine 
CANopen-Netz einzubinden, indem man dessen fixe Nachrichten bei den 
anderen Nodes als PDO's konfiguriert. Ist nicht sehr sauber, aber bei 
fixen Systemen kommt man so schneller ans Ziel.

Ich würde auch dringend zu einem Mikrocontroller mit integriertem 
CAN-Controller raten, das macht vieles einfacher.
Ich mag das "Olimexino-STM32" Board gerne, das hat CAN schon fix und 
fertig aufgebaut - wenn es nicht unbedingt AVR sein muss, ggf. eine 
Option.

von mmm (Gast)


Lesenswert?

F. F. schrieb:
> Was muss man wissen, welches CAN für Nutzfahrzeuge. Also CANopen ist
> schon einmal Pflicht für mich.

Warum CANopen?
Ich kenne das als Protokoll für die (Industrie-) 
Automatisierungstechnik. Wird das in Nutzfahrzeugen tatsächlich auch 
verwendet?

von Peter D. (peda)


Lesenswert?

Dr. Sommer schrieb:
> CANopen hingegen ist ziemlich kompliziert.

https://www.can-cia.org/can-knowledge/canopen/canopen-history/
"Now, CiA’s secretaries have to maintain more than 20 000 pages of 
CANopen specifications."

von Steffen R. (steffen_rose)


Lesenswert?

mmm schrieb:
> F. F. schrieb:
>> Was muss man wissen, welches CAN für Nutzfahrzeuge. Also CANopen ist
>> schon einmal Pflicht für mich.
>
> Warum CANopen?
> Ich kenne das als Protokoll für die (Industrie-)
> Automatisierungstechnik. Wird das in Nutzfahrzeugen tatsächlich auch
> verwendet?

CiA447

von Lexa (Gast)


Lesenswert?

CANopen überwiegend für Aufbauer, sonst kaum zu finden.
SAE J1939 mit allen Substandards ist im LKW Geschäft der 
Kommunikationsstandard.

So long vom Tier1

von 3.142 (Gast)


Lesenswert?

F. F. schrieb:
> So, bin wieder zu Hause.
> Danke für die vielen Tipps. Werde nächste Woche von oben abarbeiten.
> Der  MCP2515  ist mir auch schon ins Auge gestochen und dass du gute

Ja wer auf Oldtimer steht nimmt den MCP2515.

Teslafahrer nehmen den MCP2517FD (2,2€) ;-)

von max123 (Gast)


Lesenswert?

Besorg Dir zwei "Arduino Due".Der hat schon einen Can-Bus (Arm PROZ).
Die Beispiele enthalten auch die Initialisierung.
.

von mmm (Gast)


Lesenswert?

Lexa schrieb:
> CANopen überwiegend für Aufbauer, sonst kaum zu finden.

Vielen Dank, wieder was gelernt...


> SAE J1939

Den hab' ich schon mal gehört.
Wobei ich meine, gelesen zu haben (Elektronik Automotive?), dass die 
Nfz-Hersteller inzwischen auch in Richtung AUTOSAR schielen (wegen ReUse 
und Kostenerspanis - wer's glaubt...)

von Volker S. (vloki)


Lesenswert?

mmm schrieb:
> Lexa schrieb:
>> CANopen überwiegend für Aufbauer, sonst kaum zu finden.
>
> Vielen Dank, wieder was gelernt...

Blöde Frage nebenbei: Was sind eigentlich Aufbauer?

Kenne CANopen von Motorsteuerungen. Man muss ja CANopen nicht komplett 
implementieren um einen solchen Motor oder auch einen Sensor zu 
benutzen.

Für eigene Projekte, kann man sich meiner Meinung nach auch super an 
CANopen orientieren und sich nur die Sachen raus picken, die man 
wirklich brauchen kann.

von Lexa (Gast)


Lesenswert?

AUTOSAR ist eine SW Architektur und im Grunde schon länger auch im Nfz 
Bereich etabliert.

Ein Blick in AR 4.x zeigt, dass ein J1939 Modul dort vorhanden ist, um 
z.B. die Interaktion zwischen Fehlerspeicher DEM und diagnostic messages 
(DM1, DM4,...) zu ermöglichen.

In der Tat ist der tatsächliche Ausbau des J1939 AR Moduls 
unterschiedlich zwischen den verschiedenen großen AR Anbietern.

Nfz Markt << Pkw Markt

Aufbauer:
Installieren einen Kran auf einem Lkw
Bieten Anzeigen im Bus
Machen aus einem normalen Lkw ein Feuerwehrfahrzeug.


J1939-DA
Das Konzept, mittels OD in CANopen Dinge in DS zu vereinheitlichen und 
so für schnellen Austausch defekter Komponenten zu sorgen, wird im 
J1939-DA verfolgt. Anders, als die Pkw Kollegen herrscht bei den 
wichtigsten Funktionen die Normung vor eigener proprietärer Nutzung.

von fchk (Gast)


Lesenswert?

F. F. schrieb:
> Der  MCP2515  ist mir auch schon ins Auge gestochen und dass du gute
> Erfahrungen gemacht hast, hilft mir in der Beurteilung weiter.

Das ist aber eine eher suboptiomale Lösung. Der SPI-Bus ist hier der 
Flaschenhals, und bei hoher Buslast und hoher Geschwindigkeit wirst Du 
mitunter Pakete verlieren.

Besser sind Prozessoren mit eingebautem CAN Controller. Da gibt es mehr 
als genügend ÄRMchen und MIPSe. Wenn Du unter allen Umständen an AVR 
klebst wie die Fliege an der Falle, dann bliebe Dir der 90CAN128 oder 
der Mega16M1. Da liegt der CAN Controller im Adressraum des Prozessors, 
der viel schneller reagieren kann.

fchk

von H.Joachim S. (crazyhorse)


Lesenswert?

fchk schrieb:
> Das ist aber eine eher suboptiomale Lösung. Der SPI-Bus ist hier der
> Flaschenhals, und bei hoher Buslast und hoher Geschwindigkeit wirst Du
> mitunter Pakete verlieren.

Hörensagen oder selbst erlebt??
Eine CAN-Message besteht schon mal aus z.T. deutlich mehr Bits als die 
Daten, die über die SPI transportiert werden müssen. Allerdings muss man 
auch ein paar Registeradressdaten senden, kommt am Ende etwa 1:1 raus. 
Die SPI kann man aber mit 8MHz betreiben - da verliert man gar nichts, 
es sei denn man stellt sich blöd an bei der Programmierung, also Luft 
genug. Dazu kommen Sende- und Empfangsbuffer auf seiten des 
CAN-Controllers, man muss also auch nicht sofort abholen. Dazu die 
Filterfunktionen, nicht alles muss im MC landen, was auf dem CAN 
reinflattert.
Und das Gerede der hohen Buslast - ja, soll man niemals aus den Augen 
verlieren. Praktisch sind aber Fälle mit >50% schon ziemlich selten.
Und hier gehts nicht um einen am Limit gefluteten 1MHz-Bus, sondern um 
erste Grundlagen, und genau dafür finde ich den durchaus geeignet. 
Jahrelang habe ich auschliesslich den 2515 für alle CAN-Sachen benutzt, 
niemals gab es einen SPI-Engpass.
Inzwischen gibts genug Auswahl an MCs mit internem CAN-Controller, und 
für neue Sachen benutze ich auch ausschliesslich solche.

PS: 1MBaud sind nicht nur die theoretische Höchstgrenze, sondern auch 
praktisch nur selten anzutreffen. Sehr oft 500kBit, gerne auch weniger. 
Und dann steht die SPI-Sache schon sehr entspannt da. Hat den netten 
Nebeneffekt, dass man die slew-rate runterfahren kann und so weniger 
EMV-Probleme hat, keine abgeschirmten Kabel braucht usw.

: Bearbeitet durch User
von F. F. (foldi)


Lesenswert?

CANopen ist für mich besonders interessant, weil unsere Fahrzeuge damit 
ausgerüstet sind.

von Dr. Sommer (Gast)


Lesenswert?


von Frank K. (fchk)


Lesenswert?

H.Joachim S. schrieb:
> Und hier gehts nicht um einen am Limit gefluteten 1MHz-Bus, sondern um
> erste Grundlagen, und genau dafür finde ich den durchaus geeignet.

Ich weniger. Ich finde es nämlich sehr praktisch, wenn beim Debuggen die 
CAN-Register wie alle anderen auch im Adressraum liegen, wo ich sie mir 
im Debugger einfach anschauen kann.

Und der ECAN im PIC18F25K80 hat ein paar Features mehr und ein paar Bugs 
weniger, und es entfällt ein Quarz und ein Chip - ja warum soll ich dann 
zu was schlechterem greifen?

fchk

von H.Joachim S. (crazyhorse)


Lesenswert?

Frank K. schrieb:
> Ich finde es nämlich sehr praktisch, wenn beim Debuggen die
> CAN-Register wie alle anderen auch im Adressraum liegen,

Wie oft interessiert man sich denn für die CAN-Register? Nach der 
Initialisierung schmeisst man seine Objekte da rein oder holt sie raus, 
auf welchem Weg das dann genau passiert ist doch egal, interessiert 
nicht mehr wenn die low-level-Funktionen fertig sind.
Dann gibts noch die Fälle, wo man nachträglich ein bestehendes System um 
CAN erweitern will. Das ist mit ner SPI-Schnittstelle ganz schnell 
erledigt (statt einen neuen Prozessor zu verwenden und mehr oder weniger 
die gesamte Platine und die gesamte Software anzupacken). Oder Raspberry 
z.B.

Ich will ja auch gar nicht behaupten dass das der ultimative Einstieg 
sei (benutze ihn ja selbst kaum noch). Aber ein möglicher und schnell zu 
realisierender Weg mit bereits vorhandenen Mitteln um mal 
reinzuschnuppern ist er allemal. Und das vielzitierte 
SPI-Flaschenhalsproblem existiert nicht wirklich.

von Sven L. (sven_rvbg)


Lesenswert?

Da findest Du einen guten Einstieg. Du wirst sicher das Rad nicht neu 
erfinden wollen? 
http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek

von guest (Gast)


Lesenswert?

F. F. schrieb:
> CANopen ist für mich besonders interessant, weil unsere Fahrzeuge damit
> ausgerüstet sind.

Dann solltest Du einiges an Zeit mitbringen, gegebenenfalls auch einiges 
an Geld.

Hier mal ein paar Links:
https://www.can-cia.org/canopen/
https://www.canopenbook.com/
http://www.esacademy.com

von F. F. (foldi)


Lesenswert?


von F. F. (foldi)


Lesenswert?

guest schrieb:
> Hier mal ein paar Links:
> https://www.can-cia.org/canopen/
> https://www.canopenbook.com/
> http://www.esacademy.com

Danke!
Das Buch gab es als PDF.

von F. F. (foldi)


Lesenswert?

H.Joachim S. schrieb:
> Ich will ja auch gar nicht behaupten dass das der ultimative Einstieg
> sei (benutze ihn ja selbst kaum noch). Aber ein möglicher und schnell zu
> realisierender Weg mit bereits vorhandenen Mitteln um mal
> reinzuschnuppern ist er allemal. Und das vielzitierte
> SPI-Flaschenhalsproblem existiert nicht wirklich.

Natürlich wird das nicht der Weisheit letzter Schluss bleiben, aber dann 
kann man das an "seinen" Controller dran stricken und zum schauen, ob es 
klappt, finde ich das gar nicht so übel.

von Dr. Sommer (Gast)


Lesenswert?

F. F. schrieb:
> Gerne, aber nicht für  $2,793.83.

Das gibt's bestimmt auch billiger. z.B. in Uni-Bibliotheken.

von Andrew T. (marsufant)


Lesenswert?

H.Joachim S. schrieb:
> PS: 1MBaud sind nicht nur die theoretische Höchstgrenze, sondern auch
> praktisch nur selten anzutreffen. Sehr oft 500kBit, gerne auch weniger.
> Und dann steht die SPI-Sache schon sehr entspannt da.

Kann ich bestätigen. Viele Lastenheften der Kunden  nennen sogar 5MBaud 
(weil z.B. TCAN330 das mit FDR angibt), nutzen in ihren Produkten dann 
aber nur deutlich weniger.
Spätestens wenn man die EMV in den Griff kriegen muß, fängt der Aufwand 
an :)

Heutige SPI bei modernen µC und µP auf dem Board ist aber auch da kein 
Engpaß, eher die EM Abstrahlung.

von Volker S. (vloki)


Lesenswert?

F. F. schrieb:
> Natürlich wird das nicht der Weisheit letzter Schluss bleiben, aber dann
> kann man das an "seinen" Controller dran stricken und zum schauen, ob es
> klappt, finde ich das gar nicht so übel.

Ist sicher ein gutes Argument sich zusätzlich noch in einen neuen 
Controller einarbeiten zu müssen.

Weil ich hauptsächlich (8-Bit)PICs benutze, ist das Umstiegs-Problem für 
mich möglicherweise etwas kleiner. Eigentlich sind ja alle mehr oder 
weniger gleich, nur haben einige eben USB, CAN, WHATEVER zusätzlich. Da 
kann man leicht wechseln.

Wenn das nicht so wäre, dann könnte ich mir vorstellen auch diesen Weg 
zu gehen. Hatte sogar irgendwann mal ein MCP2515-BM Kit gekauft, aber 
nie genutzt, weil ich dann doch zu faul war mich in diese einzuarbeiten 
;-)

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
Noch kein Account? Hier anmelden.