Über USB-RS422 Adapter mit Platine kommunizieren, TxD- stört Kommunikation

OP #7842915
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

OP #7842983
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

#7843482
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.

Gast #7843491
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.

#7843525
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.

OP #7843595
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?

OP #7843612
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?

#7843647
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 Ω.

#7843674
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.

#7843679
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.

OP #7843687
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?

#7843712
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.

#7843731
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.

#7843782
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.)

Gast #7846097
Lesenswert?

Alex B. schrieb:

Funktioniert wenn TXD - mit GND verbunden ist, sonst nicht.

Das ist dann aber weder RS485 noch RS422. Da du jedoch darauf bestehst, muss es kaputtes RS422 sein.

Zum Vergleich: Ein Auto, dass nur fährt, wenn man ein Rad blockiert, ist ebenso kaputt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren