Forum: PC Hard- und Software Über USB-RS422 Adapter mit Platine kommunizieren, TxD- stört Kommunikation


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 Alex B. (alex_b486)


Lesenswert?

Hi, geht um folgendes:

Ich habe eine Platine mit RS422 Schnittstelle über die man die Platine 
konfigurieren und auslesen kann.

RxD +/-, TxD+/- und GND an einen USB RS422 Adapter auf CH340 Basis 
verbunden und getestet.

Kommunikation funktioniert nicht, es kommen nur unbrauchbare Bytes von 
der Platine.
Zudem ist die RxD LED auf dem Adapter permanent an.

Sobald man TxD- abklemmt funktioniert die Kommunikation (soweit sie eben 
funktionieren kann wenn man mangels TxD nicht senden kann). Die RxD LED 
blinkt dann im Sekundentakt und ebenfalls im Sekundentakt übermittelt 
die Platine brav ihren Zustand.

Sobald man TxD- wieder anklemmt leuchtet sofort die RxD LED am Adapter 
wieder permanent und es kommen nur noch unbrauchbare Bytes oder einfach 
gar nichts von der Platine.

So kann man natürlich nicht senden.

Bei älteren Platinen des gleichen Herstellers, gleiches 
Kommunikationsprotokoll, ähnliche Firmware funktioniert der Adapter in 
der gleichen Konfiguration einwandfrei, ohne die permanent leuchtende 
RxD LED und den Kommunikationsproblemen.

Habe nun einen FTDI Adapter bestellt.

Hat jemand eine Ahnung woran das ungefähr liegen kann und ob 
voraussichtlich der FTDI Adapter besser funktioniert?

Mfg

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Messe die Ruhepegel von RxD und TxD. Kontrolliere ob GND wirklich 
verbunden ist. Hat dein Adapter vielleicht einen Umschalter auf RS485?

von Alex B. (alex_b486)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Messe die Ruhepegel von RxD und TxD. Kontrolliere ob GND wirklich
> verbunden ist.

Wenn die Platine verbunden ist, bei der das Problem besteht:
0.230V zwischen TxD+ und -,
3.220V zwischen RxD+ und -

Bei einer älteren Platine des gleichen Herstellers, hier funktioniert 
das Setup:
2.475V zwischen TxD+ und -,
2.457V zwischen RxD+ und -

Platine ist definitiv nicht defekt. Mehrere baugleiche getestet, 
gleiches Problem.

GND ist verbunden.

Sherlock 🕵🏽‍♂️ schrieb:
> Hat dein Adapter vielleicht einen Umschalter auf RS485?

Nein

: Bearbeitet durch User
von Clemens L. (c_l)


Lesenswert?

Alex B. schrieb:
> 0.230V zwischen TxD+ und -,
> 3.220V zwischen RxD+ und -

Das sieht aus wie RS-485.

Hat diese ominöse Platine einen Namen? Eine Anleitung? Einen Schaltplan? 
Und wenn nicht, miss mal, welche Anschlüsse mit welchen Pins des 
Transceiver-Chips verbunden sind, und wo Terminierungs-Widerstände 
sitzen.

von Harald K. (kirnbichler)


Lesenswert?

Clemens L. schrieb:
> Das sieht aus wie RS-485.

RS422 macht an dieser Stelle exakt dasselbe. Der Unterschied zwischen 
den beiden ist, daß RS422 zwei Adernpaare verwendet, eines für die 
Sende- und eines für die Empfangsrichtung, und daher im 
Vollduplexbetrieb genutzt werden kann. RS485 benutzt nur ein Adernpaar, 
muss deswegen zwischen Sende- und Empfangsbetrieb umgeschaltet werden 
und ist daher nur im Halbduplexbetrieb nutzbar.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Alex B. schrieb:
> Wenn die Platine verbunden ist, bei der das Problem besteht:
> 0.230V zwischen TxD+ und -,

Das ist offensichtlich nicht gut. Passt aber dazu:

> Sobald man TxD- wieder anklemmt leuchtet sofort
> die RxD LED am Adapter wieder permanent

Wenn du den USB Adapter nochmal abtrennst, welche Spannung liefert deine 
Platine dann am TxD Ausgang?

> Platine ist definitiv nicht defekt.

Warum denkst du das? Mit einer anderen Platine geht es ja und du misst 
ganz andere Spannungen.

: Bearbeitet durch User
von Daniel F. (foxi_the_daywalker)


Lesenswert?

Harald K. schrieb:
> Clemens L. schrieb:
>> Das sieht aus wie RS-485.
>
> RS422 macht an dieser Stelle exakt dasselbe. Der Unterschied zwischen
> den beiden ist, daß RS422 zwei Adernpaare verwendet, eines für die
> Sende- und eines für die Empfangsrichtung, und daher im
> Vollduplexbetrieb genutzt werden kann. RS485 benutzt nur ein Adernpaar,
> muss deswegen zwischen Sende- und Empfangsbetrieb umgeschaltet werden
> und ist daher nur im Halbduplexbetrieb nutzbar.

Da ich mich darüber schon häufig mit Kunden streiten musste, RS485 gibt 
es auch in FullDuplex, also ein Adernpaar für Senden und ein Adernpaar 
für Empfangen.
Die Norm EIA-485 sagt nur das ein Adernpaar für das invertierte und 
nicht-invertierte Signal verwendet wird.
Chips für RS485 haben aber auch einen Driver-Enable und können(!) 
deshalb auch in Half-Duplex mit einem Adernpaar betrieben werden.
Bei RS485 sind die Treiber bspw. stärker, sodass man ohne Probleme beide 
Enden terminieren kann.

Zu 230mV auf dem TX-Pärchen:
Das ist ein ganz schwaches High. Also möglicherweise wird das Signal 
viel zu stark belastet oder der Treiber ist aus oder kaputt.

von Harald K. (kirnbichler)


Lesenswert?

Daniel F. schrieb:
> Da ich mich darüber schon häufig mit Kunden streiten musste, RS485 gibt
> es auch in FullDuplex, also ein Adernpaar für Senden und ein Adernpaar

Das ist dann kein RS485, sondern RS422.

Vielleicht musstest Du Dich deswegen häufig streiten, weil Du daneben 
liegst? Schon mal in Erwägung gezogen?

von Alex B. (alex_b486)


Lesenswert?

Clemens L. schrieb:
> Hat diese ominöse Platine einen Namen? Eine Anleitung?

Alles proprietäre interne Sachen, da gibt's nichts zu.

Sherlock 🕵🏽‍♂️ schrieb:
> welche Spannung liefert deine Platine dann am TxD Ausgang?
2.950V an TxD-, 2.693 an TxD+

Sherlock 🕵🏽‍♂️ schrieb:
> Warum denkst du das? Mit einer anderen Platine geht es ja und du misst
> ganz andere Spannungen.

Mehrere Platinen unterschiedlicher Art dieses Herstellers haben alle 
dieses "Problem". Auch welche im laufenden Betrieb an denen regelmäßig 
über diesen Anschluss gearbeitet wird. Alle Platinen die nicht älter als 
ein paar Jahre sind.

Zudem: ein Fernüberwachungsgerät, ebenfalls etwas internes von diesem 
Hersteller, kann über besagten Anschluss problemlos mit der Platine 
kommunizieren. Da habe ich ähnliche Spannungen bei der Verbindung. 
Zwischen TxD+ und -, 0.271V im Idle Zustand, während der laufenden 
Kommunikation 1.929V

Ob der FTDI Adapter das hinbekommt? Oder doch Widerstände dazu?

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Alex B. schrieb:
> 2.950V an TxD-, 2.693 an TxD+

Also ist die Platine kaputt.

von Harald K. (kirnbichler)


Lesenswert?

Alex B. schrieb:
> Mehrere Platinen unterschiedlicher Art dieses Herstellers haben alle
> dieses "Problem".

Kann man den RS485/422-Treiberbaustein auf der Platine identifizieren?

Darfst Du ein Bild der Platine zeigen?

von Alex B. (alex_b486)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Also ist die Platine kaputt.

Nochmal: alle Platinen dieses Herstellers ab einem gewissen Baujahr 
haben dieses Phänomen und das interne Fernüberwachungsgerät welches an 
genau diesem Anschluss angeschlossen wird kann trotzdem problemlos mit 
der Platine kommunizieren.

Harald K. schrieb:
> Kann man den RS485/422-Treiberbaustein auf der Platine identifizieren?

7LB180 17AVV2M

Harald K. schrieb:
> Darfst Du ein Bild der Platine zeigen?

Eher schlecht...

Ich habe noch mal ein wenig gemessen:

3.825V zwischen TxD + und - am Fernüberwachungsgerät wenn KEINE Platine 
verbunden ist und sobald man sie verbindet (IDLE sodass keine 
tatsächliche Kommunikation stattfindet) sind es 1.930V.
Vielleicht ist ein Pull-Up Widerstand die Lösung?

von Harald K. (kirnbichler)


Lesenswert?

Alex B. schrieb:
> Eher schlecht...

Alex B. schrieb:
> Harald K. schrieb:
>> Kann man den RS485/422-Treiberbaustein auf der Platine identifizieren?
>
> 7LB180 17AVV2M

https://www.ti.com/lit/ds/symlink/sn65lbc180.pdf

Alex B. schrieb:
> Vielleicht ist ein Pull-Up Widerstand die Lösung?

Es gibt das Konzept, RS485 mit einer Vorspannung zu betreiben, d.h. 
einem Pullup an + und einem Pulldown an -.

Diese Pullups/downs können recht hochohmig werden; eine Anwendung, mit 
der ich zu tun habe, verwendet da 27k (gegen 5V bzw. Masse). Einen 
Abschlusswiderstant zwischen + und - gibt es auch noch. Das sind afaik 
üblicherweise 120 Ω.

von Clemens L. (c_l)


Lesenswert?

Alex B. schrieb:
> ein Fernüberwachungsgerät, ebenfalls etwas internes von diesem
> Hersteller, kann über besagten Anschluss problemlos mit der Platine
> kommunizieren. Da habe ich ähnliche Spannungen bei der Verbindung.
> Zwischen TxD+ und -, 0.271V im Idle Zustand, während der laufenden
> Kommunikation 1.929V

Auch das sieht aus wie RS-485 (Halbduplex über ein Adernpaar; das andere 
wird gar nicht benutzt).

> Ob der FTDI Adapter das hinbekommt?

Nein; der RS-422-Adapter kann sein TxD nicht abschalten. Du brauchst 
einen RS-485-Adapter.

von Alex B. (alex_b486)


Lesenswert?

Clemens L. schrieb:
> Auch das sieht aus wie RS-485 (Halbduplex über ein Adernpaar; das andere
> wird gar nicht benutzt).

Der RS422 Anschluss an der Platine hat einen DB9 Stecker. Bei der 
Verbindung mit dem Fernüberwachungsgerät sind es am anderen Ende 
Schraubklemmen.

Da sind entsprechend auch RxD +/- und TxD +/- verbunden.

von Flip B. (frickelfreak)


Lesenswert?

Wenn der Bias schon negativ ist, ist vielleicht bei der neuen Platine 
einfach die beschriftung A/B TX+/TX- vertauscht?  Oder der (H)ersteller 
hat sich die verkehrte Bus-ruhepolarität ausgedacht, um sich seinen 
arbeits- oder Zuliefervertrag zu sichern. Auf jeden fall ist da etwas 
nicht standardkonform.

Allerdings sind einige erhältliche Adapter für RS485 mit vermurkster 
"automatischer" sendeumschaltung auch alles andere als standartkonform, 
auch wenn sie zum testen auf dem labortisch meistens funktionieren. Es 
kann also schon sein, dass ein besserer Adapter hilft, den muss die 
software aber auch richtig ansteuern (z.b. TXEN über RTS)

In meiner Anfängerzeit hatte auch ich schlechten erfahrungen mit RS485, 
war richtig enttäuscht von diesem unzuverlässigen zeug, bis ich in 
meiner auf alle Platinen kopierten Schaltung die Bias-Richtung 
korrigiert hatte.

Kannst du deinen Adapter öffnen? Dann zeige mal Bilder von vorder und 
Rückseite der Platine. Genauso von der schaltung auf der Gegenseite. Als 
nächstes einmal einen Loopback/Echo test machen und dann die 
Leiterplatte mit festem Signalpegel ansteuern und beobachten, wann der 
fehler auftritt. Beachte auch, dass RS422 nur Punkt-zu-Punkt geht, also 
das Fernüberwachungsgerät muss getrennt werden.

: Bearbeitet durch User
von Alex B. (alex_b486)


Lesenswert?

Flip B. schrieb:
> A/B TX+/TX- vertauscht?

Schon getestet, klappt nicht.

Flip B. schrieb:
> (H)ersteller hat sich die verkehrte Bus-ruhepolarität ausgedacht, um
> sich seinen arbeits- oder Zuliefervertrag zu sichern.

In diese Richtung geht es wahrscheinlich.

Alles was sonst noch angesprochen wurde werde ich morgen ausprobieren, 
falls der bis dahin eintreffende FTDI Adapter keine Abhilfe schafft.

Ganz grundsätzlich müsste sich das Problem notfalls mit Pull-Up und 
Pull-down Widerständen lösen lassen, oder?

von Flip B. (frickelfreak)


Lesenswert?

zuerst mal diese widerstände auf dem adapter deaktivieren oder auslöten. 
hm aber eigentlich ist ja bei 422 der treiber immer aktiv und damit die 
spannung festgelegt. Müsste man die schaltung des adapters anschauen, 
wie der für 422 geschaltet ist.

: Bearbeitet durch User
von Stefan S. (energizer)


Lesenswert?

Das muss bei RS422 nicht zwangsweise so sein. Es gibt Busse mit 2 
Aderpäärchen auf dem der Master auf dem einen und alle Slaves auf dem 
anderen Päärchen senden. Somit gibt es auch RS422 Interfaces bei denen 
der TX Kanal nicht immer niederohmig ist, was genau zu diesem Problem 
führen kann. Failsafewiderstände könnten da helfen, aber genaueres kann 
man nur mit Schaltplänen und messen sagen.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Alex B. schrieb:
> Ganz grundsätzlich müsste sich das Problem notfalls mit Pull-Up und
> Pull-down Widerständen lösen lassen, oder?

Wir kennen die Schgaltung nicht, wissen aber schon, dass sie sich nicht 
normal verhält. Da ist jede Mutmaßung sinnlos.

von Uwe (uhi)


Lesenswert?

Ich bin ein Fan von "Erst messen, dann überlegen und danach 
weiterbasteln."
Heißt: mit dem Oszi in Idle, Mark und Space die Pegel feststellen, im 
Gutfall und im Schlechtfall.
Dann überlegen, wo die Unterschiede herkommen. Und zum Schluss die 
Unterschiede beheben.

von Clemens L. (c_l)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Wir kennen die Schgaltung nicht, wissen aber schon, dass sie sich nicht
> normal verhält.

Sie verhält sich normal für RS-485. (0,2 V für einen Halbduplex-Bus, auf 
dem gerade kein Sender aktiv ist, sondern nur die Failsafe-Widerstände; 
irgendwas über 1,5 V für Signale mit Terminierung; 3,3 V für Signale, 
die an unbenutzte Anschlüsse ohne Terminierung gehen.)

von Alex B. (alex_b486)


Lesenswert?

Des Rätsels Lösung ist gefunden. Zumindest funktioniert es jetzt: TXD - 
am Adapter direkt mit GND der Platine verbinden. Dann leuchtet die RxD 
LED am Adapter nicht mehr permanent und die Kommunikation funktioniert 
wie sie soll. Werde das langfristig dann mit einem Widerstand 
verbessern.

von Harald K. (kirnbichler)


Lesenswert?

Das klingt kaputt.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Also ist die Platine kaputt.

von Alex B. (alex_b486)


Lesenswert?

Nein, ist nichts kaputt. Getestet an mehreren Platinen des Herstellers. 
Funktioniert wenn TXD - mit GND verbunden ist, sonst nicht.
Sowohl mit FTDI als auch CH340 Adapter.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Alex B. schrieb:
> Funktioniert wenn TXD - mit GND verbunden ist, sonst nicht.

Und genau das ist eben kaputt.

von Flip B. (frickelfreak)


Lesenswert?

Flip B. schrieb:
> ist vielleicht bei der neuen Platine
> einfach die beschriftung A/B TX+/TX- vertauscht?

einfach mal abgleichen mit der alten version.

Ist mir wie gesagt auch mal passiert, beschriftungen habe ich meist auf 
einem eigenen layer und getrennt vom footprint des steckers.

: Bearbeitet durch User
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.