mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN Datenübetragung über LWL


Autor: André Wippich (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe folgendes Problem:
Ich habe hier ein CAN-Bus System (High Speed), dass auch wunderbar
funktioniert. Ich möchte da noch weitere Teilnehmer anschließen, die
sich aber relativ weit entfernt befinden. Ich kann den CAN Bus nicht
einfach mit Kupferleitungen verlängern, sondern muss dafür
Lichtwellenleiter nehmen, da ich sonst fette Störungen auf dem Bus
habe... Die Datenübertragung muss bidirektional sein. Ich möchte also
quasi enfach einen Teil der CAN-Bus Strecke durch LWLs ersetzen.

CAN <-Transeiver-> RxTx <-> LWL <-> RxTx <-Transceiver-> CAN

Meine erste Überlegung dazu war, einfach zwei CAN-zu-RxTx Transceiver
(z.b. TJA1040) zu nehmen und deren RxTx Aus- bzw. Eingänge über LWLs zu
verbinden. Schonmal vorweg: Es funktioniert so nicht - ein Bekannter hat
das schon getestet. Wenn ich theoretisch am "linken" CAN Bus eine
Botschaft habe, würde der linke Transceiver sie lesen und auf den Rxd
Ausgang legen. Am Txd Eingang des "rechten" Transceivers würde das
Signal gelesen und auf den "rechten" CAN Bus geschrieben. Klingt
bisher ja ganz gut. Gleichzeitig liest der rechte Transceiver das
Signal auch wieder ein und legt es auf seinen Rxd Ausgang und der linke
Transceiver schreibt es wiederrum auf den linken CAN Bus. Das Problem
bei der Geschichte ist, dass es aufgrund der Laufzeiten zu zeitlichen
Versetzungen der Signale kommt und sich die Signale dadurch überlappen.
Ich hoffe das ist aus dem angehängten Bild einigermaßen zu erkennen.

Ich habe schon mit einer Unterdrückungsschaltung probiert, die den Txd
Eingang des Transceivers sperrt, wenn ein Signal über den Rxd Ausgang
gesendet wird. Das funktionert auch relativ gut, nur gibt es bei der
Übertragung von High Speed Prioritätsnachrichten Probleme... Außerdem
ist die Sache mit der Unterdrückung meiner Meinung nach auch nicht das
Gelbe vom Ei...

Ich überlege jetzt, ob die ganze Geschichte evtl mit Mikrocontollern
realisierbar ist. Hat da schon irgendjemand Erfahrungen mit gemacht
und/oder kann mir vielleicht Tips, Ratschläge oder Hinweise geben,
damit ich weiterkomme?

Danke schonmal!

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der CAN-Bus ist bidirektional, läßt sich also nur schwer optisch
übertragen.

Deshalb ist der übliche Weg, daß jeder Teilnehmer zwischen
CAN-Controller und Transceiver 2 schnelle Optokoppler (HCPL0710) hat.
d.h. der Bus ist von der übrigen Schaltung galvanisch getrennt.


Peter

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab für den CAN-Bus Leitungslängen von 6,4 km gelesen? Ist das
falsch, oder ist der Weg, den Du überbrücken willst länger?
tex

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das fragte ich mich auch gerade ...

> Ich kann den CAN Bus nicht einfach mit Kupferleitungen verlängern,
> sondern muss dafür Lichtwellenleiter nehmen, da ich sonst fette
> Störungen auf dem Bus habe...

Naja, das tolle am CAN-Bus ist ja gerade, dass er differentiell und
somit sehr störsicher ist. Bei 10kbit/s kommt man auf über 6km
Leitungslänge. Reicht das immer noch nicht?

Autor: André Wippich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne reicht leider nicht. Ich muss erstens mit 500KBit/s übertragen und
zweitens verläuft die CAN-Leitung durch eine abgeschirmte EMV-Halle, in
der für Tests Störfelder erzeugt werden... Die Felder sind stark genug,
um einen Menschen zu töten, wenn er sich während des Tests in der Halle
aufhalten würde. Die Übertragung muss wirklich über LWLs erfolgen...

Ich wollte eigentlich meine Studienarbeit darüber schreiben, aber
natürlich nur, wenn das ganze auch machbar ist - sonst würde ich ja
recht blöde dastehen :-) Hab den Vorteil, dass ich gerade ein
vorgezogenes Praxissemester bei der Firma mache, wo ich auch die
Studienarbeit schreiben könnte, so dass ich hier schon ein wenig
rumprobieren kann.

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, wenn es LWL sein muss, dann ist die Zweidrahtübertragung vieleicht
nicht die beste Idee. Sie ist ja eben speziell für die Übertragung über
2 Drähte konzipiert. Wieviel Teilnehmer hast Du? Ich habe mal etwas
ähnliches gebaut und den UART-Port genommen. Ich hatte aber mehr als 2
Teilnehmer, also war jeder Teilnehmer immer auch die Relaisstation für
den Nachfolgenden und das ganze System war unterbrochen, wenn ein
Teilnehmer ausstieg, aber das ist sowieso ein generelles Problem von
LWL.

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich gibt es Lösungen für den CAN, auf denen optisch übertragen
wird, z.B.
http://www.bb-elec.com/product.asp?sku=CANFB

Interessant speziell für Dich auch:
http://www.ccontrols.com/pdf/extendingcan.pdf

Damit sollte das machbar sein.

Autor: André Wippich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tex:
Ich muss leider zwei bestehende CAN-Systeme miteinander verbinden. Ich
habe keine Möglichkeit die CAN-Teilnehmer zu verändern sondern kann nur
auf die Übertragungsstrecke einfluss nehmen.

@Joachim:
Danke! Werde mir die PDF gleich mal zu Gemüte ziehen. Das die
Übertragung möglich ist, habe ich auch schon gesehen. Die Übertragnung
vom ersten Link schafft nur 250KBit/s und eine Box kostet 190$. Bin
schon früher auf solche Fertiglösungen gestoßen, aber die wolle dafür
ein Schweingeld haben. Außerdem möchte die Firma bei der ich die
Studienarbeit machen möchte das lieber selbst entwickelt haben. Hinzu
kommt, dass es ja meine Studienarbeit ist. Gibt nen recht dünnen
Bericht ab, wenn ich nur den Link und die Rechnung beilege ggg

Naja, Scherz beiseite. Habe mir jetzt eine Übertragung überlegt, bin
mir aber noch nicht sicher ob das wiederum funzt:

Wenn ich die beiden CAN-Systeme über Transceiver und CAN-Controller mit
Mikrocontrollern verbinde und die UART-Schnittstellen der beiden µC über
LWLs verbinde, dann wäre doch folgende Übertragung möglich: Eine
Botschaft x erreicht den ersten CAN-Controller. Der gibt ihn an den
ersten Mikrocontroller weiter, welcher die Botschaft in RxTx-Pakete
umwandelt und mit 1MBit/s über die LWLs zum zweiten µC sendet. Der
empfängt die Daten, wandelt sie wieder in eine vollständige
CAN-Botschaft um und übergibt sie dem zweiten CAN-Controller, der sie
auf den zweiten CAN-Bus schreibt. Und das ganze natürlich auch
umgekehrt.

Meint Ihr das klappt so oder seht Ihr offensichtliche Schwächen, die
mir bisher entgangen sind?

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab keine Ahnung ob es funktioniert, aber ich wüßte keinen Grund,
warum es nicht funktionieren sollte.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.