Hallo mikrocontroller Forum, ich schreibe in der Hoffnung das ich hier die Erlösung meines Problems finde. Das Problem: Ich möchte mich endlich mit Hardwarenaher Programmierung beschäftigen. Nun weiss ich nicht wo ich ansetzen soll. Hardwarenahe Programmierung ist allerdings ein zu allgemeiner Bereich. Bis jetzt habe ich mich nur auf software Ebene beschäftigt. D.h. ich kann programmieren sei es in C, C++ und ganz besonders in Java. Ganz speziell ist meine Frage zum CAN bus. Da geht es schon los. Ich kann mir darunter nichts vorstellen. Was ist ein CAN bus? Ist es eine Steckkarte die ich beispielsweise an einem PCI Steckplatz an einem PC einsetze? Was ist eine Spezification des CAN busses? Ist es eine Vorschrift für die Hardwareimplementierung um den CAN bus zu realisieren? Wenn ja, was sind das für Hardwareeinheiten? Ist es ein CAN bus wenn ich beispielsweisen 3 pc's (Teilnehmer) mit jeweils CAN karten miteinander verbinde? Wie sende ich die Signale/Daten untereinander? Gibt es da zu jeder Karte Treiber die mir das ansprechen der CAN Karte erlauben und ich dann bits und bytes senden kann? Reicht ein C code dann aus um dies umzusetzen? Ihr merkt schon, dass ich vor lauter Bäumen den Wald kaum sehe... Vielleicht zeigt mir jemand ein Weg, wie ich da herausfinde. Danke
Na denn willkommen in der Welt der Firmware. Bei CAN wirst Du Dich mit Bits auseinandersetzen muessen anstellen von Parent and Child prozessen ;-) Aber nun Spass beseite, es gibt einige recht gute Seiten ueber CAN. Mein Favorit: http://www.canbus.us/ allerdings alles in Englisch. Hier gibts dann Online Training, fuer umsonst. http://www.esacademy.com/myacademy/ Schau Dir als erstes das CAN-Protokoll an, denn die Inhalte des Protokolls werden Dich bei CAN ueberallhin verfolgen. Hoffe das hilft erst mal ueber die Anfangshuerden. Die CAN Spezifikation von Bosch schreibt die Logik vor, nicht die Hardware. Sie gibt allerdings Empfehlungen fuer die Hardware. Bei der Software gibt es dann ein paar Protokolle, z.B. CAN-Open aber auch viele Firmen-interne. Robert
also can nimmt man i.d.R. NICHT um PC's miteinander zu vernetzen, vielmehr bietet CAN eine Grundlage um verschiedenste Steuer-, Erfassungs- und Regeleinheiten zusammen zu binden. Z.B. Eine Steuerung von einer großen Maschine (z.B. eine "kleine" Spritzgußmaschine oder aber eine ganze Fertigungslinie bei BMW die ein komplettes Auto baut) spricht also über CAN die unterschiedlichsten Geräte von unterschiedlichen Herstellern an, Drehgeber die irgendwelche Messwerte erfassen, Roboterarme, Displays für Bediener.... CAN ist in soweite normiert, dass es einen Dachverband gibt welcher mal vor einiger Zeit das Datenprotokoll festgelegt hat, die Hardware muss natürlich dann auch bei allen geräten gleich sein. CAN wurde soweit ich weiß von Bosch und Mercedes entwickelt, alternativ dazu gäbe es noch den Profibus von Siemens, dessen Nachfolger Profinet (auch von Siemens) oder nun neuere Feldbusse wie z.B. Powerlink oder Ethernet/IP. Alle haben aber eines gemeinsam, sind sind lediglich eine Normierung damit Geräte für Maschinen in der gleichen Sprache kommunizieren könne. Die Normierung für das (hauptsächlich in Europa) verwendete CAN-Protokoll ist das CANopen, in den USA dagegen wird eher das DeviceNET-Protokoll verwendet, beides über die Schnittstelle des Controller Area Network - CAN ;) Wenn Du eine Spezifikation suchst, müsstst Du diese bei der "CAN in Automation" suchen, diese Unterlagen kosten aber etwas! (ähnlich wie die DIN-Norm) Die elementaren Grundlagen findest Du aber auch so im Netz, z.B. bei den oberen zwei links Als Hardware wir im "Bastlerbereich" gerne ein µC beliebiger Art zusammen mit dem Phillips CAN-Controller SJA1000 verwendet, dazu benötigst Du dann noch eine (Hardware-)Treiber (z.B. auch von Phillips/NXP den 82C251) Es gibt aber auch µC's die einen CAN-Controller integriert haben, dann reicht ein µC und der entsprechende Treiber. Wenn Du Dich wirklich mit CAN beschäftigen willst, ließ Dir die obere Lins durch und/oder schau Dir das Datenblatt des SJA1000 an, da wird auch recht viel "drum herum" erklärt! ;) Und noch was: wenn Du aus der PC-Welt kommst - Hardwarenah wird in der Regel sequentiell prorammiert, damit hatte ich am Anfang Probleme das zu verstehen weil ich eben auch viel mit C++ und Objektorientiert geproggt habe, bevor in in die µC-Welt einstieg! Und jetzt viel Spaß!
Can Can wrote: > Ist es ein CAN bus wenn ich beispielsweisen 3 pc's (Teilnehmer) mit > jeweils CAN karten miteinander verbinde? Eher nicht. Der CAN-Bus dient dazu, daß sich Mikrocontroller direkt miteinander unterhalten ohne großen Protokoll-Wasserkopf und ohne Betriebssystem. Wenn Du was mit CAN machen willst, solltest Du also erstmal mit MCs anfangen. Peter
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.