www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Buskollision RS485


Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal eine kleine Frage zum RS485 Bus...

Ich benutze den MAX485 und habe den receiver immer aktiviert. Dachte mir 
nun, dass ich um kollisionen zu verhindern den Treiber manuell 
aktivieren muss bevor ich was sende.

Ich habe zwei Teilnehmer am Bus, der eine Sendet einen Befehl, der 
andere antwortet leicht verzögert darauf. Wenn der "Master" (von dem der 
Befehl ausgeht) jetzt sendet und ich den Drive-Enable aktiv lasse (also 
dauerhaft sende) kommt es nicht zu einer Kollision - ich empfange die 
Antwort meinees "Slaves" weiterhin ohne Probleme.

Wie ist das zu erklären? Ich dachte, ich würde den Bus "übertreiben" 
wenn ich Drive Enable dauerhaft an lasse. Oder kommt es nur zu 
Bus-Kollisionen wenn auch beide tatsächlich senden?

Autor: Falk Willberg (dl3daz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd wrote:
> Mal eine kleine Frage zum RS485 Bus...
...
> Wenn der "Master" (von dem der
> Befehl ausgeht) jetzt sendet und ich den Drive-Enable aktiv lasse (also
> dauerhaft sende) kommt es nicht zu einer Kollision - ich empfange die
> Antwort meinees "Slaves" weiterhin ohne Probleme.
>
> Wie ist das zu erklären? Ich dachte, ich würde den Bus "übertreiben"
> wenn ich Drive Enable dauerhaft an lasse. Oder kommt es nur zu
> Bus-Kollisionen wenn auch beide tatsächlich senden?

Das könnte ich mir so erklären, daß der Daten sendende Treiber genügend 
Pegel gegen den gerade nicht sendenden aufbringt, daß der Receiver die 
Daten noch lesen kann.

Wenn beide gleichzeitig Daten übertragen, wird Müll auf dem Bus sein.

Falk

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein wandler ist ganz (sehr) ähnlich zu diesen hier:

http://www.e-lab.de/diverse/RS232-485sch.pdf

Ich hab halt keine Ahnung wie ich die RTS Leitung vernünftig in LabView 
ansteuern kann. LV hat zwar funktionen um die leitung zu setzen/nicht zu 
setzen aber das funktioniert nicht in real time (wenn ich die Leitung 
setze und direkt danach sende kann es sein, dass er erst mit dem Senden 
anfängt und danach den Drive Enable setzt). Wartezeiten bringen leider 
auch nichts, weil ich das gleiche Problem auch beim Beenden des 
Sendevorgangs habe - wenn der Slave antwortet dann kann es sein, dass 
die Drive-Enable Leitung des Masters noch gesetzt ist (weil das 
"disablen" des RTS auch nicht in realtime erfolgt). Ich müsste den Slave 
auch ewig lang warten lassen bis er was senden darf weil ich ja keine 
möglichkeit habe den Bus auf Aktivität ab zu fragen.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du dir die Pegel auf dem Bus aussuchen kannst, also kein bereits 
fertiges Gerät mit einbinden musst: Nimm statt RS485-Treiber einfach 
CAN-Treiber. Keinen CAN-Bus wohlgemerkt, nur die Treiberbausteine 
dadurch ersetzen. Dann löst sich das Problem in Luft auf und die 
Enable-Leitung gleich mit.

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

in LabVIEW kannst du einfach RTS setzen und beim Senden den Treiber 
aktivieren.
Ein Terminal für RS485 unter LabVIEW findest Du unter

http://schulen.eduhi.at/htlbraunau/lehrer/ploetz/L...

"Terminal 3".

Gruß
Franz

Autor: Falk Willberg (dl3daz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd wrote:
> Mein wandler ist ganz (sehr) ähnlich zu diesen hier:
>
> http://www.e-lab.de/diverse/RS232-485sch.pdf
>
> Ich hab halt keine Ahnung wie ich die RTS Leitung vernünftig in LabView
> ansteuern kann.

Ich auch nicht (kein LabView)
...

> (weil das
> "disablen" des RTS auch nicht in realtime erfolgt).

Den Spaß hatte ich mit einem eigenen Programm und einem 
USB-RS232-Adapter. RTS kam nicht in Realtime.

Ich habe mir damit geholfen, daß ich mir einen USB-RS485 mit einem AVR 
und den Treibern von ww.obdev.at(?) gebastelt habe.

Mit dem TXC-Flag des USART kann man die Richtung recht gut steuern.

Falk

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.