CAN-Bus "Bus Selektor"

Gast #5225325
Hallo Leute,

ich hab da ein Problem, das ich erst einmal beschreibe.

Ich habe eine 5V µC mit genau einem CAN-Controller Kanal. Dieser soll 
auf einem Bus alle 500ms "Heartbeats" erhalten (Baudrate ist 250 oder 
500k). Bleiben drei Signale in Folge aus, soll auf einen anderen 
Ersatz-Bus umgeschaltet werden. Ich brauchen den zweiten Bus also nur im 
Notfall (wir hatten häufiger Kabelbrüche durch unachtsame "Benutzer" - 
das möchte ich aber nicht weiter ausführen!).

Leider muss das ganze wegen geringer Masse des Systems und starken 
Vibrationen ohne Relays auskommen. Die Idee war von daher, einfache 
UND-Gatter zu benutzen wie im Anhang gezeigt. Leider befürchte ich, das 
jedoch mindestens der CAN_RX mir Probleme breiten wird.

Ich bin mir nicht sicher, ob ich die eingezeichneten Dioden wirklich 
brauch, oder ob Ausgänge von UND-Gattern aufeinander treiben dürfen, 
wenn diese unterschiedliche Zustände annehmen.

Hat jemand so etwas schon mal gemacht? Würde das so gehen?
Angehängte Dateien:
Gast #5225343
Konfus'ius schrieb:
> oder ob Ausgänge von UND-Gattern aufeinander treiben dürfen,
> wenn diese unterschiedliche Zustände annehmen.
Und was soll die Ausgabe sein, wenn einer 0 und einer 1 ausgibt? 0,5? 
Die Dioden sind notwendig, und außerdem auch ein Pull-Down-Widerstand. 
Sauberer geht es mit einem schlichten OR-Gatter, oder 2 Transistoren. 
Schau auch ggf. mal nach (Digital-)Multiplexern.

Alternativ gibt es auch viele Controller mit 2 CAN-Bussen, wie z.B. 
viele von den STM32.
Gast #5225344
Konfus'ius schrieb:
> Ich bin mir nicht sicher, ob ich die eingezeichneten Dioden wirklich
> brauch, oder ob Ausgänge von UND-Gattern aufeinander treiben dürfen,
> wenn diese unterschiedliche Zustände annehmen.
Nein, sie dürfen nicht gegeneinander treiben. Das erzeugt einen Pegel im 
undefinierten Bereich, das heißt der Empfangsmikrocontroller kann eine 0 
oder 1 sehen.

Das mit den Dioden könnte passen. Du kannst die Rx-Signale aber auch 
über ein zweites AND oder OR zusammenführen. Ob AND oder OR hängt von 
der Polarität im CAN-Tranceiver ab.
Gast #5225352
Peter schrieb:
> Du kannst die Rx-Signale aber auch
> über ein zweites AND oder OR zusammenführen. Ob AND oder OR hängt von
> der Polarität im CAN-Tranceiver ab.

Ah Stimmt, wenn ein "UND" Disabled ist, kommt ja eh nur das zweite 
durch...
Ich hab den Teil noch einmal neu gezeichnet ;)
Angehängte Dateien:
#5225355
Auf "Controller"-Seite ist der CAN Recessive Level "High". Um das Senden 
zu deaktivieren musst du den CAN Tx mit einem /Enable verodern. Ein UND, 
welches CAN Tx dauerhaft auf "Low" zieht, killt den Bus (wobei die 
meisten CAN-Transceiver den Sender bei Dominant-Pulsen nach einer 
gewissen Zeit abschalten).

Auf Rx-Seite sollte es so gehen:
CAN_Rx = (CAN_Rx1 OR /Enable1) AND (CAN_Rx2 OR /Enable2).

Denk daran, dass die Gatterlaufzeiten die maximal mögliche Buslänge 
reduzieren. Besser wäre wohl ein zweiter CAN-Controller, zur Not per 
SPI.
Gast #5225699
Clemens L. schrieb:
> Die RX-Logik ist ein Demultiplexer; den gibt es fertig als
> (SN)74LVC1G97.

Cool, eine super alternative zu meinem "Gattergrab"!

H.Joachim S. schrieb:
> Wie wärs mit PhotoMos-Relais direkt am Bus?
> 
https://www.panasonic-electric-works.com/cps/rde/xbcr/pew_eu_en/ds_x615_en_aqs225r2s.pdf

Auch Cool! Nur habe ich gerade gesehen, das der Verlinkte Chip gute 15€ 
@ 100Stück kostet... Doch schon recht teuer :-(
#5225712
War nur ein Beispiel alles in einem Chip zu haben.
Gibts in vielen Varianten, auch in billig. Z.T. auch als Umschalter bzw 
NC/NO-Kombi.
Musst halt sehen nach passenden Teilen suchen. RDSon sollte nicht so 
hoch sein.
Einkanalige gibts ab 40Ct, da brauchst du dann eben 4 Stk.
Gast #5225724
Eric B. schrieb:
> Und dieser 2. Bus liegt nicht direkt neben dem 1.?

Nein!

H.Joachim S. schrieb:
> War nur ein Beispiel alles in einem Chip zu haben.
> RDSon sollte nicht so hoch sein.

Wie sollte ich denn damit verfahren? Ich gehe davon aus, das ich damit 
die I/Os der zwei Transceiver-ICs auf den µC "umlenke". Oder soll ich 
damit gleich CAN_H/L der Busse auf einen Transceiver switchen?
#5225739
Ich werfe mal die Nutzung mehrerer Transceiver in den Raum.

Der µC kann dann wahlweise das Enable-Pin des jeweiligen Tranceivers 
aktivieren. Vielleicht sogar automatisch, wenn die entsprechende Leitung 
zusammen mit dem CAN verlegt wird und genauso vom Kabelbruch betroffen 
ist...

Ich gehe mal davon aus, dass der CAN auf allen seiten gemeinsam 
umgeschaltet werden muss. Die Insellösung nur bei einem Prozessor dürfte 
nicht zielführend sein.
Gast #5225930
pegel schrieb:
> Der von mir vorgeschlagene Dual Transceiver ist keine Option?

Doch, prinzipiell schon! Doch bevorzuge ich Chips, die ich durch einen 
anderen auch ersetzten könnte. CAN-Transceiver gibt es von zig Firmen 
mit ziemlich einheitlichen Funktionen und Footprints - die kann man 
schnell austauschen.

Der Chip von dir ist sehr interessant, das ohne Zweifel! Aber ich kann 
kein Replacement dafür finden :-(

Selbst der von mir eingesetzte µC hat replacement Kompatible Ersatztypen 
die!

Zwischenzeitlich habe ich noch das 
http://www.ti.com/lit/ug/sllu172/sllu172.pdf gefunden, das kommt meiner 
Idee schon recht nahe!

Peter D. schrieb:
> Nein, der nichtaktive TXD muß auf high bleiben.
> Ein 74HC157 wäre geeignet, 1 MUX für RXD und 2 MUXe für die beiden TXD,
> der 4. MUX bleibt frei.

Ich habe mir gerade mal u.A. den TJA1051 angesehen. Wenn der EN-Pin Low 
gezogen wird, gehen die Ausgänge in Floating über, egal was an den 
Eingängen an liegt... Dann könnte ich einfach die TX Pins verbinden und 
die RX Pins per "Oder" Verknüpfen, oder?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.