Forum: Mikrocontroller und Digitale Elektronik CAN Gateway auf ein neues


von Patrick (Gast)


Lesenswert?

Hallo
Ich bin in uC Programmierun noch ein Anfänger.
Ich beschäfftige mich momentan mit CAN-Bus Systemen. Bisher hab ich 
immer mit Diagnose Tools bzw. gekaufter Harrd und Software gearbeitet. 
Nun muß ich allerdings ein Standalone Gateway Bauen.
Aufgabe des GW:
- 500k Baud
- Nahrichten geändert durchlassen
- andere Nachrichten ungeändert durchlassen
- auf bestimmte nachrichten reagieren ( z.B. wenn 0f 05 18 kommt 0e 05 
18 senden)

gesndet werden ca. 15 Nachrichten alle im 10ms takt

Und das aber in beide Richtungen. Wobei in einer richtung erstmal nur 
der Nachrichten durchgang gewährt sein muß?

Hier gibt es schon ein paar wenige Artikel dazu, jedoch werden da 
teilweise so viele Sachen empfohlen, das  ich auch nicht schlauer werde.

Wichtig für mich ist es auch, das gute Samples bzw. Tutorials vorhanden 
sind.

Mein Aktueller stand währen 2 x MCP2515 und evtl. nen AVR.
Aber es gibt ja mittlerweile auch schon embedded varianten.

Danke

von Gast (Gast)


Lesenswert?

Was ist für dich eine embedded-Variante?

AT90CANxx?

Die haben aber nur ein CAN-Interface (?).Es müsste also ein weiteres per 
SJA100 oder MCP2515 hinzugefügt werden. Die HCS12 von Freescale oder 
einige ARM7-Controller haben mehrere CAN-Interfaces, wären also auch 
eine Überlegung wert.

Gast

von Patrick M. (patrickmarkl)


Lesenswert?

Hi Patrick,

mir ist nicht ganz klar was Deine Frage ist.

Gruß
Patrick

von Patrick (Gast)


Lesenswert?

Ja, embedded meinte ich damit, das ich nicht 3-4 chips hab, sondern die 
schon in einen integriert sind.


Meine Frage war, ob mir jemand helfen kann, wie ich das aufbauen sollte. 
Und welche Chips sich da empfehlen (gerade für mich als Anfänger).

Vielen Dnak schonmal

von Otto (Gast)


Lesenswert?

Für eine Hilfe sind Deine Informationen etwas dürftig.....

Es wird sicher mehr als ein Chip und der Teufel steckt in der 
Programmierung - welche Sprache hättest Du z. B. gerne ?

Gruss Otto

von anonymous (Gast)


Lesenswert?

ein günstigen µC mit 2 CAN nodes gibts in der xc800 reihe von infineon.
ist allerding alte 8051 Architektur mit "nur" ca 5 MIPS
-der CAN-Kontroller kann auf das selbstständige Routen von Paketen 
zwischen zwei Bussen konfiguriert werden, solange an den Nachrichten 
z.B. nur die ID geändert werden muss.
-um inteligente Aktionen, wenn paket A auf bus 1 sende B auf bus 2 muss 
sich natürlich der 8051 kümmern.
-Der CAN-Teil des µC ist leider recht komplex, gerade für einen 
Anfänger, und das Datenblatt ist infineontypisch: kein Beispielcode, 
kein roter Faden: Es werden halt alle Bits aufgezählt, die Story 
dahinter erschließt sich gerade dem Anfänger erst nach Wochen...
-es gibt DAVE von Infineon als Codegenerator, der kann einen zumindest 
beim einstieg helfen.
-Compiler gibts den z.B. kostenlosen sdcc, oder natürlich von keil, 
altium etc.

von Patrick M. (patrickmarkl)


Lesenswert?

Hi,

Chips gibt es viele die interne CANs haben. Der bereits erwähnte S12 hat 
bis zu 5 interne CAN Kanäle. Schau Dir mal der T-Board bei 
Elektronikladen.de an. Dazu kommen halt die Transceiver für die 
benötigten Kanäle (auf dem S12 Board ist nur einer drauf). Und vom Preis 
geht das Ding. Problem ist eher der Debugger und ein Compiler (wobei es 
einen GCC dafür gibt).

Die Anforderungen an die Software hören sich zunächst nicht so kritisch 
an.

Gruß
Patrick

von Juergen H. (harms)


Lesenswert?

Bei mir laeuft eine Gateway zwischen meinem zentralen CAN Hausbus - 
galvanisch gekoppelte Treiber und einem Stichbus in den Garten, der 
Opto-gekoppelt ist, beide mit 100kBps.

Das Gateway selber besteht aus einem AT90CAN128 (kleiner ginge auch 
leicht) und einem MCP2515. Der AT90CAN spielt die Rolle des Knotens am 
zentralen Bus, der gartenseitige Partner ist ein MCP2515, die beiden 
sind mit SPI gekoppelt (alle anderen Knoten am Gartenbus sind AT90CANs. 
Die Software, sowohl fuer den AT90CAN als auch fuer den MCP2515 beruht 
auf hier im Forum beschriebenen Bibliotheken, die SPI Kopplung ist 
trivial.

Der CAN Teil der Software entspricht mehr oder minder dem was hier im 
Forum liegt (der AT90CAN Teil genau, der MCP2515 Teil ist weiter 
entwickelt), die uebrige Software allerdings so spezifisch fuer meine 
Anwendung dass Kopieren wohl muehsamer ist und wenig Sinn macht.

Die Beschreibung meiner Bibiliothek fuer den AT90CAN Teil liegt hier: 
http://www.mikrocontroller.net/articles/CAN_Bibiliothek_f%C3%BCr_AT90CAN_Prozessoren. 
Am Ende in den Referenzen gibt es auch den Verweis auf die entsprechende 
MCP2515 Loesung. Wenn Du willst, kann ich aber mein MCP2515 Modul hier 
ins Forum legen, ich habe doch einiges daran (meiner Meinung nach) 
verbessert und freundlicher fuer den Einsatz in solch einem Gateway 
gemacht (es ist aber ein "quick fix" und nicht, wie die AT90CAN 
Bibliothek, in Hinblick auf Verwendung durch andere bereinigt).

von H.j.Seifert (Gast)


Lesenswert?

Ich habe sowas ähnliches Mal mit Mega32 und 2xMPC2515. Problemlos, auch 
bei hohem traffic. Beide an der Hardware-SPI, 2 CS-Leitungen.
Takt 16Mhz, SPI-Clock 8MHz, keine Zeitprobleme.

von peterguy (Gast)


Lesenswert?

Die wichtigste Frage, um den Aufwand für die Implementierung abschätzen 
zu können und auch vernünftige Tips zu geben ist eigentlich, ob es 
reicht das Gateway starr zu programmieren oder ob die ganze Geschichte 
flexibel und erweiterbar sein soll.
Sprich: reicht eine gefrickelte Lösung ohne Rücksicht auf Reserven und 
Erweiterbarkeit oder soll ein frei konfigurierbares Gateway mit allem 
pi-pa-po bei rauskommen.
Wer ist der Kunde? Du selbst, deine Firma oder soll das Ganze verkauft 
werden?
Soll das Gateway auf Signalebene arbeiten oder reicht es auf die 
Rohdaten zuzugreifen?
Was für ist deine Ausgangsbasis, hast Du z.B. CanDB Dateine für beide 
Busse?
Wie viel darf das Ganze Kosten, was soll bei rauskommen... Reicht ein 
Eval-Board oder wird ein eigenes Layout gemacht?


Als ersten Tipp würde ich dir die Freescale Prozessoren ans Herz legen, 
für deine Zwecke reicht ein S12X. Hat 5 CAN Module onboard und verfügt 
sogar über einen zweiten Prozessorkern, der gerne für Gateway Aufgaben 
verwendet wird (ist für Anfänger aber vielleicht zu krass). Für den S12 
gibt es hier im Forum auch eine CAN library, schau mal in der 
Codesammlung nach...

von Patrick (Gast)


Lesenswert?

Hall, und herzlichen Dank für die Info.

Ich beschäfftige mich in einer Studienarbeit damit. In der Fa. in der 
ich das mache soll das später dann auch eingesetzt und evtl verändert 
werden.

- Erweiterbar währe gut, aber vorab nicht notwendig.

- Layout wird selber gemacht, da es später zum Gebrauch in eine Box 
soll. AUch die Anschlüsse werden keine CAN-Typischen Sub-d Buchsen sein. 
shon alleine deswegen wird etwas selber gebaut werden.

- Ein Testboard würde aber für meine entwicklung auch erstmal genügen, 
die Umsetung für den späteren gebrauch ist dann ja nur ein kleinerer 
schritt.

- Programmierung über C währe gut.

- Kann auch eine Mark mehr kosten.

Bin halt kein Elktroniker, sondern Physiktechniker, daher muß ich mich 
noch bissl mehr einarbeiten.

Evtl. kann mir jemand auch ein entsprechendes Testboard empfehlen.

danke

von Otto (Gast)


Lesenswert?


von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Ziemlich genau das, was im ersten Beitrag beschreiben wurde, schon mal 
gemacht als Prototyp (keine Ahnung was dann weiter daraus geworden ist). 
Hardware: http://www.olimex.com/dev/lpc-p2129.html (lustigerweise auch 
beim im vorherigen Beitrag genannten Vertrieb im Programm - aber nicht 
auf der verlinkten Seite gelistet). Software war gebastelt um den 
CAN-Treiber von (seinerzeit noch) Philips: 
http://www.standardics.nxp.com/support/documents/ . Die Errata für die 
"höheren" CAN-Funktionen beim LPC2129 haben dabei nicht gestört, es 
wurde ohnehin jedes Paket empfangen (keine Filter), ausgewertet, evtl. 
verändert und an den jeweils anderen Kanal weitergeleitet. Informationen 
zur Programmierung von LPC2k in C mit diversen freien und kommerziellen 
Tools findet man im Netz. Gibt ein paar aktuellere Controller mit Kernen 
von ARM und zwei oder mehr internen CAN-Kanälen, auch von anderen 
Herstellern.

von peterguy (Gast)


Lesenswert?

Ich kann Dir für dein Vorhaben wärmstens dieses Gerät hier empfehlen:
http://www.eberspaecher.com/servlet/PB/menu/1053219_l1/index.html
Wird optional mit kompletter Entwicklungsumgebung (ANSI C) und vielen 
Beispielen geliefert. Noch ein Tip: Wenn du dich für das Gerät 
entscheiden solltest, frag auch mal im Support bei denen nach. 
Vielleicht haben die ja noch ein fertiges CAN<->CAN Beispiel in der 
Schublade.

Oder, wenns etwas größer und schneller sein soll diese feine Gerät hier:
http://www.eberspaecher.com/servlet/PB/menu/1053222_l1/index.html
Das wäre allerdings mit Kanonen auf Spatzen geschossen ;-)

Habe mit beiden Geräten schon gearbeitet und war sehr zufrieden.

von AS (Gast)


Lesenswert?

Hi!
Habe meine ersten CAN Schritte auf Infineon MCU's und Transceivern 
gemacht und hat damals super geklappt. Im 8Bit Bereich haben die 
Controller mit 2 Nodes und bis zu 32 Message-Objects, bei 16Bit bis zu 
3Nodes und 64 Objects und man findet haufenweise Low-Level Driver und 
CAN Routinen im Netz. Meines wissens haben die 16Bitter sogar einen 
eingebauten CAN Gateway Controller welcher konfigurierbar ist.

Schau mal auf die Infineon Seite Microcontroller Seite, haben 
tonnenweise AP-Notes und Bsp.........ist auch kein Wunder, CAN kommt aus 
dem Autobereich und da sind die weltweit führend bzw. haben entsprechend 
progessionelle Peripherals in ihren MC's.

Grüße,

AS

von Patrick (Gast)


Lesenswert?

Hallo  peterguy

Die HCS12 klingen ja ganz gut. haben auch 5 Can^. Jedoch nur einen der 
Highspeed fähig ist. Da ich mind 500kBaud brauche und das auf beiden 
Seiten.

Ansonsten ist das LPC-P2129 ganz interessant.

zu dem eberspächer Gerät.... klingt ja auch gut soweit. Aber für mich 
ist es schon interessanter, wenn ich eine Platine habe, anstatt so eine 
fertige Box. Denn im endeffekt muß das ding nachher ja ehh in ein 
eigenes gehäuse.

Hat denn sonst noch jemand ein paar Tipps

von peterguy (Gast)


Lesenswert?

@Patrick:
Also der Freescale Controller S12XEP100, den ich hier einsetzte, hat 5 
Can Module, die meines Wissens nach auch alle Highspeed-fähig sind. Laut 
Datenblatt sind bis zu 1MBaud möglich.

Da Du in jedem Fall ein eigenes Gehäuse bauen möchtest, dann könntest Du 
auch das Eval-Board mit 2 CANs von Eberspächer nehmen:
http://www.eberspaecher.com/servlet/PB/menu/1053203_l1/index.html
Allerdings ist das primär für FlexRay ausgelegt und es wird 
wahrscheinlich günstigere Alternativen geben.


Ich habe z.B. das Eval Board hier von Freescale (mit oben genannter 
CPU), kostet unter 100,-€:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DEMO9S12XEP100-ND
Wenn Du jetzt noch auf Lochraster einen zweiten Transceiver lötest, hast 
Du deinen zweiten CAN Kanal. Wäre meines Erachtens die günstigste 
Methode.

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.