Forum: Mikrocontroller und Digitale Elektronik RS485 RS232 converter - RTS problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von markus breckenkamp (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe vor einige Geräte via MODBUS RTU zu steuern (VFD, JOG usw.),
allerdings habe ich ein Verständnisproblem mit RTS und RE/DE. Wenn ich
senden möchte, muss ich zuerst DE via RTS anschalten, soweit ok. Problem
ist eher das Timing am Ende einer Transmission. Ich muss RTS
ausschalten, wenn TX abgeschlossen wurde und wenn response (RX) noch
nicht begonnen hat.

Wie macht man das am besten ? Gibt es andere Lösungen ?

Vielen Dank

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
markus breckenkamp schrieb:
> Problem ist eher das Timing am Ende einer Transmission. Ich muss RTS
> ausschalten, wenn TX abgeschlossen wurde und wenn response (RX) noch
> nicht begonnen hat.
>
> Wie macht man das am besten ?

Indem du RTS zum richtigen Zeitpunkt ausschaltest. Dieser Zeitpunkt 
hängt davon ab, wie viele Bytes dein Sende-FIFO zwischenspeichern kann.

> Gibt es andere Lösungen ?

Anders als was?

von markus breckenkamp (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>> Gibt es andere Lösungen ?
>
> Anders als was?

Ich finde immer wieder Schaltpläne wo RE und DE mit TX geschaltet wird.
Hier z.B.:

http://www.siongboon.com/projects/2006-03-06_serial_communication/rs485-opto-usb.png

Würde das auch bei meinem Schaltplan funktionieren, wenn ich R2IN statt
von RTS mit R1IN zusammenschalte damit dann RE und DE toggle ? (Siehe 
Bild)

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
markus breckenkamp schrieb:
> Wie macht man das am besten

1. erst nach einer bestimmten Zeit den Sender abschalten - die 
notwendige Zeit hängt aber z.B. stark von der Baudrate ab. Man kann das 
auch mit dem Oszi analysieren und danach die Zeit einstellen, aber 
eigentlich ist das Murks. Wird was geändert funktioniert es nicht mehr.

2. feststellen, wann alles gesendet ist, z.B. Tx Register Empty 
abfragen, das hat aber nicht jedes UART. Oder am Tx-Pin mitlauschen.

Georg

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
markus breckenkamp schrieb:
> Ich finde immer wieder Schaltpläne wo RE und DE mit TX geschaltet wird.
> Hier z.B.:
>
> 
http://www.siongboon.com/projects/2006-03-06_serial_communication/rs485-opto-usb.png

Nein; dort werden RE und DE zusammen geschaltet, aber nicht durch das 
TXD-Signal, sondern durch das TXDEN-Signal, das der FT232RL für genau 
solche RS-485-Transceiver implementiert.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
markus breckenkamp schrieb:
> Wie macht man das am besten ?

Man verwendet eine UART, die das in Hardware unterstützt.

Ansonsten kannst Du zu Beginn Deiner Übertragung einen Timer aufziehen 
und ihn n Bytezeiten später einen Interrupt auslösen lassen, in dem Du 
die Handshakeleitung wieder zurücksetzt.

Die nächste Möglichkeit ist eine UART, die mit Statusbits signalisieren 
kann, wann das letzte Byte das Sendeschieberegister verlassen hat.

Bei einer Soft-UART ist das natürlich ein Abfallprodukt, das fällt quasi 
automatisch hinten 'raus.

Willst Du einen PC verwenden, oder geht es um einen µC?

Bei einem PC ist hier die Verwendung von USB-UART-Adaptern von FTDI 
ratsam, die nämlich haben eine die RS485-Unterstützung in Hardware. Dazu 
verwenden sie nicht eine der üblichen Handshakeleitungen, sondern haben 
eine dedizierte eigene Steuerleitungen.

von marcus breckenkamp (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:

> Willst Du einen PC verwenden, oder geht es um einen µC?
>
> Bei einem PC ist hier die Verwendung von USB-UART-Adaptern von FTDI
> ratsam, die nämlich haben eine die RS485-Unterstützung in Hardware. Dazu
> verwenden sie nicht eine der üblichen Handshakeleitungen, sondern haben
> eine dedizierte eigene Steuerleitungen.

Ja , ist für den PC gedacht.

Ein FTDI ist wohl doch eher die bessere Wahl. Daher habe ich meinen
Schaltplan nochmal geändert. Ich Hoffe das passt jetzt alles.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Wenn Du /RE des RS485-Treibers fest auf Masse legst, empfängst Du 
natürlich auch alles gesendete selbst als Echo. Soll das so sein?

von marcus breckenkamp (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Wenn Du /RE des RS485-Treibers fest auf Masse legst, empfängst Du
> natürlich auch alles gesendete selbst als Echo. Soll das so sein?

UI, wollte grade das Layout ausdrucken. Gut das du das nochmal erwähnt
hast. /RE kommt vermutlich an DE.

Da wir garde dabei sind: wie sieht das mit RTS/CTS und DSR/DTR aus ?
Diese werden an der SUB-D Buchse normalerweise verbunden. Sollte man
das auch am FTDI machen ?

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
marcus breckenkamp schrieb:
> Sollte man
> das auch am FTDI machen ?

Wenn Deine Software das braucht, ja. Sonst ist es auch an anderen 
PC-UARTs überflüssig.

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]
  • [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.