www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS485 oder CAN Busleitungen schalten


Autor: Jörg Plitz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich suche eine praktisch erprobte Lösung, um die beiden Adern eines
Buskabels zwischen einer Ein- und einer Ausgangsbuchse elektrisch zu
trennen.
Rahmenbedingungen:
-RS485 oder CAN mit bis zu 500kBit/s (1MBit/s wären noch besser)
-nur 2 Adern (zzgl. GND) verfügbar, kein Ring möglich
-kein! Relais (mechanisch)
-Potentialtrennung nicht zwingend
-sehr geringe Schalthäufigkeit
-Abschlusswiderstand zuschaltbar
-bis zu 15 mal kaskadierbar

Master======++S======++S=======++S    S=Schalter
            ||       ||        ||
           Slave    Slave     Slave

Bisher habe ich eine Lösung mit PhotoMOS-Relais (3 Stück) im Auge, es
gibt da ja auch Typen mit niedrigem Ron und geringer Ausgangskapazität.
Allerdings bin ich mir nicht sicher, ob und mit welchen Typen sich die
Anforderungen am günstigsten (Preis, größere Stückzahl) erfüllen
lassen. Hat jemand schon mal so etwas praktisch realisiert?

Zum Hintergrund, ehe Fragen aufkommen, warum ich so etwas machen will.
Gefragt ist eine Lösung für ein propiertäres Bussystem auf der Basis
von RS485 oder CAN mit einem Master und bis zu 15 Slaves. Diese müssen
natürlich entsprechend adressiert werden, um Konflikte zu vermeiden und
(wichtig!) im Master eine eindeutige Zuordnung zwischen Daten und
räumlicher Position im Bus sicherzustellen. Die Adresszuweisung soll
durch den Master im Rahmen eines Scans beim Einschalten der
Versorgungsspannung erfolgen. Eine mechanische Adressierung durch
Schalter o.ä oder eine elektronische vor der Montage ist nicht möglich
bzw. nicht gewollt (plug&play). Der Master weist dem direkt an ihm
angeschlossenen Slave eine Adresse <>0 zu und dieser schaltet nun den
Datenbus zum nächsten Slave weiter usw. (Ich hoffe, es ist
verständlich?)
Oder hat einer noch eine bessere Idee (Versorgungsspannung slave-weise
zuschalten dauert zu lange und ist zu unsicher)?
Bereits verworfen:
-Bei CAN in jedem Slave einen Repeater einschleifen (AMIS-42700) und
diesen freischalten, geht nicht, da Repeater Verzögerungszeiten bei der
Bit-Übertragung verursachen, die bei 15 Slaves und den notwendigen
500kBit/s bereits deutlich über einer Bit-Zeit liegen.
-Bei RS485 für Ein- und Ausgang je einen Bus-Treiber verwenden und
denjenigen auf der Abgangsseite freischalten. Bei RS485 muss die
Datenrichtung expliziet umgeschalten werden, d.h. jeder Slave müsste
permanent mithöhren und ggf. seine beiden Treiber umschalten. Wird bei
diesen Geschwindigkeiten imho zu "anstrengend" für die CPU des
Slaves.

Besten Dank schon mal für eure Bemühungen.

Jörg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.