Ich habe mal mit einer heissen Nadel aus dem Datenblatt eines
Can-Transceivers eine kleine Schaltung gestrickt, mit der ich 2
Can-Systeme miteinander verbinden kann. Die Idee dahinter ist ganz
banal. Ich benutze einen CAN-Transceiver um das Differenzielle CAN -
Signal wieder in ein Logisches Signal umzuwandeln, trenne dieses über 2
Optokoppler galvanisch auf und speise es wieder in einen Can-Transceiver
ein, so als käme es gerade aus einem uC.
Zum testen habe ich 2 90Can128 mit nicht galvanisch getrenntem
CAN-Transceiver angebunden. Verbinde ich die Boards direkt funktioniert
alles . Schalte ich aber meine kleine Schaltung dazwischen geht nix
mehr. Ist in der Schaltung ein offensichtlicher Fehler?
Alternativ dazu.
Hat jemand eine funktionierende Schaltung dieser Art mit der es möglich
ist mehr als 32 CAn Teilnehmer zu verbinden und die Kreise galvanisch
voneinader zu trennen um Spannungsverschleppungen zu vermeiden?
Also wenn ich mir den original Schaltplan aus dem Datenblatt zur Hand
nehme ist rx am can-transceiver ein Ausgang, denn er tribt eien LED im
Optokoppler, wogegen tx ein Eingang ist, der durch den transistor eines
Optokopplers nach Masse gezogen wird, sonst zieht ihn der 390 Ohm R gen
+.
Ergo muss doch die Rückseite des ganzen genauso aussehen?
Bist Du sicher das das stimmen kann Rx an Rx?
Rechts unten hast Du 2x 60 Ohm nach GND gezeichnet. Das geht auf keinen
Fall, er Bus muss beidseitig mit 120 Ohm abgeschlossen sein, und zwar
zwischen CanH und CanL.
Sind die Optokoppler schnell genug?
Viel Erfolg!
Wenn Du's professionell lösen willst:
IXXAT CAN-bridge
kann Messages filtern, Baudraten wandeln und optional opto-trennen.
<< 2x 60 Ohm nach GND gezeichnet. Das geht auf keinen
Fall, >>
Hatte ich aus einem Datenblatt eines CAN-Transceivers...
Es geht aber auch nicht mit 120Ohm ohne Masse und auch nicht ganz ohne R
RX ist immer ein Eingang "Receiver" und TX ist immer ein Ausgang
"Transmitter"
Du hast nur die Optokoppler Ein-Ausgänge vertauscht. Also TX auf die
Diode im Optokoppler und RX an den Transistor.
@Hubert
So hätte ich das auch gedacht aber im Datenblatt des sn65 230 steht R
receiver output und im Datenblatt des 6250 das Gleiche Bild
RxD CAN receive data output;
Bist Du sicher das es bei den CAN-Transceivern genauso ist? Dann wären
die Datenblätter von Infinion und TI beide flasch ...
Datasheet TI: R ist Ausgang vom Receiver. RxD vom Controller ist Eingang
von dessen Receiver. Ausgang an Eingang passt. Ausgang an Ausgang passt
indes nicht.
Die Transceiver an den Controllern passen und funktionieren auch.
Alles, was streikt sind die aneinandergekoppelten Transceiver, aber die
haben keinen Controller drin. Es geht nur darum das Signal galvanisch
getrennt von einem CAN-Netzwerk zum nächsten zu übertragen.
@ cerberus
Hab mir das Datenblatt angesehen, deine Version stimmt, das ist das
erste mal das ich so was sehe, RXD ist Ausgang, naja sehr gewagte
Ansicht.
Ok, ich hatte das für eine galvanische getrennte Kopplung von Controller
und Tranceiver gehalten. Sorry. Soll wohl ein CAN Repeater sein.
Aber eine dumme Frage hab ich schon noch: Wie kommt die Schaltung jemals
wieder aus dem dominanten Zustand raus? Dieser Zustand scheint mir
nämlich ausgesprochen stabil zu sein.
<< Aber eine dumme Frage hab ich schon noch: Wie kommt die Schaltung
jemals
wieder aus dem dominanten Zustand raus? >>
Das ist möglicher Weise der Fehler weil ich keine Ahnung habe, was DU
damit meinst. Klar, das Signal im Ruhezustand ist 0 und damit für den
CAN-Bus dominant, aber ich kann es ja schlecht dauzerhaft auf 1 ziehen,
oder?
An den funktionierenden CAN-Transceivern, die an den uCs hängen, ist es
im Ruhezustand meiner Meinung nach auch 0 oder ich habe Mist gemessen?
Keine Ahnung. Wie schlägst Du vor die Schaltung zu verändern um das
Problem zu lösen? Es müßte ja auf beiden Seiten des Repeaters geändert
werden.
Transmitter: Rezessiv: CANL,CANH offen. Abschluss zieht bei auf gleichen
Pegel, egal welchen. Dominant: CANL=0, CANH=+V.
Receiver: Ab einer Mindestdifferenz zwischen CANH und CANL wird die
Leitung als dominant erkannt.
Bei dir heisst das: Wird eine Seite dominant, wird dies auf die andere
Seite übertragen. Soweit ok. Nur ist das ja symmetrisch, da ist kein
Gedächtnis drin wer als erstes kam. Folglich wird der Zustand "dominant"
auch wieder zurück übertragen. Wenn der ursprüngliche Transmitter jetzt
abschaltet, ändert sich nichts mehr, die Leitung bleibt dauerhaft
dominant und sämtliche Nodes erkennen über kurz oder lang einen
Busfehler und schalten ab.
Es gibt kommerziell CAN Repeater, bestimmt auch welche mit galvanischer
Trennung. Aber wie die arbeiten weiss ich nicht.
wenn man ein bisschen drüber nachdenkt ist es ganz logisch. Es fehlt der
Controller, der im Hintergrund prüft ob die 0 auch wirklich von ihm kam
oder nicht ...
Mist!
Also als Alternative fällt mir jetzt nur ein zwei kleine CAN - uCs
miteinander zu verheiraten. Das ist natürlich viel Größer, als ich es
haben wollte.
Hat jemand eine bessere Idee?
hatte oben nicht richtig gelesen, das Du einen Repeater brauchst. Schau
Dir mal den AMIS-42700 von AMI-Semiconductor an. Der ist zwar nicht
galvanisch getrennt, aber alles in einem Baustein. Man kann damit auch
CAN-BUS Extender aufbauen. Im Prinzip ist das ein Dual-CAN Transceiver.
http://www.amis.com/products/transceivers/amis_42700.html
der sieht ja schon nicht schlecht aus, aber...
wo bekomme ich den her? Sergor muss ihn anfragen, Reichelt und Spoerle
Fehlanzeige...
Ich habe schon mal bei AMI nach einem Muster gefragt, aber da kam nicht
mal eine Antwort...