Forum: Mikrocontroller und Digitale Elektronik MAX485 - Echo an Empfängerleitung


von Peder (st_peter)


Lesenswert?

Moin,

ich benutze einen MAX485 und habe mir am Oszi mal die Leitungen 
angesehen. Auf der RO-Leitung habe ich ein exaktes Echo von der 
DI-Leitung. Ich finde dazu nichts im Datenblatt, habe aber eine Ahnung, 
woran das liegt:

Sobald der MAX485 Input von der USART-Seite bekommt, liegt auf dem 
differentiellen RS485-Paar das entsprechende umgewandelte Signal an.
Da nun dort wiederum ein Signal anliegt, macht der MAX485 das, wofür er 
da ist und wandelt diese Daten um auf USART-Pegel, die eben auf die 
RO-Leitung gehen. Wenn ich dieses Echo nicht haben möchte, bleibt mir 
nur, das per Softare zu ignorieren oder die Senderleitung mit !RE! 
vorübergehend zu deaktivieren.

Sehe ich das richtig so?


Grüße

Peter

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

wenn Empfänger und Sender gleichzeitig aktiv sind (RE und TE), dann 
passt das so.

von Mario M. (thelonging)


Lesenswert?

Richtig. Einfach DE und /RE verbinden und zwischen Senden und Empfangen 
umschalten.

von Hmmm (hmmm)


Lesenswert?

Peder schrieb:
> Wenn ich dieses Echo nicht haben möchte, bleibt mir
> nur, das per Softare zu ignorieren oder die Senderleitung mit !RE!
> vorübergehend zu deaktivieren.

Ja. Und wenn Du Pin 2 und 3 verbindest, erreichst Du letzteres, beim 
Senden geht der Receiver aus.

In dem Fall unbedingt RO mit einem Pullup versehen, bei abgeschaltetem 
Receiver ist der hochohmig, so dass Du ansonsten Müll empfangen kannst.

von Peder (st_peter)


Lesenswert?

Danke, das ging schnell!

Die beiden Pins zu verbinden, ist irgendwie offensichtlich, wenn man 
erstmal darauf gestoßen wird. Gesehen hab ich die Option aber 
tatsächlich nicht... Also noch mal danke!

von H.Joachim S. (crazyhorse)


Lesenswert?

Ist aber gar nicht so schlecht das Echo zu empfangen. Man weiss ja was 
man gesendet hat und kann damit vergleichen ob es zu Kollisionen kam. 
Programmieraufwand gering, Nutzen u.U. gross. Schädlich praktisch nie.

von Rahul D. (rahul)


Lesenswert?

H.Joachim S. schrieb:
> Ist aber gar nicht so schlecht das Echo zu empfangen. Man weiss ja was
> man gesendet hat und kann damit vergleichen ob es zu Kollisionen kam.
> Programmieraufwand gering, Nutzen u.U. gross. Schädlich praktisch nie.

Beim CAN wird doch genau das verwendet.
Wobei RS485-Ausgänge u.U. zu niederohmig sind, eine Kollision 
"überreden" und so nicht merken, dass eine vorliegt.

von N. M. (mani)


Lesenswert?

Rahul D. schrieb:
> Beim CAN wird doch genau das verwendet

Nicht ganz. Bei CAN wird die Kollision on the fly aktiv verhindert.
Bei RS485 kannst du höchstens nachträglich eine Kollision feststellen.

von Rainer W. (rawi)


Lesenswert?

H.Joachim S. schrieb:
> Man weiss ja was man gesendet hat und kann damit vergleichen ob es zu
> Kollisionen kam.

Unsinn, eine sichere Kollisionserkennung ist mit RS-485 nicht 
garantiert.

Bei RS-485 entstehen bei mehreren aktiven, gegeneinander treibenden 
Sendern auf Grund der Push-Pull Ausgangsstufen undefinierte Pegel, d.h. 
eine Kollisionserkennung ist ein Glücksspiel.

Rahul D. schrieb:
> Beim CAN wird doch genau das verwendet.

Um dies zu ermöglichen, verwendet CAN ganz andere Bustreiber mit 
Open-Drain Ausgang.

Bei CAN gewinnt daher immer der dominante Pegel, d.h. auch bei einer 
Kollision sind saubere Pegel garantiert.

von Rahul D. (rahul)


Lesenswert?

Rainer W. schrieb:
> Bei CAN gewinnt daher immer der dominante Pegel, d.h. auch bei einer
> Kollision sind saubere Pegel garantiert.

Der Controller mit dem recessive-Bit ist dann aber auch still, wenn er 
die Kollision erkannt hat.
Die Kollision wird bei RS485 eben nicht unbedingt erkannt. Da "redet" 
der Controller dann vielleicht doch noch weiter.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Rainer W. schrieb:
> Unsinn, eine sichere Kollisionserkennung ist mit RS-485 nicht
> garantiert.

Eine, die mit der von CAN vergleichbar ist, nicht, aber das simple 
Verfahren, das Sendeecho auszuwerten, hilft definitiv viel mehr als 
"senden und vergessen".

Nicht jeder Kollisionsfall ist so komplex, daß gleich mehrere Geräte 
gleichzeitig lossabbeln, und selbst dann dürfte das Sendeecho meistens 
eines sein: Kaputt.

von Rainer W. (rawi)


Lesenswert?

Rahul D. schrieb:
> Der Controller mit dem recessive-Bit ist dann aber auch still, wenn er
> die Kollision erkannt hat.

Das hat aber nichts mit dem grundsätzlichen Unterschied in der 
Bitübertragung  (physikalisch  Schicht) zu tun, sondern ist bereits 
Bestandteil einer höheren Schicht im OSI Modell (Transport).

Harald K. schrieb:
> ... hilft definitiv viel mehr als "senden und vergessen"

Sagen wir mal so, je nach verwendeten Treibern besteht die Möglichkeit, 
dass Kollisionen erkennbar sind, aber das ist alles andere als sicher, 
weil dabei irgendwelche Zwischenpegel auftreten können.

> Nicht jeder Kollisionsfall ist so komplex, daß gleich mehrere Geräte
> gleichzeitig lossabbeln

Was soll das für ein Kollisionsfall sein, bei dem nicht mehrere Geräte 
senden? Wenn nur eins sendet, gibt es keine Kollision ;-)

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Rainer W. schrieb:
> Das hat aber nichts mit dem grundsätzlichen Unterschied in der
> Bitübertragung  (physikalisch  Schicht) zu tun, sondern ist bereits
> Bestandteil einer höheren Schicht im OSI Modell (Transport).

Und wie ist das bei einer RS485-Übertragung?
Der Sender, der die Kollision erkennt, stellt den Sendebetrieb doch auch 
ein ==> gleicher Vorgang, oder?
Natürlich kann ein CAN-Controller auch einfach weiter sabbeln.
Da setzt sich dann immer das dominante Bit durch - bis nur noch das auf 
dem Bus liegt, und alle Controller das Senden einstellen.

von Rainer W. (rawi)


Lesenswert?

Rahul D. schrieb:
> Und wie ist das bei einer RS485-Übertragung?
> Der Sender, der die Kollision erkennt, stellt den Sendebetrieb doch auch
> ein ==> gleicher Vorgang, oder?

Da bei RS-485 eine Kollision wegen den möglicherwiese auftretenden 
Zwischenpegeln nicht sicher erkennbar ist, ist es eben nicht der gleiche 
Vorgang.

Bei CAN erfolgt die Kollisionsauflösung außerdem noch innerhalb des Bit, 
bei RS-485 wäre das frühestens nach dem Stop-Bit des kollidierenden 
Zeichens möglich.

> Natürlich kann ein CAN-Controller auch einfach weiter sabbeln.

Nein, bei CAN wird darüber während der Arbitrierung die 
Nachrichtenpriorisierung sicher gestellt. Der Controller hat dafür zu 
sorgen, dass der Sender mit der niedriger priorisierten Nachricht nach 
einer Kollisionserkennung sofort (noch innerhalb des Bits) die Schnauze 
hält. Falls es zu einer Kollision von Data Frame und Remote Frame kommt, 
hat der Data Frame Priorität. Bei CAN passiert die Kollisionshandhabung 
ohne Datenverlust, d.h. die priorisierte Nachricht kommt heil durch.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Rainer W. schrieb:
> Was soll das für ein Kollisionsfall sein, bei dem nicht mehrere Geräte
> senden?

n > 2, ich hätte gedacht, daß das irgendwi klar ist.

Die Erfahrung (die manch einer macht) zeigt, daß eine Kollision das zu 
empfangende Echo oft ausreichend weit stört, daß sie erkannt wird. 
Undefinierte Pegel sind ja schon mal ein Anfang - wenn eine UART bei 
undefinierten Pegel am Eingang des RS485-Transceivers weder Parity- noch 
Framing-Fehler feststellt und die Daten den gesendeten entsprechen, dann 
sind die Pegel vielleich doch nicht so undefiniert.

von Jobst M. (jobstens-de)


Lesenswert?

Wenn man das Datensignal invertiert an den Driver-Enable Anschluss legt, 
kann man auf dem Bus mit RS485-Treibern auch mit dominanten und 
rezessiven Pegeln arbeiten.

Dann gibt es auch keine "Zwischenpegel". Und der, der rezessiven Pegel 
senden möchte, kann erkennen, dass gerade dominant auf dem Bus ist und 
seine Sendung einstellen.

Gruß
Jobst

von Rainer W. (rawi)


Lesenswert?

Jobst M. schrieb:
> Und der, der rezessiven Pegel senden möchte, kann erkennen, dass
> gerade dominant auf dem Bus ist und seine Sendung einstellen.

Man müsste die Ausgabe per Bit-Banging machen. Ein UART ist nicht in der 
Lage, während der Zeichenübertragung einzugreifen und auf den Zustand 
einzelner Bits zu reagieren. Bei Konflikten kann man nur im Nachhinein 
erkennen, dass Bits gestört wurden, aber die Übertragung wird 
korrumpierte, ganz im Gegensatz zu CAN, wo die höher priorisierte 
Nachricht heil durch kommt.

von Jobst M. (jobstens-de)


Lesenswert?

Rainer W. schrieb:
> Man müsste die Ausgabe per Bit-Banging machen.

Oder man spendiert der Schaltung ein EXOR, welches einen IRQ auslöst, 
worauf hin die UART abgeschaltet wird. Das geht auch mitten in der 
Übertragung.

Gruß
Jobst

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Müsste ja nicht der UART abgeschaltet werden, sondern nur der Sender des 
MAX485 (DE).

von H.Joachim S. (crazyhorse)


Lesenswert?

Jobst M. schrieb:
> Oder man spendiert der Schaltung ein EXOR,

Du meinst an DI und RO? Das wird wohl bei jedem Pegelwechsel ein Signal 
erzeugen aufgrund der Verzögerungszeiten.

von Jobst M. (jobstens-de)


Lesenswert?

H.Joachim S. schrieb:
> Jobst M. schrieb:
>> Oder man spendiert der Schaltung ein EXOR,
>
> Du meinst an DI und RO? Das wird wohl bei jedem Pegelwechsel ein Signal
> erzeugen aufgrund der Verzögerungszeiten.

Filtern?
Es gibt keinen Grund zur Eile!

Gruß
Jobst

von H.Joachim S. (crazyhorse)


Lesenswert?

Also bisschen mehr als nur ein EXOR :-)

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

H.Joachim S. schrieb:
> Schädlich praktisch nie.

Entweder Du opferst einen Großteil der Übertragungsleistung oder es ist 
nur eine Diagnose ohne Anspruch auf Wirkung.

Bei 485 sollte Dein lokales Signal stärker sein, als externe Störer. 
Oder Du definierst 3 (oder mehr) statt 2 Pegel.

Bei CAN ist die Übertragungsleistung (in m*kBaud/Ader) viel zu gering, 
um für irgendwas anderes verwendet zu werden.

Bei Ethernet hat man zwar 30 Jahre gebraucht, ist aber lange weg von 
jeglicher gemeinsamer Leitung (CSMA).

Egal, was Du Dir an schlauen Reaktionen überlegst, es ist auf höheren 
Ebenen besser angesiedelt.

von Jobst M. (jobstens-de)


Lesenswert?

H.Joachim S. schrieb:
> Also bisschen mehr als nur ein EXOR :-)

Mitarbeiten! ;-)

Gruß
Jobst

von Hannes J. (pnuebergang)


Angehängte Dateien:

Lesenswert?

Peder schrieb:
> ich benutze einen MAX485 und habe mir am Oszi mal die Leitungen
> angesehen. Auf der RO-Leitung habe ich ein exaktes Echo von der
> DI-Leitung. Ich finde dazu nichts im Datenblatt,

Das steht schon im Datenblatt. Einfach mal die Bilder anschauen :)

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.