Forum: Mikrocontroller und Digitale Elektronik CAN Switch / Relais ?


von Max M. (sysadmin4444)


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

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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 vom Autor gelöscht.
von Max M. (sysadmin4444)


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.

: Bearbeitet durch User
von Helmut -. (dc3yc)


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!

von Max M. (sysadmin4444)


Lesenswert?

Wie gesagt, du musst mir nicht erklären, wie ein CAN Bus funktioniert, 
das ist mir bis ins kleineste Detail bewusst.
Meine Frage bezieht sich einzig und alleine auf eine einfache 
Umschalt-Box, welche man ohne Zeit rein zu stecken fertig kaufen kann.

von Frank K. (fchk)


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

von Max M. (sysadmin4444)


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.

von StefG (Gast)


Lesenswert?

Wie wärs mit 3.5mm Audio Buchsen und Patchkabeln?

von Prometheus (Gast)


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.

von Klaus S. (kseege)


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)

von H. (Gast)


Lesenswert?

Hallo Max,

ich hätte einen Vorschlag, bevor der hier zerrissen wird, folgende 
Frage: Ist das für einen Laboraufbau, Prüffeld oder für "freie 
Wildbahn"/Serie?

von Werner (Gast)


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.

von Helmut -. (dc3yc)


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.
> Meine Frage bezieht sich einzig und alleine auf eine einfache
> Umschalt-Box, welche man ohne Zeit rein zu stecken fertig kaufen kann.

Dann hast du den CAN-Bus nicht verstanden!

von Sebastian (Gast)


Lesenswert?

Eventuell analoge Multiplexer mit geringem Ron? Die sind aber meist 
nicht so robust wie CAN-Transceiver ...

LG, Sebastian

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

H. schrieb:
> ich hätte einen Vorschlag, bevor der hier zerrissen wird, folgende
> Frage: Ist das für einen Laboraufbau, Prüffeld oder für "freie
> Wildbahn"/Serie?

Ich lese hier mit, weil ich dafür auch eine Verwendung hätte. Um 
verschiedene Test-Aufbauten mit einem CAN-USB Adapter zu verbinden.

von jojo (Gast)


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

von jojo (Gast)


Lesenswert?

Will sagen: Beschreib doch mal dein Projekt ein bischen besser.

von jojo (Gast)


Lesenswert?


von Joe J. (j_955)


Lesenswert?


von Paul (Gast)


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

von Max M. (sysadmin4444)


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

: Bearbeitet durch User
von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


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.

von Stefan F. (Gast)


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.

von Stefan F. (Gast)


Lesenswert?

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.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


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.

von Stefan F. (Gast)


Lesenswert?

Torsten R. schrieb:
> Naja, ein paar Analog-Schalter wären schon deutlich günstiger.

Wenn man ungeeignete nimmt: ja

Hier sind aber welche nötig, die den erlaubten Spannungspegeln vom CAN 
Bus entsprechend und einen geringen Innenwiderstand haben (< 10 Ohm).

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Stefan ⛄ F. schrieb:

> Hier sind aber welche nötig, die den erlaubten Spannungspegeln vom CAN
> Bus entsprechend und einen geringen Innenwiderstand haben (< 10 Ohm).

Soetwas: 
https://www.ti.com/lit/ds/symlink/tmux6208.pdf?ts=1657631142685&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTMUX6208

von Stefan F. (Gast)


Lesenswert?

Torsten R. schrieb:
> Soetwas

Ja, an solche dachte ich. Ist mit 6,60€ sogar billiger als ich dachte, 
allerdings leider (wie fast alle ICs) nicht verfügbar.

von Max M. (sysadmin4444)


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.

von Stefan F. (Gast)


Lesenswert?

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.

von Max M. (sysadmin4444)


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.

von Stefan F. (Gast)


Lesenswert?

Max M. schrieb:
> Ein paar MUX509 von TI und
> Anschlüsse für die CAN Leitungen, das war’s.

Aber der hat 125 Ω Innenwiderstand. Wie sorgst du dafür, dass die 
Terminierung der Leitungen noch stimmt?

von Harald A. (embedded)


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.

von Thorben (Gast)


Lesenswert?


von Jobst M. (jobstens-de)


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

von Thorben (Gast)


Lesenswert?

Ach eine andere Idee wäre noch ein CAN-Gateway mit deinen Anforderungen 
zu programmieren. Welche Lösung (Relais oder Gateway) einfacher ist 
musst Du selber abwägen.

von Uwe B. (uwebre)


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

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

: Bearbeitet durch Moderator
von Paul (Gast)


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

von Stefan F. (Gast)


Lesenswert?

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.

von Joe J. (j_955)


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.

: Bearbeitet durch User
von Max M. (sysadmin4444)


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.

von Uwe B. (uwebre)


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

von Harald A. (embedded)


Lesenswert?

Uwe B. schrieb:
> 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.
Was meinst Du wohl, warum er das in Anführungsstriche gesetzt hat.

von Clemens S. (zoggl)


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

von Uwe B. (uwebre)


Lesenswert?

Clemens S. schrieb:

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

Hatte ich nicht bedacht. Asche auf mein Haupt.

Uwe

von Stefan F. (Gast)


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.

von Stefan F. (Gast)


Lesenswert?

Uwe B. schrieb:
> CAN ist immer Multi-Master.
> Du verwechselst das möglicherweise mit einem RS485-Bus.

Stimmt, hatte gerade einen Aussetzer.

von Uwe B. (uwebre)


Lesenswert?

Clemens S. schrieb:
> Passiv mit Transreceiver fällt mir da nichts ein. Relais oder eben
> analoge Multiplexer.

Hat mir keine Ruhe gelassen...
Hier eine Applikation für einen Repeater mit Transceivern und 
Arbitration Logik von TI.

Uwe

von Clemens S. (zoggl)


Lesenswert?

Uwe B. schrieb:
> Hier eine Applikation für einen Repeater mit Transceivern und
> Arbitration Logik von TI.

https://www.ti.com/tool/TIDA-01487

Der hier? - mit deinen Stichworten gegoogelt.

Danke. Kannte ich noch nicht.

Spannendes Design. Das auf 6 Kanäle aufzublasen sollte möglich sein.

Sg

von Uwe B. (uwebre)


Lesenswert?

Clemens S. schrieb:
> Der hier? - mit deinen Stichworten gegoogelt.

Ja, genau. Sorry, den Link vergessen :-(

Uwe

von Tilo R. (joey5337) Benutzerseite


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.

von Harald A. (embedded)


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?

von Thomas (kosmos)


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.

von Marc X. (marc_x)


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.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Harald A. schrieb:
> 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?
Leider nein. Und teuer bzw. aktuell schwer zu bekommen sind sie im 
Moment auch noch.

von Harald A. (embedded)


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.

von Max M. (sysadmin4444)


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.

von Peter D. (peda)


Lesenswert?

Thorben schrieb:
> Ich empfehle Dir ein paar Reedrelais zunehmen, anstatt CMOS Schalter o.
> Analogschalter.

Wozu Reedrelais, es reichen ganz normale Miniaturrelais, z.B.:
TE CONNECTIVITY: 6-1462039-0

https://de.farnell.com/te-connectivity/im06pns/signalrelais-dpdt-250vac-220vdc/dp/1770598?ost=1770598

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
Noch kein Account? Hier anmelden.