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
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.
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
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!
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.
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
> 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.
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.
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)
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?
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.
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!
Eventuell analoge Multiplexer mit geringem Ron? Die sind aber meist nicht so robust wie CAN-Transceiver ... LG, Sebastian
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.
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
Probier doch mal sowas aus: https://eckstein-shop.de/5V2F220V8ChannelRelayShieldControlinterfaceUSB8KanalUSBRelaisModul?googlede=1&gclid=EAIaIQobChMIlpPjupbz-AIVwZBoCR1HIA54EAQYAiABEgK-9_D_BwE
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
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
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.
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.
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.
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.
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).
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
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.
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.
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.
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.
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?
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.
Du willst also ein Crossbarswitch bauen? https://www.google.com/search?q=crossbar+switch&rlz=1C1CHBF_enDE886DE886&tbm=isch&source=iu&ictx=1&vet=1&fir=PGvB0oqPuyzNGM%252CcApjS3yuhe3rAM%252C_%253BRYCFF1IsmhoJoM%252CLN6hMBE7VyDK9M%252C_%253BS8-D3UTFSRvEzM%252ChcVx6Yr4N61IeM%252C_%253B3pRNcVrJ4swq4M%252ChXthLdR3a6JagM%252C_%253BKeZPeZ0hMzjJhM%252CpsfTVr6pAQzLNM%252C_%253B0jZN3DGcCv2liM%252C9G_eLXq1HtBPJM%252C_&usg=AI4_-kT4pyPvqUUbNQNSHLDCFfYIVyMoDw&sa=X&ved=2ahUKEwjkrZXO9_P4AhWEs6QKHWJMDiwQ_h16BAhLEAE#imgrc=3pRNcVrJ4swq4M Ich empfehle Dir ein paar Reedrelais zunehmen, anstatt CMOS Schalter o. Analogschalter. Reedrelais gibt es als verschiedene Varianten (2x Schliesser, 2x Öffner, 1x Schliesser, 1x Wechsler) https://www.reichelt.de/reedrelais-12v-1-schliesser-mit-diode-1a-dip-7212-d-12v-p27652.html?PROVID=2788&gclid=CjwKCAjwt7SWBhAnEiwAx8ZLagjYu_mbiH67VWb5lKmp1lgejjDx65Co_wgAvZRk4AE_EXDqnFqomhoCRw8QAvD_BwE
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
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.
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
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
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
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.
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
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.
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
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.
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
Clemens S. schrieb: > Da Null dominant ist muss er wissen, woher das signal kommt. Hatte ich nicht bedacht. Asche auf mein Haupt. Uwe
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.
Uwe B. schrieb: > CAN ist immer Multi-Master. > Du verwechselst das möglicherweise mit einem RS485-Bus. Stimmt, hatte gerade einen Aussetzer.
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
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
Clemens S. schrieb: > Der hier? - mit deinen Stichworten gegoogelt. Ja, genau. Sorry, den Link vergessen :-( Uwe
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.
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?
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.