Forum: Mikrocontroller und Digitale Elektronik UART zu RS485 mit automat. Treiber-Umschaltung? (RTS / DE)


von RS485-Tüftler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute!

ich tüftel gerade an einer RS485-Schnittstelle.

Besonderheit: aus meinem UART bekomm ich nur Rx/Tx, da die übrigens 
Handshake-Signale des uCs nicht aus meinem Gerät rausgeführt werden.

Nun die Frage:
Kann man sich das DE-Signal irgendwie durch einen kleinen 
konfigurierbaren IC selbst herstellen? Dieser IC müsste dann selbst 
erkennen, wann der Tx-Frame startet / endet.
Kennt Ihr da was - eventuell mit Baudrate / Timeouts einstellbar?

Vielen Dank im Vorraus!

von Ralf G. (ralg)


Lesenswert?

RS485-Tüftler schrieb:
> Kann man sich das DE-Signal irgendwie durch einen kleinen
> konfigurierbaren IC selbst herstellen?

Warum lässt du das nicht den µC mit erledigen? Der weiß doch als Erster, 
wann gesendet wird.

von Dietmar (Gast)


Lesenswert?

Du kannst die beiden rechten Teile deiner Skizze durch einen ADAM4520 
ersetzen.

http://www.advantech.com/products/ADAM-4520/mod_8DCEE4B7-FBDE-4C5D-9752-ED2F2FBD00BF.aspx

von spess53 (Gast)


Lesenswert?

Hi

Kannst du auch CAN-Treiber (nicht Controller) nehmen? Die haben die 
Umschaltung schon drin.

MfG Spess

von RS485-Tüftler (Gast)


Lesenswert?

@Ralf G.:
Ist schon richtig, in meinem Bild hab ich ein paar Stecker weggelassen:

[uC]------Stecker-A--------[?]--[RS485-Driver]-----Stecker-B

Ich will nun eine Huckepack-Platine bauen, die zwischen Stecker-A und B 
sitzt. Aus Stecker A kommen leider nur Rx/Tx raus.


@Dietmar:
Ich muss die Platine selbst bauen, da ich damit in eine vorgegebene 
Mechanik passen muss. Sonst wäre Dein Vorschlag sicher eine gute 
Alternative.

von RS485-Tüftler (Gast)


Lesenswert?

@spess53:
Mein Gerät "will" mit einer Gegenstelle kommunizieren, die eine 
RS485-Physik (halfduplex) hat.

von Reinhard Kern (Gast)


Lesenswert?

RS485-Tüftler schrieb:
> Kann man sich das DE-Signal irgendwie durch einen kleinen
> konfigurierbaren IC selbst herstellen?

Hallo,

im Prinzip einfach, du musst halt DE sofort einschalten wenn Tx aktiv 
ist, und ausschalten, wenn Tx mehr als eine Zeichenlänge nicht mehr 
aktiv ist. Da liegt der kritische Punkt, wenn die Antwortzeiten der 
anderen Geräte kurz sind. Am besten geeignet ist ein Primitivprozessor 
etwa im 8poligen Gehäuse, der kann auch die Tx-Zeichen mitdekodieren. 
Die Verzögerungszeit sollte manipulierbar sein. Ein Monoflop ginge zwar 
auch, aber ich sehe nicht was dabei der Vorteil sein soll.

Gruss Reinhard

von Ralf G. (ralg)


Lesenswert?

RS485-Tüftler schrieb:
> Ich will nun eine Huckepack-Platine bauen, die zwischen Stecker-A und B
> sitzt. Aus Stecker A kommen leider nur Rx/Tx raus.

Du hast also keine Möglichkeit, aus dem µC noch 'ein Kabel 
rauszuziehen'?

von Thomas B. (briddl)


Lesenswert?

würds nicht auch gehen wenn man an den IC direkt nen MAX485 oder 
ähnlichen baustein hängt?

von RS485-Tüftler (Gast)


Lesenswert?

@Reinhard:

daran hab ich auch schon gedacht, aber FW schreiben versuche ich zu 
vermeiden. Bei der Monoflop-Variante käme es - wie Du sagst - auf die 
Protokoll-Timings an. Darum hab ich ja gehofft, es gibt schon was 
fertiges, dass sich der Baudrate automatisch anpasst (eventuell noch 
Timeout über Widerstand einstellbar).

@Ralf:
nein - ich möchte eine kleine Adapterplatine bauen, die von außen an das 
Gerät angesteckt wird, ohne das Gehäuse für eine Leitung öffnen zu 
müssen.

@Thomas:
Der RS485-Treiber muss umschaltbar sein, damit meine Gegenstelle auch 
die Möglichkeit hat, mir zu antworten.

von ingo (Gast)


Lesenswert?

Habe für Sowas immer ein retriggerbares Monoflop (4538) genutzt, welches 
auf reichlich 10 Bitzeiten eingestellt ist, Baudrate sollte also 
feststehen. Nachteil: Umschaltung auf Senden erfolgt erst im ersten 
Startbit und Rückschaltung u.U. erst einige Bitzeiten später.
mfG ingo

von RS485-Tüftler (Gast)


Lesenswert?

@ingo & Reinhard:

Wenn das bei Euch geklappt hat, probier ich das auch einfach mal ...
Muss ich mit meiner Gegenstelle austesten, ob die das erste (verkürzte) 
Bit so akzeptiert und ob sie lange genug mit der Antwort wartet.

Vielen Dank erstmal!

von ingo (Gast)


Lesenswert?

Wenn der Bus Failsafe geschaltet ist (mit Abschlusswiderständen und 
leicht vorgespannt ist, das im offenen Zustand sicher 1 erkannt wird), 
sehe ich mit dem Startbit eigentlich kein Problem. Allerdings sollte ein 
anderer Busteilnehmer nicht unmittelbar nach dem letzten Zeichen 
antworten, weil das FF, wie gesagt, noch fast ein Zeichen "nachhängt" 
und der Sender noch aktiv ist. Das kann man aber im Protokoll 
berücksichtigen, da man ohnehin eine gewisse Zeit auf freies Medium 
horchen sollte.
mfG ingo

von Plopp.. (Gast)


Lesenswert?

Die zeitgesteuerte Umschaltung ist Schrott, denn sie geht davon aus, 
dass der Controller nie eine Verzoegerung hat. Das mag am anfang ja auch 
stimmen, aber mit zunehmendem Projekt kommt noch dies und das, dann eine 
laengere Rechnung und die Verzoegerung beim Senden ist mehr als ein 
Byte. Das wird schwierig zu debuggen...

von René Z. (dens)


Angehängte Dateien:

Lesenswert?

Meine Lösung

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

René Z. schrieb:
> Meine Lösung

Und wie willst Du einen definierten 0-Pegel senden?

von Plopp.. (Gast)


Lesenswert?

>Meine Lösung

Schuss in den Fuss, aber gut fuer eine Abschlusspruefung. Wie sende ich 
ein Null-Bit?

von René Z. (dens)


Lesenswert?

Hätte vielleicht erwähnen sollen, dass es zwar n bisschen ein Hack ist, 
aber es funktioniert !

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.