Forum: Mikrocontroller und Digitale Elektronik RS232 Daten verwürfelt??


von Jonny C. (cashjonny)


Lesenswert?

Hallo,

ich habe zwischen zwei Rechnern auf denen Putty läuft eine RS232 Strecke 
aufgebaut. Dazwischen hängen zwei Pegelwandler (RS232 auf LVDS) und ein 
LVDS-Kabel. Ich möchte damit bei höherer Baudraute eine längere 
Übertragungsleitung ermöglichgen.

Leider werden die eingebenen Wörter beim Sender nicht korrekt 
übertragen.
Beispiel:
Bei der Einbabe des Wortes 'HALLO' wird hinten raus ein 'OHMF'.

Die Einstellungen sind bei Sender und Empfänger identisch:
Speed: 9600
Data bits: 8
Stop bits: 1
Parity: None
Flow Control: XON/XOFF

Hat jemand eine Idee woran das liegen könnte?
Vielen Dank und Gruß,
Jonny

von TestX (Gast)


Lesenswert?

Häng mal ein Oszilloskop an alle relevanten Stellen und schau dir die 
Datne an die über die Leitung gehen...

von Cyblord -. (cyblord)


Lesenswert?

TestX schrieb:
> Häng mal ein Oszilloskop an alle relevanten Stellen und schau dir die
> Datne an die über die Leitung gehen...

Besser nen LA

von Dr. Sommer (Gast)


Lesenswert?

Jonny C. schrieb:
> Dazwischen hängen zwei Pegelwandler (RS232 auf LVDS) und ein
> LVDS-Kabel.

Klingt unnötig kompliziert... Wenn mehr Datenrate als bei normalem RS232 
gewünscht ist, wie wäre es mit USB?

von Sebastian S. (amateur)


Lesenswert?

@ Dr. Winter
Lange Leitung und USB vertragen sich nicht.
U.U. wäre hier RS485 besser - ab einer bestimmten Länge bzw. einem 
bestimmtem Störnebel.

von Dr. Sommer (Gast)


Lesenswert?

Sebastian S. schrieb:
> Lange Leitung und USB vertragen sich nicht.

Aber LVDS?

von Udo S. (urschmitt)


Lesenswert?

Geht es denn wenn du die beiden RS232 direkt mit einem kurzen Kabel 
koppelst?

: Bearbeitet durch User
von Sebastian S. (amateur)


Lesenswert?

@Dr. Winter
>>Sebastian S. schrieb:
>> Lange Leitung und USB vertragen sich nicht.

> Aber LVDS?

Du hast eine sehr selektive Art zu lesen.

Habe mit LVDS keine Erfahrungen.

Deshalb habe ich RS485 vorgeschlagen, dass problemlos mehrere 100 Meter 
überbrücken kann. Dafür gibt es USB->RS485-Konverter.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Viele offene Fragen...

1. Wie lang ist das LVDS-Kabel?
2. Ist das Kabel ordnungsgemäß terminiert?

Wenn mehrere Paare durch das Kabel gehen:

3. Benutzt Du tatsächlich für jede Datenrichtung je ein verdrilltes Paar
   oder hast Du Dir willkürlich einfach ein paar Adern geschnappt?

von LEDzeppelin (Gast)


Lesenswert?

Jonny C. schrieb:

> Beispiel:
> Bei der Einbabe des Wortes 'HALLO' wird hinten raus ein 'OHMF'.

Entweder ne ASCII-Tabelle hier mit anhängen oder vernünftig testen.
Also z.b. aus gesendeten 00011001 wird beim Empfänger immer 11100110. 
Dann kann man dazu etwas sagen.

von Bernd (Gast)


Lesenswert?

LEDzeppelin schrieb:
> Jonny C. schrieb:
>
>> Beispiel:
>> Bei der Einbabe des Wortes 'HALLO' wird hinten raus ein 'OHMF'.
>
> Entweder ne ASCII-Tabelle hier mit anhängen oder vernünftig testen.
> Also z.b. aus gesendeten 00011001 wird beim Empfänger immer 11100110.
> Dann kann man dazu etwas sagen.

Schreibe 'HALLO' und darunter 'OHMF' als Bitfolge. Fällt dir etwas auf?

von LEDzeppelin (Gast)


Lesenswert?

Bernd schrieb:

> Schreibe 'HALLO' und darunter 'OHMF' als Bitfolge. Fällt dir etwas auf?

Nee, geht nich, hab ja keine ASCII-Tabelle.
Und wenn TO dazu schon zu faul ist, werd ich das bestimmt nich machen.

von Johnny B. (johnnyb)


Lesenswert?

Jonny C. schrieb:
> Flow Control: XON/XOFF

Normalerweise verwendet man heutzutage keine Flusskontrolle mehr, weil 
die Geräte schnell genug empfangen können. Also mal versuchen 
abzuschalten.

: Bearbeitet durch User
von LEDzeppelin (Gast)


Lesenswert?

Jonny C. schrieb:

> Speed: 9600
> Data bits: 8
> Stop bits: 1
> Parity: None
> Flow Control: XON/XOFF
>

Normalerweise verwendet(e) man 8N1.
Und für 9600 kannste 2 Modems nehmen, läuft dann auch über 100km 
Telefonstrippe wenns sein muß.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Bernd schrieb:
> Schreibe 'HALLO' und darunter 'OHMF' als Bitfolge. Fällt dir etwas auf?

 Was?

von Sebastian S. (amateur)


Lesenswert?

Was ich auch mal versuchen würde ist:
9600|8|2|N
Hatte mal einen Empfänger, der - keine Ahnung warum - nach jedem Byte 
etwas Zeit zum Bremsen brauchte.

von c-hater (Gast)


Lesenswert?

Sebastian S. schrieb:

> Was ich auch mal versuchen würde ist:
> 9600|8|2|N
> Hatte mal einen Empfänger, der - keine Ahnung warum - nach jedem Byte
> etwas Zeit zum Bremsen brauchte.

Das ist völlig normal, wenn der Sender schneller ist als der Empfänger 
und obendrein der Empfänger etwas simpel gestrickt ist.

Und das Extra-Stopbit vom Sender ist wirklich ein sehr gutes Mittel, um 
dieses Problem zu lösen.

von Synchronisation (Gast)


Lesenswert?

c-hater schrieb:
> Und das Extra-Stopbit vom Sender ist wirklich ein sehr gutes Mittel, um
> dieses Problem zu lösen.

Warten als Methode der Synchronisation, soso

von Elias K. (elik)


Lesenswert?

1
Hallo: 
2
IDLE   SB   'H'    SB   'A'    SB   'L'    SB   'L'    SB   'O'    IDLE    
3
111111 10 01001000 10 01000001 10 01001100 10 01001100 10 01001111 1111111
4
5
XX SB   'O'    XX SB   'H'    XX SB   'M'    XX SB   'F'
6
xx 10 01001111 xx 10 01001000 xx 10 01001101 xx 10 01000110
7
8
SB: Stopt/Start-Bit
9
XX: (fast) beliebige Bitfolge

Ich finde keine direkte Übereinstimmung von "OHBF" in dem 
"HALLO"-Datenstrom. Stimmt die Groß-/Kleinschreibung?
Folgende Ursachen erscheinen mit den genannten Textfolgen 
unwahrscheinlich:
- Verschiebung durch verpasste Startbits
- Invertierter Datenstrom (z.B. LVDS Leitungen verdreht)
- Baudrate (sonst wäre entweder der letzte Teil der empfangen Daten 
immer 1 oder keine einzelnen Bits in den empfangenen Daten enthalten.)
- auch nicht für verlängerte IDLE-Phasen zwischen den Zeichen

Für mehr Hilfe wird es nicht ohne eine Oszillskop-Aufnahme gehen. Oder 
mit clever gewählten Zeichen, die übertragen werden.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Jonny C. schrieb:
> Bei der Einbabe des Wortes 'HALLO' wird hinten raus ein 'OHMF'.

Und was kommt raus, wenn du 'H', 'A', 'L', 'L', 'O' schickst, also immer 
schön mit Pause dazwischen?

von Johnny C. (Gast)


Lesenswert?

Elias K. schrieb:
> Hallo:
> IDLE   SB   'H'    SB   'A'    SB   'L'    SB   'L'    SB   'O'    IDLE
> 111111 10 01001000 10 01000001 10 01001100 10 01001100 10 01001111
> 1111111
>
> XX SB   'O'    XX SB   'H'    XX SB   'M'    XX SB   'F'
> xx 10 01001111 xx 10 01001000 xx 10 01001101 xx 10 01000110
>
> SB: Stopt/Start-Bit
> XX: (fast) beliebige Bitfolge

Danke dass du dir die Mühe gemacht hast.
Die aktuelle Einstellung von 9600 Baud dient nur dem Test. In der 
Zielkonfiguration sollen 115kBaud laufen.
Das Zielsystem ist ein RS232 Sender und Empfänger. Sprich ich kann nicht 
auf RS485 wechseln.
Bei der Baudrate kriege ich mit Standardkabel bereits bei 3 Metern 
Probleme in der Übertragung. Als Mittel stehen mir im Moment nur die 
LVDS Pegelwandler zur Verfügung...ich probiere mal an den Einstellungen 
zu drehen...vielleicht tut sich ja was...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Elias K. schrieb:
> Hallo:
> IDLE   SB   'H'    SB   'A'    SB   'L'    SB   'L'    SB   'O'    IDLE
> 111111 10 01001000 10 01000001 10 01001100 10 01001100 10 01001111
> 1111111

 Sender sendet keine XON/XOFF Zeichen, das macht nur der Empfänger -
 bei Bedarf natürlich.
 Ausserdem handelt es sich um vollwertige Bytes (8bit) mit Start/Stop
 und nicht um 2bit.
 XON = 0x11 / XOFF = 0x13
 Und, wie allgemein bekannt, gesendet wird LSB.

> Ich finde keine direkte Übereinstimmung von "OHBF" in dem
> "HALLO"-Datenstrom.

 Gibt es auch nicht.
 Das, was beim Empfänger ankommt ist in höchstem Maße durch Störungen
 verzerrt. Wahrscheinlich sind die Kabel oder Terminierung daran schuld.

von Sebastian S. (amateur)


Lesenswert?

>Was ich auch mal versuchen würde ist:
>9600|8|2|N
Natürlich hatte ich damals auch mit 115200 Baud gearbeitet.
Der Vorschlag 9600 kam nur deshalb, weil man ja irgendwo anfangen muss.

von g457 (Gast)


Lesenswert?

> [..] 9600 Baud [..] RS232 [..] Bei der Baudrate kriege ich mit
> Standardkabel bereits bei 3 Metern Probleme in der Übertragung.

Hast Du die Masse verbunden? RS232 geht normalerweise(tm) lockerflockig 
über >100m(!). Ansonsten häng unbedingt mal ein Oszi dran, das zeigt Dir 
den Fehler höchstwahrscheinlich sofort auf.

: Bearbeitet durch Moderator
Beitrag #5885903 wurde von einem Moderator gelöscht.
Beitrag #5885906 wurde von einem Moderator gelöscht.
von Elias K. (elik)


Lesenswert?

Marc V. schrieb:
> Und, wie allgemein bekannt, gesendet wird LSB.
Danke für den Hinweis. Das ist mir tatsächlich durchgerutscht. Die 
Datenwörter finden sich trotzdem nicht im Datenstrom wieder.
1
Hallo: 
2
IDLE   SB   'H'    SB   'A'    SB   'L'    SB   'L'    SB   'O'    IDLE    
3
111111 10 00010010 10 10000010 10 00110010 10 00110010 10 11110010 1111111
4
5
XX SB   'O'    XX SB   'H'    XX SB   'M'    XX SB   'F'
6
xx 10 11110010 xx 10 00010010 xx 10 10110010 xx 10 01100010
7
8
SB: Stopt/Start-Bit
9
XX: (fast) beliebige Bitfolge

Marc V. schrieb:
> Sender sendet keine XON/XOFF Zeichen, das macht nur der Empfänger -
>  bei Bedarf natürlich.

Ist doch gar nicht enthalten? Ein Stop- und Startbit braucht es aber 
mindestens.

Beitrag #5885936 wurde von einem Moderator gelöscht.
Beitrag #5885941 wurde von einem Moderator gelöscht.
Beitrag #5885955 wurde von einem Moderator gelöscht.
von Yalu X. (yalu) (Moderator)


Lesenswert?

LVDS ist gut für hohe Datenraten über relativ kurze Distanzen (wenige
Meter). Für deine Anwendung wäre vermutlich RS-422 das Richtige, da es
für bis zu 1200m spezifiziert ist.

Johnny C. schrieb:
> Das Zielsystem ist ein RS232 Sender und Empfänger. Sprich ich kann nicht
> auf RS485 wechseln.

Es gibt Konverter, sowohl für RS-422 als auch für RS-485. Du kannst dir
auch selber einen aus einem MAX232 und einem RS-422/485-Tranceiver
deiner Wahl bauen. Da du nur eine Punkt-zu-Punkt-Verbindung und keinen
Bus mit mehr als 2 Teilnehmern hast, ist RS-422 völlig ausreichend.
RS-485 unterscheidet sich von RS-4222 im Wesentlichen darin, dass die
Ausgänge hochohmig geschaltet werden können.

Ich würde aber trotzdem die LVDS-Leitungen mal mit dem Oszi anschauen,
vermute aber, da dir auf Grund des sehr niedrigen Signalpegels zu viele
Störungen in die Suppe spucken.

von A. S. (Gast)


Lesenswert?

Bei 9.600 sollte es mit einem normalen Nullmodem-Kabel auch über 30m 
gehen, mit 115kBaud eigentlich auch, wenn es keine Masseproblem oder so 
gibt. Welche HW benutzt Du als RS232?

Falls doch, 3m Kabel nehmen. Wenn hier auch Fehler, dann Foto vom 
Aufbau. Sonst verlängern bis die ersten Fehler kommen und analysieren.

- Masseprobleme möglich? (Andere Phase, anders Gebäude, ...)
- Baudraten-Probleme möglich?

- Flusssteuerung immer aus
- Stoppbits auf 2 setzen (gilt nur für den Sender, hilft bei 
Baudratendifferenzen)
- Zu anfang nur ein Zeichen senden, die ersten 4 Bits low, die nächsten 
high--> 0xf0 --> inlusive Start- und Stoppbit sind es dann je 5 Bits 
high und low. Wenn dann beim Empfang 0xf8 oder 0xe0 rauskommt, weisst Du 
wo der Fehler liegt. Alternativ z.B. 0x20 oder 0x30, wenn nur 
ASCII-Empfang.

- später Parity einschalten (Dann kriegst Du Fehler direkt mit)

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.