CAN Switch / Relais ?

OP #7124144
Lesenswert?

Hallo zusammen,

ich plane demnächst mehrere CAN Verbindungen (jeweils CAN_HIGH und 
CAN_LOW) miteinander zu verschalten. Dabei sollen je nach Zustand des 
Systems bestimmte Verbindungen geschalten bzw nicht geschalten werden.
Es gibt also beispielsweise eine Black Box mit 6 CAN-Eingängen und 6 
CAN-Ausgängen, welche nach belieben miteinander verschaltet werden 
sollen (evtl auch noch eine 12V Versorgungsspannung).
Gesteuert soll das ganze wahrscheinlich über einen Arduino werden, 
welcher über eine noch nicht festgelegte graphische Oberfläche 
angesprochen werden soll. Im Endeffekt soll die Logik also erkennen 
welcher Schaltzustand gefordert ist und die entsprechenden CAN 
Verbindungen schalten.
Das ganze soll auch nicht im laufenden Betrieb umgeschalten werden, da 
es sonst natürlich Probleme mit dem CAN-Protokoll geben wird. Es wird 
ausschließlich zu Beginn, also vor der Übertragung, ein Schaltzustand 
eingestellt und gehalten.

Es gibt natürlich die Möglichkeit einen Haufen von Relais zu verbauen um 
die gewünschten Schaltzustände zu erreichen und diese jeweils mit dem 
Arduino zu schalten, aber ich habe mich gefragt, ob es da nicht noch 
etwas geschickteres und eleganteres bereits auf dem Markt zu finden 
gibt.

Hat da jemand einen Vorschlag oder schonmal etwas ähnliches verbaut?

viele Grüße
Moderator (Firma: Titel) Persönliche Seite #7124170
Lesenswert?

Max M. schrieb:
> geschalten bzw nicht geschalten
Korrekt wäre: "geschaltet bzw. nicht geschaltet"

Denn sonst müsste es ja auch statt
> miteinander verschaltet werden sollen
"miteinander verschalten werden sollen" heißen...

> Das ganze soll auch nicht im laufenden Betrieb umgeschalten werden, da
> es sonst natürlich Probleme mit dem CAN-Protokoll geben wird.
In diesem logischen Winkelzug ist ein Kurzschluss.

> Es wird  ausschließlich zu Beginn, also vor der Übertragung, ein
> Schaltzustand eingestellt und gehalten.
Dir ist aber schon klar, dass CAN ein Multimasterbus ist, wo ohne 
weiteres irgendwann irgendein Teilnehmer einfach mal loslegen kann.

> Es gibt natürlich die Möglichkeit einen Haufen von Relais zu verbauen um
> die gewünschten Schaltzustände zu erreichen und diese jeweils mit dem
> Arduino zu schalten, aber ich habe mich gefragt, ob es da nicht noch
> etwas geschickteres und eleganteres bereits auf dem Markt zu finden gibt.
Nein, es gibt da nichts Geschickteres, weil die Physik, die dort auf dem 
CAN-Bus läuft, eben nicht simple CMOS-Logik ist, sondern das ist ein 
spezieller Bus mit spezieller Teminierung und definierten Treibern. Am 
einfachsten ist dieses Problem mit einer 6x6 Matrix mit 36 Relais zu 
lösen.
Beitrag #7124176 wurde von einem Moderator gelöscht.
OP #7124178
Lesenswert?

Ich bin mir der Physik des CAN Busses vollkommen bewusst und habe 
deshalb geschrieben, dass der Schaltprozess vor der Übertragung 
geschehen muss und auch soll. Natürlich wäre es Quatsch ein bereits 
bestehendes Arbitration-Schema hardwaretechnisch abzuändern.
Es soll in meinem Fall aber eine physikalische Verbindung von 2 
unterschiedlichen Systemen vorgenommen werden und da ist es aus meiner 
Sicht egal ob es CAN oder nur ein Kupfer Kabel ist, was miteinander 
verschaltet wird, da keine Übertragung läuft.

Deshalb frage ich mich, ob ich nicht einfach einen gewöhnlichen und 
schon fertigen Switch benutzen kann anstatt so viele Relais zu verbauen.
#7124184
Lesenswert?

Also das einfachste System, sowas zu machen, ist, die unsinnigen Relais 
wegzulassen und die Teilnehmer immer am Bus zu lassen. Dafür ist er 
gebaut. Man kann auch während des Betriebs einzelne Teilnehmer zu- oder 
abstecken. Falls ein Telegramm beschädigt wird, gibt es ja die 
automatische Wiederholung. Ein weiteres Problem ist die Terminierung bei 
sich ändernden Teilnehmern. Außerdem kann sich die Topologie ungüngtig 
ändern, denn CAN sollte ja immer ein Strang sein und nur kurze 
Abzweigungen haben. Terminierung am Anfang und Ende des Stranges.
Für mich hat die Umschaltmatrix keinen Sinn!
#7124199
Lesenswert?

Max M. schrieb:

> Deshalb frage ich mich, ob ich nicht einfach einen gewöhnlichen und
> schon fertigen Switch benutzen kann anstatt so viele Relais zu verbauen.

Was für einen Switch? Ethernet? Nein, das ist keine Schaltmatrix, 
sondern ein Router auf Paketebene.

So etwas könntest Du auch bauen, aber eben nicht mit Arduino. Du nimmst 
6 CAN-Interfaces, und dann baust Du Dir ein CAN-Gateway, das 
konfigurierbar Pakete von einem Bus auf andere Busse weiterleitet. Geht, 
kann man machen, und wird auch gemacht. Das beeinflusst natürlich das 
Timing (das Weiterleiten geht natürlich nicht sofort), aber Du hast dann 
keine Probleme mehr mit der Physik, und die verschiedenen Busse können 
auch verschiedene Geschwindigkeiten, Timings und Transceiver benutzen.

Dafür solltest Du dann auch keine SPI-CAN Controller nehmen, sondern 
z.B. SJA1000T mit Prozessorbus, um die Latenzen gering zu halten. Oder 
eine FPGA-Implementation.

fchk
OP #7124204
Lesenswert?

> Was für einen Switch? Ethernet? Nein, das ist keine Schaltmatrix,
> sondern ein Router auf Paketebene.
>
> So etwas könntest Du auch bauen, aber eben nicht mit Arduino. Du nimmst
> 6 CAN-Interfaces, und dann baust Du Dir ein CAN-Gateway, das
> konfigurierbar Pakete von einem Bus auf andere Busse weiterleitet. Geht,
> kann man machen, und wird auch gemacht. Das beeinflusst natürlich das
> Timing (das Weiterleiten geht natürlich nicht sofort), aber Du hast dann
> keine Probleme mehr mit der Physik, und die verschiedenen Busse können
> auch verschiedene Geschwindigkeiten, Timings und Transceiver benutzen.

Ließt den niemand genau was ich schreibe: es wird ausdrücklich NICHT im 
Betrieb geschaltet, wodurch es zu keinerlei Beeinflussungen auf Pakete 
Ebene kommen wird. Man kann sich das CAN also wegdenken und durch Kupfer 
Leitungen  ersetzten.
Gast #7124219
Lesenswert?

Max M. schrieb:
> Wie gesagt, du musst mir nicht erklären, wie ein CAN Bus funktioniert,
> das ist mir bis ins kleineste Detail bewusst.

Sicher?

So eine Matrix ist nicht trivial, du kannst ja nicht einfach die zwei 
Busse verbinden und hoffen das es dann geht.
Dabei muss die Terminierung, die Buslänge und die dabei fast 
zwangsläufig entstehenden Stichleitungen beachtet werden.

Dann solltest du auch wissen, das jedes Telegramm mit einem "ACK" des 
Empfängers beantwortet werden muss. Das ist auch die Ursache für die 
Geschwindigkeitsabhängige Maximallänge des Busses.
Damit fallen sehr viele "inteligente" Verbindungsmöglichkeiten weg, oder 
aber sie wirken durch die Laufzeit wie sehr viele Meter Buslänge.
Möglich ist das sicherlich, aber dagegen ist die Variante mit den Relais 
deutlich einfacher.
#7124249
Lesenswert?

Lothar M. schrieb:
> Max M. schrieb:
>> geschalten bzw nicht geschalten
> Korrekt wäre: "geschaltet bzw. nicht geschaltet"

@Lothar

Es gibt Regionen in D, in denen das Wort "schalten" genauso konjugiert 
wird wie das Wort "halten". Ich habe mich zwar auch erst dran gewöhnen 
dürfen, finde es aber viel logischer, als wenn die beiden Wörter 
unterschiedlich konjugiert werden.

Mit freundlichem Gruß
Klaus (der soundsovielte)
Gast #7124299
Lesenswert?

Lothar M. schrieb:
>> Es gibt natürlich die Möglichkeit einen Haufen von Relais zu verbauen um
>> die gewünschten Schaltzustände zu erreichen und diese jeweils mit dem
>> Arduino zu schalten, aber ich habe mich gefragt, ob es da nicht noch
>> etwas geschickteres und eleganteres bereits auf dem Markt zu finden gibt.
> Nein, es gibt da nichts Geschickteres, weil die Physik, die dort auf dem
> CAN-Bus läuft, eben nicht simple CMOS-Logik ist, sondern das ist ein
> spezieller Bus mit spezieller Teminierung und definierten Treibern. Am
> einfachsten ist dieses Problem mit einer 6x6 Matrix mit 36 Relais zu
> lösen.

Klingt "irgendwie" nach Vermittlungsstelle...

Einsparungen erkauft man sich mit verminderter Universialität. Bei 
TK-Anlagen spricht man von "Innenwegen".

Wenn dir max 2 Busse reichen, kommst mit 2*6 Relais aus.
Gast #7124346
Lesenswert?

Hallo Max,
Manchmal fehlt für spezielle Anwendungen einfach eine kurze und 
einleuchtende Beschreibung, sodass mal sich das besser vorstellen kann. 
Jeder hier liest auch aus einem gewissen Eigeninteresse mit.


Man kann durchaus digitale I/O Module dafür verwenden.
Worüber sich die Herren hier aufregen, ist das Unverständnis über die 
nicht verständliche Sinnhaftigkeit deines Vorhabens.

Jo
Gast #7124369
Lesenswert?

Max M. schrieb:
> Wie gesagt, du musst mir nicht erklären, wie ein CAN Bus funktioniert,
> das ist mir bis ins kleineste Detail bewusst.

Offenbar nicht, sonst würdest du hier keine Sonderlösung suchen sondern 
was fertiges nehmen oder was gängiges bauen. Wenn es nichts fertiges 
gibt, dann stellt man sich zuerst die Frage warum und die hat zwei 
Antworten:
1. Ich bin auf dem Holzweg, der Rest der Welt macht es anders.
2. Ich habe die geilste Idee seit der Erfinfung des Autos, ich mach das 
jetzt so, definiere damit den Standard und alle müssen mir Lizenzgebüren 
zahlen.

Beispiel1: Du hast 20 Automotive Batterien, alle senden dir ihre Daten 
auf den gleichen IDs (die SW bei allen ist identisch). Du willst aber 
die Daten Batterie-fein haben, was aber an einem CAN-BUS nicht geht, da 
ja jede Batterie dir ihre Spannung auf IDxx mitteilen will --> Crash bzw 
wenn was durchkommt, dann weißt du nicht welche Batterie dir das 
gesendet hat.

Jetzt kommst du auf die grandiose Idee, einen Multiplexer zu bauen. 
Damit begehst du den ersten Fehler. Weil du damit die String-Topologie 
verlässt und zum Stern übergehst --> schlecht.

Ich würde mir 20 kleine µCs besorgen im Idealfall mit 2 CANs an Bord und 
würde mit CAN 1 die Punkt zu Punkt Verbindung mit meiner Autobatterie 
machen und mit CAN 2 die Daten mit ID + Offset. Weitergeben an höhere 
Ebene. So weißt du wer dir was sendet, bleibst im String, sparst dir das 
klägliche Schalten mit der Matrix und bist fertig. Das sollte auch für 
deinen Hub klappen, nennt sich in aller Regel nach Gateway und wird 
tausendfach eingesetzt.

Oder beschreib dein Problem besser, sonst ist hier stochern im Nebel 
angesagt.

Für die Zukunft:
Du kommst hier mit einer Frage, willst einen Arduino nutzen und 
behauptest aggressiv das du CAN MAN schlechthin bist....das passt nicht 
zusammen. Aber wenn es ein Arduino sein muss, klemm dir deine 12 
Transciever dran und werde glücklich, aber da musst du viel Hirn in die 
Datenverarbeitung stecken, könnten ja mehrere Teilnehmer gleichzeitig 
ihren Datenmüll abgeben wollen und so groß sind die Eingangspuffer dann 
doch nicht ;). Rennt so ein Arduino eigentlich auch mit 200MHz? ;)

VG Paul
OP #7124453
Lesenswert?

Find es immer wieder lustig wie manche Helden Probleme künstlich in 
Fragestellungen hinein transferieren, die einfach nicht existieren. 
Frage lesen und auf die Frage Antwort, das reicht und ist erwünscht. 
Etwas komplett anderes vorschlagen bringt NIE etwas, da hier nur 
Bruchstücke vom Gesamtprojekt beschrieben werden, die den Rahmen dieses 
Forums deutlich überschreiten würden.
Ich habe eine einfache Frage gestellt und fast ausschließlich 
komplizierte Antworten auf eine ganze andere Fragestellung bekommen
(Firma: Torrox.de) #7124462
Lesenswert?

Paul schrieb:

> Oder beschreib dein Problem besser, sonst ist hier stochern im Nebel
> angesagt.


Hat er doch: Er 2 x 6 CAN Busse und möchte die beliebig untereinander 
verbinden. Änderungen der Verbindungen sollen nicht im laufenden 
Betrieb passieren. Eine mögliche Lösung wären Relais.

Frage: Geht es auch einfacher (ohne die vielen, großen und teuren 
Relais.
Gast #7124467
Lesenswert?

Max M. schrieb:
> Ich habe eine einfache Frage gestellt

Nein, hast du nicht. Du hast ein unausgereiftes Lösungskonzept zur 
Vervollständigung vorgelegt.

Ohne die eigentliche Aufgabe zu kennen, kann dir das niemand vernünftig 
vervollständigen.

> Ich habe eine einfache Frage gestellt und fast ausschließlich
> komplizierte Antworten auf eine ganze andere Fragestellung bekommen

Offenbar hast du doch deutlich weniger Ahnung vom Fach, als behauptet. 
Sonst würden dir die Antworten nicht "kompliziert" erscheinen.
(Firma: Torrox.de) #7124483
Lesenswert?

Stefan ⛄ F. schrieb:
> Torsten R. schrieb:
>> Geht es auch einfacher (ohne die vielen, großen und teuren Relais.
>
> Alles, was die Relais ersetzen könnte, wäre noch aufwändiger und vor
> allem teurer. Insofern ist die Frage durchaus berechtigt, ob so eine
> Schaltmatrix hier überhaupt angebracht ist.

Naja, ein paar Analog-Schalter wären schon deutlich günstiger.
OP #7124698
Lesenswert?

Torsten R. schrieb:
> Paul schrieb:
>
>> Oder beschreib dein Problem besser, sonst ist hier stochern im Nebel
>> angesagt.
>
> Hat er doch: Er 2 x 6 CAN Busse und möchte die beliebig untereinander
> verbinden. Änderungen der Verbindungen sollen nicht im laufenden Betrieb
> passieren. Eine mögliche Lösung wären Relais.
> Frage: Geht es auch einfacher (ohne die vielen, großen und teuren
> Relais.

Genau so sieht es aus. Aber sich in Foren aufzuspielen ist deutlich 
cooler als einfach mal auf die gestellte Frage so simpel wie möglich zu 
antworten. Da fangen manche erstmal Debatten über Rechtschreibung an … 
Naja hab mein Problem genau so gelöst wie ich es wollte und danke an die 
2-3 guten Antworten.
OP #7124754
Lesenswert?

Stefan ⛄ F. schrieb:
> Max M. schrieb:
>> Naja hab mein Problem genau so gelöst wie ich es wollte
>> und danke an die 2-3 guten Antworten.
>
> Der Fairness halber solltest du nun auch verraten, wie du es gelöst
> hast.

Hab quasi eine eigene kleine Lösung auf einem pcb erstellt, welches 
direkt in den arduino aufgesteckt wird. Ein paar MUX509 von TI und 
Anschlüsse für die CAN Leitungen, das war’s.
#7124787
Lesenswert?

Wenn das GND Potential innerhalb aller CAN-Teilnehmer relativ identisch 
ist (deshalb die Frage nach Labor/Prüffeld) kann man einfach alle CANs 
per N-Kanal MOSFETs schalten, allerdings in einer Back-to-Back 
Verschaltung, damit die Body-Diode nicht zur Wirkung kommt. Dabei wählt 
man eine relativ hohe Gate-Spannung von z.B. 18V (erzeugt per 
Hilfs-Step-Up). Das klappt hervorragend, allerdings kann man es nicht 
beliebig in unbekannten Terrain anbieten/verkaufen, wenn man die 
GND-Verschiebung und sonstige Einflüsse nicht kennt.
Die MOSFETs gibt es in sehr klein, auf jeden Fall kompakter als Relais.
Mit dieser Technik kann man auch Terminierungs-Widerstände schalten.
Gast #7124864
Lesenswert?

#7124908
Lesenswert?

Max M. schrieb:
> mit 6 CAN-Eingängen und 6 CAN-Ausgängen

Beeindruckend ...
Ich habe schon Maschinen mit z.T. mehreren CAN-Bussen mitentwickelt. 
Aber bei "Eingang" und "Ausgang" hört meine Vorstellungskraft auf. Also 
bei CAN bzw. Bus.

Sind es nun 6 oder 12 Busse, die aneinander gekoppelt werden sollen?

Soll immer ein Bus der "Eingangsseite" mit einem der 6 Busse auf der 
"Ausgangsseite" verbunden werden?
Oder soll einer der "E" Busse mit mehreren "A" Bussen verbunden werden 
können?
Oder mehrere "E" auch mit mehreren "A"?
Worin unterscheiden sich "E" und "A"?

Oder sind die selben gemeint? Also eine Auswahl der 6 Busse soll 
zusammengeschaltet werden, evtl. auch noch eine zweite und dritte, die 
jeweils mit der ersten und untereinander nicht zu tun haben? Abgesehen 
von irgendwelchen alleinstehenden Bussen (also nicht mit einem der 
anderen verbunden) kann es nur max. 3 gekoppelte Busse geben.

Und wenn es Busse bleiben sollen, müssen beide Enden jedes Busses in der 
Matrix landen.

Wenn dem so sein sollte:

Du benötigst also an jedem Bus ein 4 UM Relais, welches den 
angeschlossenen Bus entweder an beiden Enden terminiert oder auf die 
Matrix schaltet.

Dann benötigst Du 3 Matrix-interne Busse mit Terminierungen an beiden 
Enden.
Der 1. Bus benötigt 6x 4 UM Relais, der 2. 5 und der 3. 4.

Sind 21 4 UM Relais und 18 Terminierungswiderstände.

2 Relais lassen sich sparen, indem man den längsten Bus der Matrix 
direkt mit dem externen Bus verbindet, der nur an diesen Bus angekoppelt 
werden kann.

Also 19 4 UM Relais.


Gruß
Jobst
#7125236
Lesenswert?

Max M. schrieb:

> Es gibt also beispielsweise eine Black Box mit 6 CAN-Eingängen und 6
> CAN-Ausgängen, welche nach belieben miteinander verschaltet werden
> [...}
> Hat da jemand einen Vorschlag oder schonmal etwas ähnliches verbaut?

"crosspoint switch cmos" könnte dein Suchwort sein. Typische Anwendung 
ist Verteilung von Video- oder Audiosignalen.

Für jeden "Ein-" und "Ausgang" einen Transceiver vorsehen und dazwischen 
schalten sonst wird es schwierig mit Strom und Terminierung.

Uwe
Moderator (Firma: Titel) Persönliche Seite #7125254
Lesenswert?

Uwe B. schrieb:
> "crosspoint switch cmos" könnte dein Suchwort sein
Und immer auf den Gleichtaktbereich achten. Der ist bei gängigen 
CAN-Transceivern nämlich recht hoch. Deutlich höher auf jeden Fall als 
bei den üblichen CMOS-Schaltern, wo der Gleichtaktbereich meist an der 
Versorgungspannung aufhört.

Jobst M. schrieb:
> Worin unterscheiden sich "E" und "A"?
Das ist die eigentlich interessante Frage. Wenn ich die 12 CAN-Busse an 
E und A durchnummeriere und jeden mit jedem verbinden kann, dann gibt es 
keine Ein- und kein Ausgänge, sondern nur 12 Ports, die alle irgendwie 
untereinander verschaltet werden können.

Es könnte natürlich auch sein, dass die Aufgabe eine ganz andere ist und 
wir hier nur wegen der vom TO gesuchten "Lösung" wild auf dem 
Abstellgleis herumrangieren, statt das eigentliche Problem zu lösen.

Uwe B. schrieb:
> Für jeden "Ein-" und "Ausgang" einen Transceiver vorsehen und dazwischen
> schalten sonst wird es schwierig mit Strom und Terminierung.
Und wenn dann jeweils noch 2 Transceiver mitten im den verbundenen 
Bussen drin sitzen, dann wird es ggfs. spannend beim Timing...
Gast #7125282
Lesenswert?

Max M. schrieb:
> Hab quasi eine eigene kleine Lösung auf einem pcb erstellt, welches
> direkt in den arduino aufgesteckt wird. Ein paar MUX509 von TI und
> Anschlüsse für die CAN Leitungen, das war’s.

Von der Fragestellung früh am morgen (09:41) zur Lösung inklusive 
Bauteilauswahl und PCB am gleichen Tag? Du bist der King der Elektronik, 
da kann ja nichts mehr schief gehen ;).

Haben deine 6 CAN "Eingänge" und die 6 "Ausgänge" auch ESD-Schutzdioden 
bekommen oder ist das in der Arduino Welt nicht so "woke" :D.

VG Paul
#7125344
Lesenswert?

Also ich muss sagen, das der TO sich hier nicht unbedingt mit Ruhm 
bekleckert. Vielleicht wäre eine Blacklist für User ganz hilfreich, wo 
einfach jeder mal nachschauen kann ob sich eine Antwort auf eine Frage 
wirklich lohnt.

Zum Thema:
Wir haben in unserem Produkt intern bis zu 4 lines und 2 tranceiver, die 
aufgeschaltet werden. Diese Lines wiederrum werden über ADG5412 
Bausteine auf versch. Pins geschaltet, da nicht immer klar ist über 
welche 2 Pins die CAN Kommunikation schlussendlich läuft. So entsteht 
eine Matrix. Wäre ein Beispiel, wie man das lösen kann. Hat sich die 
letzten Jahre wunderbar bewährt im Automotive Sektor bei der 
Kommunikation mit verschiedensten Fahrzeugen über den CARB Stecker. Mit 
2 Tranceivern gehen folglich zwei CAN-Schnittstellen zur gleichen Zeit.
Wir nutzen zb BSS84DW zum Schalten von einer Abschlusswiderstandsmatrix.

Jo

PS:
Lines sind einfach nur als normale Leiterbahnen zu sehen.

PS II:
Stichleitungen werden auch gerne genutzt bei Tests in der Produktion.
Da werden die Lines einfach auf einander aufgeschaltet über die Muxer. 
Das Gerät ist also nicht ans FZG angeschlossen. Geht ebenfalls 
Problemlos, allerdings sind das eher einfache Tests, kein Benchmark 
erforderlich gewesen bisher.
OP #7125434
Lesenswert?

Joe J. schrieb:
> Also ich muss sagen, das der TO sich hier nicht unbedingt mit Ruhm
> bekleckert. Vielleicht wäre eine Blacklist für User ganz hilfreich, wo
> einfach jeder mal nachschauen kann ob sich eine Antwort auf eine Frage
> wirklich lohnt.
>
Es sollte dann genauso eine Blacklist für User geben, die egal welche 
Frage gestellt immer ihren Senf dazu geben müssen, ohne letztendlich die 
Frage kurz und knapp zu beatworten ;)

Schlussendlich hab ich es nicht viel anders als du gelöst, nur mit 
anderen analog Multiplexern. Viel weiter will ich dort jetzt auch nicht 
drauf ein gehen, da jedes Projekt seine eigenen Tücken und Anforderungen 
hat, was auch übrigens wieder ein Grund dafür ist, dass man Fragen und 
Antowrten soweit es geht versuchen sollte zu verallgemeinern, sodass 
anderen Usern auch geholfen sein wird.
#7125459
Lesenswert?

Stefan ⛄ F. schrieb:
> Uwe B. schrieb:
>> Für jeden "Ein-" und "Ausgang" einen Transceiver vorsehen
>
> Könnte schwierig werden, der müsste (bei Multi-Master) bidirektional
> arbeiten und die Richtung automatisch erkennen.

CAN ist immer Multi-Master. Der Transceiver (z.B. der Klassiker MCP2551) 
braucht die Richtung nicht zu wissen.
Du verwechselst das möglicherweise mit einem RS485-Bus.

Uwe
#7125504
Lesenswert?

Uwe B. schrieb:
> CAN ist immer Multi-Master. Der Transceiver (z.B. der Klassiker MCP2551)
> braucht die Richtung nicht zu wissen.

Da Null dominant ist muss er wissen, woher das signal kommt.

Beispiel:

Null wird erkannt. Und an den "Switch" weitergegeben. Alle anderen 
Transreceiver ziehen ihre Stichleitung auf Null.

Jetzt muss gewartet werden, bis die Null an der "sendenden" Leitung weg 
ist, da sonst alle Leitungen blockiert sind.

Das wird spannend, weil theoretisch jeder Teilnehmer zeitgleich eine 
Null senden kann, um bei der ID Nummer "mitzustimmen", um zu 
entscheiden, wer als nächstes senden darf.

Es reicht hier also nicht den Buszustand einfach mit einem Transreceiver 
auf einen anderen Bus zu spiegeln.

Passiv mit Transreceiver fällt mir da nichts ein. Relais oder eben 
analoge Multiplexer.

Sg
Gast #7125561
Lesenswert?

Max M. schrieb:
> dass man Fragen und
> Antowrten soweit es geht versuchen sollte zu verallgemeinern, sodass
> anderen Usern auch geholfen sein wird.

Den Weg halte ich für problematisch. Im Arduino Umfeld sieht man wozu 
das führt. Leute glauben, dass man sich alles mit generischen Modulen 
und Apps zusammen stöpseln kann. Wenn man dann mal darauf hinweist, das 
es in einem konkreten Fall nicht so einfach ist, wird man auch noch 
beschimpft, man wolle ja nur meckern anstatt zu helfen.
Persönliche Seite #7125766
Lesenswert?

Harald A. schrieb:
> Wenn das GND Potential innerhalb aller CAN-Teilnehmer relativ identisch
> ist (deshalb die Frage nach Labor/Prüffeld) kann man einfach alle CANs
> per N-Kanal MOSFETs schalten, allerdings in einer Back-to-Back
> Verschaltung, damit die Body-Diode nicht zur Wirkung kommt. Dabei wählt
> man eine relativ hohe Gate-Spannung von z.B. 18V (erzeugt per
> Hilfs-Step-Up). Das klappt hervorragend, allerdings kann man es nicht
> beliebig in unbekannten Terrain anbieten/verkaufen, wenn man die
> GND-Verschiebung und sonstige Einflüsse nicht kennt.
> Die MOSFETs gibt es in sehr klein, auf jeden Fall kompakter als Relais.
> Mit dieser Technik kann man auch Terminierungs-Widerstände schalten.

imho bisher bester Vorschlag.
Die Gates könnte man auch mit einem Isolated Photovoltaic MOSFET Driver 
ansteuern. Dann kann man beliebig Gleichtaktstörungen und spart die böse 
Gatekapazität am Bus.
#7126065
Lesenswert?

Tilo R. schrieb:
> imho bisher bester Vorschlag.
> Die Gates könnte man auch mit einem Isolated Photovoltaic MOSFET Driver
> ansteuern. Dann kann man beliebig Gleichtaktstörungen und spart die böse
> Gatekapazität am Bus.

Ich dachte schon, es interessiert mal wieder niemanden, nicht mal den 
TE. Das mit den Drivern finde ich gut, allerdings sind die ja meist 
aufgrund des eigentlichen Verwendungszwecks (Isolation) recht groß. Oder 
kennst Du kleine Ausführungen, die sozusagen nur funktionale Isolation 
bieten?
#7126316
Lesenswert?

viele bezweifeln die Sinnhaftigkeit, verschiedene Busse abwechselnd 
miteinander zu verbinden. Verrate doch mal was es genau werden soll.

Aber wenn man den Bus schon wo anderst draufschalten möchte, würde ich 
das an einem Ende kurz vor dem Terminierungswiderstand machen, so das 
beim Umschaltet per Relais der eine Widerstand vom Bus getrennt wird.
#7126332
Lesenswert?

Thomas O. schrieb:
> viele bezweifeln die Sinnhaftigkeit, verschiedene Busse abwechselnd
> miteinander zu verbinden. Verrate doch mal was es genau werden soll.

Spontan fallen mir KFZ-Diagnosegeräte ein, manche Hersteller haben auf 
dem 16poligen SAE J1962 Diagnosestecker weitere CAN Busse, Pin 1, 3, 8, 
9, 11, 12, 13 eignen sich dafür. Bei Renault liegt beispielsweise 
zusätzlich zum CAN auf 6 und 14 noch ein weiterer auf 12 und 13.

https://pinoutguide.com/CarElectronics/renault_obd2_diag_pinout.shtml

Spontan fällt mir auch ein Luxusfahrzeughersteller ein, der auf dem DLC 
bis zu 4 CAN Busse hat, auf die Schnelle habe ich allerdings keinen 
Nachweis gefunden um diese Aussage zu belegen, daher belasse ich es mit 
der Aussage, das es dies gibt.


Hier im Thread habe ich schon einiges gruseliges über CAN Busse gelesen, 
manchmal habe ich das Gefühl die Leute verwechseln CAN mit 
GBit-Ethernet. CAN ist auch in der normalen Ausführung sehr robust und 
fehlertolerant, solange der Bus nicht hundert Meter lang ist, ist das 
alles relativ unkritisch. Ich persönlich würde aber auch eher darauf 
setzen ein Gateway mit einem Controller und mehreren Transceivern zu 
bauen, ich denke aber auch dass das einfache schalten mit Relais kein 
Problem darstellt, wird schon seit 20 Jahren in Diagnosegeräten so 
gemacht, die bestehen oft zum Großteil aus Relais oder Analogschaltern. 
Einfach mal nach „Delphi DS150E Relay“ in die Google Bildersuche 
eingeben.
#7126408
Lesenswert?

Thomas O. schrieb:
> viele bezweifeln die Sinnhaftigkeit, verschiedene Busse
> abwechselnd
> miteinander zu verbinden.

Real existierendes Beispiel:
Ein Prüffeld in einer Firma beinhaltet x Steuergeräte und y Slaves, um z 
verschiedene Maschinen damit abbilden zu können, immer in anderen 
Konstellationen. Bevor Kommentare kommen: jaja, das bildet nicht die 
Hardware in 1:1 ab, man kann aber Software damit entwickeln und testen.
OP #7126753
Lesenswert?

Ok weil es anscheinend hier wirklich sehr viele genauer wissen wollen:
Sagen wir mal man hat 2 fast identische Systeme A und B, welche 2 
Zustände haben können.

Zustand 1: A und B sind gekoppelt und bilden ein Gesamtsystem
Zustand 2: A und B sind entkoppelt und bilden 2 unterschiedliche 
Systeme.

Im Zustand 1 sollen bestimmte und bekannte Teile aus A und bestimmte und 
bekannte Teile aus B zusammengeschaltet werden. Dazu muss alles was 
redundant ist weg.

Zb:
Node 1_A und Node 1_B sind verbunden in Zustand 2.
Jetzt soll aber Node 1_A mit Node 2_B verbunden werden und dafür muss 
Node 1_B weg.

Gelöst habe ich das ganze wie gesagt über eine kleine Platine mit 
diversen 1:2 Muxern. Es reicht ein kleiner uC, der lediglich zwischen 0 
und 1 alle Mixer gleichzeitig schaltet.  Wenn man alle CAN High Signale 
auf 1 legt und alle LOW auf 0, die zusammengehören sollen, reicht ein 
einfaches umschalten zwischen 0 und 1 um die gewünschten Zustände zu 
erreichen

So genauer kann und darf ich leider nicht auf die Aufgabe eingehen.

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