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


von Arndt, Alexander (Gast)


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

von Sonic (Gast)


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

von Arndt, Alexander (Gast)


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

von Sonic (Gast)


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.

von crazy horse (Gast)


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.

von A.K. (Gast)


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.

von Arndt, Alexander (Gast)


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

von Dieter Werner (Gast)


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.

von A.K. (Gast)


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.

von crazy horse (Gast)


Lesenswert?

sag ich doch :-)

von Also (Gast)


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

von Philipp Sªsse (Gast)


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.

von crazy horse (Gast)


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.

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.