Hallo
ich habe hier schon einige Seiten durchgelesen.
Meín Fall ich habe einen Infinieon Controller XC161 mit Can Schnittelle
daran Bustreiber für die Pegelwandelung.
DAs ganze will ich mit einem PC verbinden.
Was benötige ich um das ganze von einem PC anzusteuern reicht da ein
RS232 auf CAN-Bus Wandler. Und gibt es Software für den PC wo ich nur
die Daten eingebe und mir das Identifier Protokoll selbst erstellt wird.
Wer weiss da was.
Beruflich oder Hobby-Gebastel?
Wenns für die Arbeit ist, dann besorg dir ein CAN-Interface
für den PC von IXXAT oder PEAK.
Ansonsten gibt es eine recht einfache Parallelport-Lösung mit
dem MCP2515 von Microchip. Ich glaub das ist in der aktuellen
Elektor auch drin(?)
>ist das programmieren für den controller einfach hanzuhaben
Wie meinst du das? Der programmiert sich oder andere nicht von selbst
;-)
Scherz beiseite!
Mit den Infineon Teilen hab ich selbst noch nichts gemacht.
Von daher kann ich da im Detail nichts zu beitragen.
Was hast du denn eigenlich vor? Bzw. was verlangt dein Chef von dir?
ja aber was ich noch nicht verstanden habe ist das mit dem adressieren
von mehreren Teilnehmer die da im bus sind.
wie wird da die entsprechende Adresse festgelegt das der nur die Daten
bekommt zu dem sie auch kommen sollen. Werden die Hardware mäßig per Dip
Schalter eingelesen oder über software mit dem standard protokoll
mfg
Die ID im CAN-Frame kennzeichnet den Inhalt des Frames, nicht dessen
Ziel und ist damit eher als Absender- denn als Zieladresse zu verstehen.
Jede Node entscheidet für sich, welche Frames sie zur Kenntnis nehmen
will.
Das ergibt schon aus der Eigenschaft des Busses: Es darf nicht
vorkommen, dass Frames verschiedener Nodes zum gleichen Zeitpunkt die
gleiche ID enthalten.
>adressieren von mehreren Teilnehmer
redest du von CAN oder von CANopen?
CAN:
Die Teilnehmer haben keine eigene Adresse, sondern die Nachrichten.
Jeder Teilnehmer kann mehrere Nachrichten(arten = Adresse) empfangen.
CANopen:
Jeder Teilnehmer hat eine eineindeutige (Knoten)nummer. Die Adressen
(COB-IDs) haben eine bestimmte Bedeutung.
Hallo
um das ganze mal etwas verständlicher zu machen
Ich habe mehrere leiterplatten bzw geräte mit can- schnittstelle.
Auf der Leiterplatte ist der Infieon xc161 controller daran sind zwei
bustreiber angeschlossen die mein ttl signal auf can level bringen.
Was brauche ich um diese anzusteuern von der Hardware bis zu Software.
Ich will sie mit einen PC ansteuern.
Ich brauche doch als erstes einen usb /can wandler wo ich meine geräte
als sogenannte slave dranhänge.
dann eine Ansteuersoftware wo ich die einzelnen geräte festlege welche
ID (Adressen) sie haben.
Kann mir wer sagen was ich alles dafür brauche
Entschuldige bitte, aber Du redest wirr.
Was soll eigentlich getan werden? Normalerweise ist der CAN dazu da,
damit sich Steuergeräte untereinander unterhalten. Sagt auch schon der
Name: Controller Area Network. Nur Programmierung im Feld, beim Auto
z.B. in der Werkstatt beim Softwareupdate unterhält sich der PC über den
CAN mit dem Steuergerät. Dazu wird meistens das KWP2000-Protokoll
genutzt.
Was willst Du nun machen?
Willst Du den XC161 erstmal programmieren, damit er sich auf dem CAN mit
einem anderen Controller unterhalten kann oder möchtest ein
Softwareupdate über CAN machen?
Ich kann mir leicht vorstellen, dass der CAN-Bus für Anfänger nicht
einfach ist. Aber ehe man sich allzusehr in Details verstrickt sollte
doch die Aufgabe erst mal klar sein.
Gruß Matthias
Es gibt viele gute Tutorials und Folienen und soetwas in der Art im
Netz. Einfach mal suchen.
> ich meine geräte als sogenannte slave dranhänge
Bei CAN gibt es keine Slaves.
Willst du selbst ein CAN-Netzwerk aufbauen oder nur vorhandene
CAN-Knoten mit dem PC ansprechen?
"Ich brauche doch als erstes einen usb /can wandler wo ich meine geräte
als sogenannte slave dranhänge.
dann eine Ansteuersoftware wo ich die einzelnen geräte festlege welche
ID (Adressen) sie haben."
Es gibt von PEAK sowohl Karten als auch USB/CAN dongles. Als Software
ist auch schon ein einfacher Monitor dabei, mit dem Du CAN-Botschaften
definieren kannst. Du kannst auch einstellen, ob die Botschaften
einmalig oder zyklisch gesendet werden. Gleichzeitig kannst Du auch
sehen, was auf dem CAN los ist und Du kannst Botschaften filtern.
Vielleicht hilft das schon mal weiter.
Gruß Matthias
hallo
Ich habe jetzt eine usb/can adapter mit dem ich nachrichten versenden
will.
Ich habe es mit meinen µController infineon xc161 der intern einen
can-Controller besitzt. Habe auch ein Can programm in keil erstellen
lassen. aber sobald ich eine can nachricht auf dem bus gebe zeigt mein
usb/can adapter error bzw bus error. und ich erhalte am controller keine
daten.
An was kann das liegen.
steffl wrote:
> aber sobald ich eine can nachricht auf dem bus gebe zeigt mein> usb/can adapter error bzw bus error. und ich erhalte am controller keine> daten.> An was kann das liegen.
Falls nur ein "echter" Knoten und ein Monitor verbunden sind: Es muß
mindestens ein Empfänger vorhanden sein, der das ACK-Bit setzt. Die
Tools von Vector z.B. kann man so einstellen, daß sie das ACK-Bit setzen
oder auch nicht. Ich kenne Deinen CAN-Monitor/PC-Tool nicht. Falls kein
Knoten das ACK-Bit setzt, erhält man nur Errorframes beim Sendeversuch.
D.h.: Für die Senderichtung uC->PC muß das PC-Tool das ACK-Bit setzen,
für die Senderichtung PC->uC muß das ACK-Bit vom uC bedient werden. Dazu
muß der CAN-Controller initialisiert und der Transceiver eingeschaltet
sein.
Kontrolle der Baudrate und Abschlußwiderstände wurden schon genannt. Das
Bittiming sollte auch übereinstimmen (ist aber bei kurzer Leitung auf
dem Labortisch nicht so kritisch).
Gruß Martin
hallo
Ich sende vom pc aus mit dern can haker software. Muss mann die auf was
bestimmtest einstellen.
Ich habe den 11bit identifier eingestellt.sobald ich auf senden gehe
kommt error.
Ja ich habe die gleiche baudraute eingestellt 10kbit/s auf beiden
seiten.
mein Oszi zeigt beim erstenmalsenden so was wie daten an aber dann nur
sowas wie wäre ein glock signal drauf das gleichbleibend ist.
Der bustreiber vom controller ist aktiv auf highSpeed eingestellt.
Was meinst du Can-Controller initialisiert.
Hallo steffl,
GND am Masse, Vcc an +5V, TxD an TxD, RxD an RxD, Vref an Vcc/2
(Spannungsteiler), S je nach gewünschter Betriebsart (normal auf GND),
CANH an CANH und CANL an CANL.
Gruss Otto
Hallo steffl,
wie steuerst Du den Lawicel USBCAN an ? Soweit mir bekannt, wird dieser
wie auch der CAN232 über ASCII-Kommandos (z. B. von Hyperterminal)
gesteuert.
Nach dem Einschalten muss zunächst die Baudrate mit "S0" bis "S6"
gesetzt werden - "S6" ist z. B. 500 kBAUD.
Anschliessend wird der "CAN-Kanal" mit dem Befehl "O" (O wie Open)
geöffnet.
Nun können die Flags (SJA1000-Statusregister) abgefragt werden.
Der Adapter geht auf Störung, wenn er kein "ACK" bekommt.
Gruss Otto
Hallo
danke für die infos
Wenn ich ein telegramm sende wird bei mir nichteinmal ein interrupt
ausgelöst um in die empfangsroutine zu kommen.
Noch was anderes wenn ich zwei von den lawicel wandler verbinde kann ich
doch von einen com schnittstelle senden und von der anderen com
schnittstelle empfangen oder.
mfg
Hallo steffl,
theoretisch ja - praktisch ausprobiert habe ich das noch nicht (ich habe
nur einen CAN232).
Z. Zt. verwende ich diesen, um aufgezeichnete LOG-Dateien über den CAN
an eine "Eigenentwicklung" auszugeben, was problemlos funktioniert.
"Früher" habe ich den CAN232 "andersherum" verwendet, um den CAN in die
"Eigenentwicklung", die "damals" noch kein eigenes CAN-Interface hatte,
einzuspeisen.
"Elektrisch" ist es nur erforderlich, Pin 2 (CANL) und Pin 7 (CANH)
direkt miteinander zu verbinden - in ca. 80% aller Fälle wird dies
funktionieren.
Auf Grund möglicher Potentialdifferenzen sollte auch GND angeschlossen
sein.
In einigen Fällen funktioniert es nicht - dann müssen auf beiden Seiten
(direkt am CAN-Anschluss des jeweiligen Knoten) 120 Ohm Widerstände
zwischen CANH und CANL geschaltet werden.
Gruss Otto
> 2 (CANL) und Pin 7 (CANH) direkt miteinander zu verbinden
Pin 2 des einen auf Pin 2 des anderen CAN-Interface, ebenso Pin 7 des
einen auf Pin 7 des anderen