mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS-485 Bus Full Duplex


Autor: Arndt, Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

vielleicht hat jemand eine Idee zu meinem Problem :

Ich baue gerade ein RS-485 Hausbus auf und mich stört die
Sende-/Empfangssteuerung über einen I/O-Pin bei Halb-Duplex.

Kann ich nun direkt vom UART (RxD/TxD) Daten direkt bei Full-Duplex auf
den Bus geben, z.B. mit MAX488 und brauche mich nicht mehr um evtl.
Datenkollision zu kümmern ?

Wäre ja auch praktisch um einen Funk-Koppler zu bauen mit Easy-Radio
UART ---> direkt auf Max488 und dann auf den Hausbus...

Hat jemand hier auch schon Erfahrungen gemacht, auch was die
Terminatoren angeht(auch nur 120 Ohm auf A/B und dann Y/Z) ?

Gruss
A. Arndt

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also RS485 geht definitv kein Fullduplex. Dazu müsstest du ein Adernpaar
mehr spendieren und über RS422 (LAN) fahren. Per Funk bräuchtest du auch
 jeweils einen Sender und einen Empfänger pro Teilnehmer (unabhängig
voneinandern kein Transceiver).

Autor: Arndt, Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist schon klar, ich brauche 4 Busleitungen, aber die habe ich schon,
ist die Reichweite über lange Leitungen auch so unkiriisch, nehme
nämlich nur geschirmate Leitung und nicht twisted-pair...?

Reichweite max. 40 Meter.

Ob das nun rs-485 oder rs-422 heisst ist ja eh egal, wenn die
Handhabung identisch ist.

Ich habe ca. 10 Devices zu vernetzten und soll dann auch per Funk
weitergehen...

Ist leider auch etwas stromgieriger, aber auch nur bei Senden, oder ?

Bei RS-485 nimmt der Chip sich die 50mA nur beim Senden und das ist ja
nicht lange...

Per Funk :

BUS ---> Funktranceiver


Funktransceiver --> BUS   und auch

Funktransceiver --> AVR

Gruss
A. Arndt

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also kabelgebunden dürfte das mit 40m kein Problem sein. Ich habe ein
DMX-Signal (auch RS485, 250 kbit) in einer Messehalle (Modellbau, viele
Fernsteuerungen als 'Störsender' aktiv) über 200m mit normalen
Mikrofonkabeln ohne Störungen betrieben.
Funk gibt's meines Wissens fertige Module mit AVR drauf, wo du nur mit
RS2323 draufgehen kannst. Wie's da mit Fullduplex aussieht weiß ich
nicht.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kein problem, wenn du nur 2 Teilnehmer hast. Ist dann aber erst mal kein
echter Bus mehr. Sollten es mehr als 2 Teilnehmer sein (oder später
werden?) geh gleich auf CAN. Das ist einfach genial.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei einem einzelnen Master funktioniert 4-Draht RS485 durchaus auch als
Bus mit mehr als einem Slave im Full Duplex Betrieb. Allerdings
benötigen die Slaves dann 4-Draht Interfacebausteine mit Driver Enable
Signal. Also beispielsweise 14pin MX489 statt 8pin MAX488.

Autor: Arndt, Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte ja gerade nicht den Krams mit dem Single-Master haben,
deshalb Full-Duplex. CAN ist viel zu kompliziert und wesentlich teurer,
soviel ich weiss.

Und ich möchte ja auch keinen Pins extra für Enable-Funktionen
opfern...

Gruss
A. Arndt

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne Richtungssteuerung müssen immer alle Teilnehmer auf Sendung sein.
Wie soll denn das bei RS485 (Treiber mit Gegentakt-Endstufe)ohne
Kollision funktionieren?

CAN bietet diese Möglichkeit, da die Treiber open collector Stufen
sind.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein RS485 Multi-Master-Bus ist komplexer als CAN, weil du sicherstellen
musst, das nie mehr als 1 Device gleichzeitig sendet ist. Das ist alles
andere als trivial. Und mit 4-Draht geht es überhaupt nicht.

Ein 2-Draht CAN-Treiber erspart dir zwar die Enable-Leitung, aber nicht
die Arbitrierung.

Seit CAN günstig und ohne Aufwand zu haben ist (MCP2515), gilt die
einfache Regel: Single-Master = RS485, Multi-Master = CAN-Bus.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sag ich doch :-)

Autor: Also (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, 485 kann per 2-Draht nur halbduplex, soweit klar.
Die Busteilnehmer müssen, wenn sie nix zu senden haben
im Listen-Mode sein, weil der Bus sonst belegt ist.
Dafür ist dann aber Multimaster fähig, kommt aufs
protokoll an. Ist aber nicht gerade ne easy Geschichte
von wegen Token usw. Ein Beispiel für die Geschichte ist
der Profibus, der ist 485 hardwaremässig kompatibel.
Auf 4-Draht kann der Bus nur einen Master, der Rest müssen
Slaves sein, dafür gehts dann aber vollduplex.
Ob halb oder vollduplex find ich bei x MBit Übertragungsrate
über hunderte Meter weg nicht mehr so brisant.
Schwierig ist da schon eher das Protokoll, das ja
von Hand gemacht sein muss.
Beim CAN ist das soweit ich informiert bin einfacher,
die Busbausteine knobeln das unter sich aus und man muß nur
proggen sende Byte xy an Empfänger Z

Autor: Philipp Sªsse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber sicher geht das, ohne Kollisionserkennung per 4-Draht!

Als Ringstruktur: jeder Busteilnehmer hat sein Sendepaar am
Empfangspaar des Nachbarn und sendet alles Empfangene weiter (bis auf
das, was er selbst gesendet hat). Wenn sich das mit der Ringstruktur
verkabeln läßt, ist das extrem einfach zu programmieren und man spart
sich die Einarbeitung in CAN.

Allerdings spart es keinen Pin gegenüber halb-duplex, zumindest wenn
man jenen über Software-UARt macht: im einen Fall hat man einen Pin zum
Umschalten und den anderen als RX/TX; im anderen Fall hat man zwei Pins
für RX und TX.


PS: Warum gibt es eigentlich keine Treiber, die erkennen, ob ein µC-Pin
aktiv oder tristate ist, dann würde ein einziger Pin reichen! Und
hardwaremäßig ja eigentlich kein Problem die Automatik.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das wäre zwar eine Möglichkeit, aber nicht gerade empfehlenswert.
1 Controller fällt aus -> das ganze Netzwerk steht
Ausserdem kommt es zu nicht unerheblichen Verzögerungen, jeder
Controller muss ja min. erstmal 1Byte (in der Praxis eher die ganze
Botschaft) empfangen, analysieren und dann weiterschicken. Und jede
Veränderung am Bus führt zu sich verändernden Verzögerungszeiten.
Und wie willst du Prioritäten vergeben?
Nene, das ist nichts.
Man muss den CAN nicht einmal vollständig verstehen (auch wenns besser
ist:-), um damit arbeiten zu können, ein paar wichtige Grundlagen
reichen erstmal, um das zum Laufen zu bringen.

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.