Funktionsweise CAN <-> LWL <-> CAN

#8017513
Lesenswert?

Hi,

es gibt von Peak System ein Gerät PCAN-LWL (Ankopplung für optische Übertragung von CAN- und CAN-FD-Daten). Mit dem kann man eine CAN-Verbindung über LWL betreiben: https://www.peak-system.com/PCAN-LWL.214.0.html .

Man schaltet 2 dieser Teile in eine bestehende CAN-Verbindung mit LWL dazwischen.

Wie funktioniert so eine Umsetzung technisch? Die Kommunikation geht ja in beide Richtungen, das ist dadurch nicht trivial. Ist das mit einem Mikrocontroller gelöst oder geht das auch ohne?

#8017520
Lesenswert?

Beim analogen Telefon nennt man das Gabelschaltung. Für digitale Signale kann man das auch nachbauen ohne Prozessor. Ist halt etwas Logik dahinter, aber geht schon. Das ist ähnlich einem CAN-Repeater oder einem optischen Isolator mit Optokopplern. Genaue Beschreibungen finden sich bei diversen Herstellern und im Wikipedia.

#8017541
Lesenswert?

Helmut -. schrieb:

Beim analogen Telefon nennt man das Gabelschaltung. Für digitale Signale kann man das auch nachbauen ohne Prozessor. Ist halt etwas Logik dahinter, aber geht schon.

Naja, ganz so einfach ist das nicht. Der schwierige Teil ist das enge Timing. Denn bei CAN musst Du die CRC prüfen und hast dann nur wenige Takte Zeit zu entscheiden ob Du ACK sendest oder nicht. Und ein gesendetes ACK muss dann im richtigen Moment auf dem Rest des gesamten Busses ankommen.

Weil das bei höheren Datenraten auch schon mit normalem, direkt verbundenem, CAN-FD schwer wird, haben die dieses ACK-Konzept beim Nachfolger CAN-XL rausgeworfen.

(Firma: TU Darmstadt) #8017542
Lesenswert?

CAN funktioniert mit einen dominanten ('0) und einen rezessiven('1') Signal und der Erkennung der Kanalbelegung wenn bei der Arbitrierung ein dominates Signal erkannt wird obwohl man selbst nur rezessiv "sendet". Das geht auch mit Licht, 'Licht an' ist dominant, Licht aus rezessive. Man darf aber nur mit solchen Baudraten senden, das die Erkennung noch innerhalb des Taktes erfolgen kann.

#8017555
Lesenswert?

Wenn man in das PCAN-LWL Benutzerhandbuch schaut bekommt man einige Hinweise zur Funktion, z.B. gibt es jeweils zwei CAN Transceiver (Low-/High-Speed, maximal 500 kBit/s bei High-Speed) von denen man einen auswählen muss und die Verbindung zwischen den beiden Modulen erfolgt durch zwei Lichtwellenleiter.

#8017558
Lesenswert?

Martin schrieb:

Wie funktioniert so eine Umsetzung technisch? Die Kommunikation geht ja in beide Richtungen, das ist dadurch nicht trivial.

Man muss nur die Bedienungsanleitung lesen:

https://www.peak-system.com/produktcd/Pdf/Deutsch/PCAN-LWL_UserMan_deu.pdf

Auf Seite 7 steht dann:

1
Ein PCAN-LWL-Modul hat zwei standardisierte ST-Steckverbinder für die
2
Lichtwellenleiter. Die Anschlüsse sind gesondert für das Senden und Empfangen von Lichtsignalen zuständig.
3
Die beiden Lichtwellenleiter der Duplexleitung sind an den Anschlüssen farblich gekennzeichnet (rot/schwarz). Verbinden Sie jeweils den LWL-Ausgang eines Moduls mit dem LWL-Eingang des anderen.

Also zwei Leitungen, eine für jede Richtung.

#8017562
Lesenswert?

Thomas F. schrieb:

Also zwei Leitungen, eine für jede Richtung.

Schon klar, dass man 2 Leitungen benötigt.

Aber wenn ich am Gerät 1 eine "0" sende, geht der CAN-Bus an Gerät 1 auf dominanten Pegel. Zeitverzögert auch auf CAN-Bus an Gerät 2. Das Ganze wird über den LWL Rückkanal zu CAN-Bus an Gerät 1 zeitverzögert zurückgegeben. Und dann hat man dauerhaft dominanten Pegel auf den CAN-Bussen (Selbsthaltung). Das Gerät 1 kann die "0" wegnehmen, aber der Pegel bleibt durch die "0" den Rückkanal erhalten. Zumindest so lange, bis der CAN-Transceiver seinen Timeout hat und den dominanten Pegel vom Bus trennt. Kann somit nicht funktionieren.

: Bearbeitet durch User
#8017581
Lesenswert?

Hier in diesem Artikel wurde das aufgebaut, leider ohne nähere Beschreibung der Hardware. https://www.spiedigitallibrary.org/conference-proceedings-of-spie/13699/136995G/CAN-bus-communication-over-optical-wireless/10.1117/12.3075349.full

Dort wird auch beschrieben, dass das ACK durch die Kette eine Herausforderung bleibt. Und dann gibt es noch das Problem mit dem dominanten Pegel, so wie in anderen Repeater-Konzepten auch.

Man könnte all diesen Probleme aus dem Weg gehen, in dem man auf beiden Seiten einen ganz normalen CAN-Knoten aufbaut und die Information via RX/TX (z.B. LAWICEL) seriell austauscht. Ja, ich weiß, ist in vielen Aspekten nicht das identische Verhalten (Remoteframes werden schwierig - wenn man es denn unbedingt braucht), wird aber für viele Anwendungen trotzdem reichen.

#8017583
Lesenswert?

Martin schrieb:

Könntest Du mir einen Tipp geben, mit welchen Begriffen ich genau suchen muss? Bisher bin ich selbst nicht weiter gekommen.

Mit "CAN repeater" hatte ich schon ein Stichwort gegeben. Hier ist mal ein konkreter Link: https://www.ems-wuensche.com/can-technology/can-repeater-inhibit-time/ Diese Inhibit time ist wichtig, damit man keinen dominanten Loop bekommt. Soo schwierig ist das nicht. Ich habe selber in den 90er Jahren, als wir mit der CAN-Steuerung unserer Geräte anfingen, so ein Ding designed. War ein kleines EPLD mit zwei Optokopplern und zwei CAN-Transceivern. Für LWL-Anschluss braucht man halt die optischen Interfaces und die Logik dazwischen. Viele Specs über CAN findest du bei der CiA (https://www.can-cia.org/news). Wir waren damals Gründungsmitglied und hatten viel mit Holger Zeltwanger zu tun.

#8017585
Lesenswert?

Helmut -. schrieb:

Viele Specs über CAN findest du bei der CiA (https://www.can-cia.org/news). Wir waren damals Gründungsmitglied und hatten viel mit Holger Zeltwanger zu tun.

Und Holger Zeltwanger verweist hier

https://www.can-cia.org/fileadmin/cia/documents/publications/cnlm/march_2019/19-1_p26_galvanic_isolated_canfd_repeater_reference_design_holger_zeltwanger_cia.pdf

auf das oben bereits verlinkte Design von TI.

#8017602
Lesenswert?

Dieter S. schrieb:

Helmut -. schrieb:

Viele Specs über CAN findest du bei der CiA (https://www.can-cia.org/news). Wir waren damals Gründungsmitglied und hatten viel mit Holger Zeltwanger zu tun.

Und Holger Zeltwanger verweist hier

https://www.can-cia.org/fileadmin/cia/documents/publications/cnlm/march_2019/19-1_p26_galvanic_isolated_canfd_repeater_reference_design_holger_zeltwanger_cia.pdf

auf das oben bereits verlinkte Design von TI.

Früher hatten wir gelernt, sich die Infos selber zu suchen. Dieses Vorgehen ist anscheinend heutzutage verloren gegangen, wenn man bei Eingabe von "CAN" und "Repeater" nichts passendes findet. CiA war halt damals ausser Steinbeis in Ravensburg der Nabel der (deutschen) CAN-Welt.

#8017847
Lesenswert?

Martin schrieb:

Schon klar, dass man 2 Leitungen benötigt.

So klar ist das überhaupt nicht. Du kannst eine Faser genauso im Duplexbetrieb nutzen, z.B. verschiedene Wellenlängen für die beiden Richtungen. Es ist eine wirtschaftliche Abwägung, ob eine zweite Faser oder der zusätzliche Aufwand für bedirektionalen Betrieb günstiger ist.

#8017863
Lesenswert?

Helmut -. schrieb:

Früher hatten wir gelernt, sich die Infos selber zu suchen. Dieses Vorgehen ist anscheinend heutzutage verloren gegangen, wenn man bei Eingabe von "CAN" und "Repeater" nichts passendes findet.

Ich habe schon gesucht, aber nicht die Kombination CAN + Repeater, sondern z.B. CAN + LWL bzw. CAN + Fiber. Und da bekommt man keine vernünftigen Treffer. Die Kunst ist, die passenden Suchbegriffe zu kennen. Auf die Idee "Repeater" zu verwenden, wäre ich nie gekommen.

#8048491
Lesenswert?

Hi,

ich habe nun eine Platine gemacht, die die Arbitrierungslogik beinhaltet. Wenn jeweils nur eine LWL-Leitung gesteckt ist, ist die Datenübertragung in beide Richtungen OK. Wenn man beide LWL-Leitungen gemeinsam gesteckt hat und noch nichts sendet, ist noch alles OK. Aber wenn ein Signal von einem CAN-Teilnehmer kommt, schwingt das System dauerhaft, auch wenn man den CAN-Teilnehmer trennt (es ist aktuell nur auf einer Seite einer dran). Oszibild des Schwingkreises anbei. Da gibt es irgendwo einen Kopplungszweig, der das Schwingen verursacht. Der CAN-Bus ist jeweils mit 120R abgeschlossen.

Die Übertragungsstrecke ist wie folgt:

CAN Transceiver 1 - Arbitrierungslogik - LWL Transceiver - 20 m LWL (separat für TxD und RxD) - LWL Transceiver - CAN Transceiver 2

TI hat in seinem Dokument separate ICs für die Arbitrierungslogik verwendet, ich habe die selben Gattertypen zu einem IC zusammengefasst. Könnte dadurch die unerwünschte Kopplung entstanden sein? Oder ist die Leitungsführung im Layout ungünstig, so dass die Rückkopplung entsteht?

Angehängte Dateien:
#8048503
Lesenswert?

Mir ist gerade was aufgefallen: TI hat in der Delay-Line im "realen" Schaltplan noch weitere Komponenten eingefügt, um die Verzögerungszeit zu erreichen. Dumm gelaufen, dass ich mir die Delaytime des 74HC04 nicht im Datenblatt angeschaut habe.

Aber ob das zu der Schwingung führt?

Angehängte Dateien:
: Bearbeitet durch User
#8048508
Lesenswert?

Martin schrieb:

Da gibt es irgendwo einen Kopplungszweig, der das Schwingen verursacht.

Das ist gewöhnlich so, ohne Kopplung würdest du nie eine Schwingung bekommen. Damit eine Kopplung zu einer Schwingung führt, muss immer auch die Phasenlage/Zeitpunkt stimmen. Querverbindungen zwischen den Zweigen gibt es ja.

Anhand eines Oszibildes des resultierenden Signals siehst du zwar die Schwingung, erkennst aber nicht, wo du eine Zeitbedingung verletzt. Dafür musst du tiefer rein gucken und mit den Worst-Case Daten für Flankentiming aus den Datenblättern vergleichen. Sonst kann es dir passieren, dass das System bei Temperaturerhöhung um 5°C wieder schwingt.

: Bearbeitet durch User
#8048530
Lesenswert?

Harald K. schrieb:

Thomas F. schrieb:

Also zwei Leitungen, eine für jede Richtung.

Das wäre nicht nötig, man kann natürlich LWL auch bidirektional nutzen, indem man auf unterschiedlichen Wellenlängen sendet. So machts auch der Glasfaseranschluss, über den manche ihr Internet bekommen.

Ja, prinzipiell schon, aber die Hardware ist nun für 2 LWL ausgelegt und wird diesbezüglich nicht geändert.

#8048575
Lesenswert?

Harald A. schrieb:

Die Zeitglieder sind entscheidend wichtig, aber das ist Dir ja auch selber klar geworden. Nachrüsten in der Form schwierig.

Wird man schon irgendwie reinflicken können. Gibt halt ein etwas Bastelarbeit.

Ob die fehlende Verzögerung die Ursache für das Schwingen ist? Die Logik setzt ja nur den Pegel auf High, wenn von beiden Seiten gesendet wird.

#8048598
Lesenswert?

Laut meiner Erfahrung mit > 10 Jahren CAN und Repeatern ist die Delayline ZWINGEND nötig! Und auch sollte man Tests machen, wie das Temperaturverhalten der Bauteile ist. Wir hatten das früher mit einem FPGA gelöst, bei dem man die Delayzeit programmieren konnte. So musste die Leiterplatte nicht geändert werden.

#8048601
Lesenswert?

Helmut -. schrieb:

Laut meiner Erfahrung mit > 10 Jahren CAN und Repeatern ist die Delayline ZWINGEND nötig! Und auch sollte man Tests machen, wie das Temperaturverhalten der Bauteile ist. Wir hatten das früher mit einem FPGA gelöst, bei dem man die Delayzeit programmieren konnte. So musste die Leiterplatte nicht geändert werden.

Dass man die Delayzeit benötigt ist mir klar. Aber kann es durch die zu kleine Zeit (weil ohne RC-Glied) zu dem Schwingen kommen? Ich vermute es gibt im System noch ein zweites Problem, dass das Schwingen verursacht.

#8048915
Lesenswert?

Ich weiß, per FPGA oder diskreter Logik ist das alles viel toller aber man könnte mal schauen, ob man das nicht mit einem ATTINY1616 hinbekommt. Der hat min. 2 Blöcke „programmable custom logic“, dazu viele Timer und sonstigen Kram. Programmierung über einen Pin, Spannung 2..5V, keine Außenbeschaltung. Also nicht als CAN-Komponente sondern auf reiner Bitebene das nachbilden, was diese Schaltung macht. Nur eben etwas abgesicherter. Bei 20MHz Takt dürfte das schnell genug sein für CAN. Hauptvorteile wären der sehr geringe Bauteileaufwand, Platz und die leichte Anpassbarkeit.

#8049048
Lesenswert?

Harald A. schrieb:

Ich weiß, per FPGA oder diskreter Logik ist das alles viel toller aber man könnte mal schauen, ob man das nicht mit einem ATTINY1616 hinbekommt.

Früher (TM) hat man die Flankenlage über Gatterlaufzeit oder einen kleinen Kondensator passend hingeschoben und sich vorher Gedanken gemacht, welche Zeit genau verletzt wird. Auch bei „programmable custom logic“ wird man nicht umhin kommen, sich genauer mit dem Timing zu beschäftigen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren