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?
Versuch mal RxD mit RxD und TxD mit TxD zu verbinden. Galvanische Trennung ist kein Nullmodem ;-).
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.
anbei mal ne Schaltung, die schon seit einiger Zeit im Einsatz ist.
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.
NB: Laut Datasheets von MCP2551, SN65HDV2xx und 82C25x sind damit 110-120 Nodes möglich. Nur der TDA1054 ist sparsamer.
<< 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...
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.