mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS485 Bus, Probleme mit mehr als einem Slave


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei mir einen kleinen Hausbus mittels einem RS485 
aufzubauen. Als Sender/Empfänger-Bausteine verwende ich den Max490, im 
Full-Duplex-Betrieb (Master/Slave Architektur).
Bei mir tritt folgendes "Phänomen" auf, sobald mehr als ein Slave an den 
Bus angeschlossen wird, funktioniert die Kommunikation mit jedem 
weiteren Slave nicht mehr.

Folgendes habe ich bereits Überprüft, bzw. beachtet:

1.) Die Terminierungswiderstände (120 Ohm) befinden sich nur am Master 
und am letzten Slave.
2.) Die Verkabelung (TX+, TX-, RX+, RX- / Full-Duplex) habe ich x-mal 
überprüft, und gemäss Datenblatt geschaltet.
3.) Die Leitungslänge ist nicht signifikant, da im Versuchsaufbau nur 
ca. 10 cm.
4.) Es ist sichergestellt das die Slaves nicht gleichzeitig senden, mit 
Logikanalyzer überprüft.
5.) Alle Slaves empfangen das Datenpaket, und nur der angesprochene 
Teilnehmer sendet auf dem Bus - aber beim Master kommt die Antwort (des 
jeweiligen Slaves) nicht an.
6.) Habe alle TX und RX Signale (serielle Schnittstelle) an den 
jeweiligen Pins der Mikrocontroller abgegriffen (mit einem 
Logikanalyzer) fazit: Alle Slaves Empfanden einwandfrei, der jeweilige 
Slave sendet auch die gewünschte Antwort zurück - aber am Master kommt 
nichts an.
7.) Das Vertauschen der Slaves (und der Treiberbausteine), ändert nichts 
am "Phänomen"
8.) Der gesamte Aufbau verwendet dieselbe Masse (GND), obwohl ich 
gelesen habe das die bei RS485 nicht nötig ist.

Vielleicht habe ich etwas grundsätzliches "übersehen", und hoffe mit 
kann jemand mit einem Tip helfen.

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Transmit Enable? TX_EN?
Sprich: nicht verwendete Ausgänge hochohmig schalten / "tristaten"?

Editha:
Der Pin heisst beim MAX490 "DE": output driver enable.
Der darf nur am Sender "High" sein, bei allen anderen muss der LO sein.

Ansonsten: Hausbus klingt schon mal nach Masseschleifen, andererseits 
ist da die symmetrische Signalübertragung recht schmerzfrei. Könnte aber 
auch noch zu Problemen führen. Zur Not RS-485 mit Isolation: MAX1480, 
ADM2582, ...

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ...

"Der Pin heisst beim MAX490 "DE": output driver enable."

Der Max490 hat keinen "DE"-Pin ! Der Baustein besteht aus einem Sender 
und Empfänger, ohne "Enables"

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie bitte verbindest Du mehrere Treiberausgänge miteinander, ohne je 
Treiber ein DE zu haben? Mir scheint das das Problem zu sein.

Welche Schaltung aus welchem Datenblatt meinst Du da nachgebaut zu 
haben?

Das Maxim MAX1487-MAX491-Datenblatt beschreibt auf S.14 in Figure 22 
eine Schaltung, die dem nahekommt, was Du erzielen willst - setzt aber 
zwingend Treiber mit DE voraus.

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann kannst du nur einen SLAVE haben, sonst prügeln sich doch alle auf 
dem Bus,
also einen anderen MAX nehmen!

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven schrieb:

> Der Max490 hat keinen "DE"-Pin ! Der Baustein besteht aus einem Sender
> und Empfänger, ohne "Enables"

Wie doof, da muss wohl ein anderer Chip her!

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten, das kann es sein. Ich habe den Max490 gewählt 
um mir die beiden Pin's zu sparen. Aber wofür ist dann der Max490 gut, 
nur für Peer-to-Peer Verbindungen.
Ich war/bin der Meinung das der Baustein dies "von sich aus" regelt. Ich 
interpretiere das Datenblatt S.14 (Figure 22) so, dass der Max489 und 
Max491 eine DE / RE - Leitung haben, und der Max490 eben nicht. Wenn den 
so ist, wird mir die Sache schon klarer.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Sven (Gast)

>um mir die beiden Pin's zu sparen. Aber wofür ist dann der Max490 gut,

Für Vollduplex. RS485 wird aber meist wie bei dir im Halbduplkex 
betrieben.

>Ich war/bin der Meinung das der Baustein dies "von sich aus" regelt.

Nö.

>so ist, wird mir die Sache schon klarer.

Siehe RS485

MFG
Falk

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich war/bin der Meinung das der Baustein dies "von sich aus" regelt.
Dafür nimmt man dann besser CAN-Transceiver, wobei die nur eine 
Halbduplex-Verbindung zur Verfügung stellen.

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.