Die nicht angesteuerte RS485-Leitung lautet 0

Dies ist eine Fortsetzung von SN65176 RS485-Konkurrenz .

Ich habe das Konfliktproblem gelöst, indem ich nach dem Stoppbit eines mit dem PC verbundenen XS201A RS485-Treibers mindestens 26 us gewartet habe, bevor ich vom SN65176 gesendet habe. Es reicht jedoch nicht aus, Konflikte zu vermeiden.

Anfänglich bestand mein PIC-seitiges Terminierungsnetzwerk aus einem einzelnen differentiellen 100-Ohm-Terminator:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Sobald der XS201A mit dem Senden fertig ist, kehrt die Differenzspannung zu einem mittleren Wert zurück. Dieser Durchschnittswert ist jedoch kein 0-V-Differential, wie ich erwarten würde. Stattdessen zieht der Fahrer die Linie stark auf halbem Weg zum Markierungszustand. Dabei denkt er, dass das ein Startbit ist und gibt ein „0“-Byte aus (oder ein korruptes Teilbyte von der PIC-Seite, wenn er kurz danach zu senden beginnt).

Fahrer in den Ruhezustand

Ich habe dann ein Bias-Netzwerk erstellt, um den Zustand "Leerzeichen" (Gegenteil von Markierung) nachzuahmen, so dass:

  • Die differentielle Impedanz beträgt immer noch 100 Ohm
  • die Differenzspannung ist auf 500 mV vorgespannt
  • Die untere Zeile ist auf 1,5 V vorgespannt

schematisch

Simulieren Sie diese Schaltung

Das Hinzufügen dieses Bias-Netzwerks hat dazu geführt, dass meine Fehlerrate über ein paar tausend Bytes jetzt etwa 0,4 % beträgt (von 100 %). Trotz dieser Verbesserung gibt es jedoch keine sichtbare Änderung der Ruhezustandsspannungen - der XS201A überschreibt im Wesentlichen mein Vorspannungsnetzwerk und kehrt die Polarität des mittleren Widerstands um.

Meine Fragen sind:

  • Warum geht das XS201A im Leerlauf nicht in einen hochohmigen Zustand?
  • Warum hat der XS201A im Leerlauf eine stark aufrechterhaltene Differenzspannung ungleich Null?
  • Stimmt etwas mit meinem neuen Bias-Netzwerk nicht?
  • Sollte ich nicht erwarten, einen einfachen Abschlusswiderstand anstelle eines Bias-Netzwerks haben zu können, zumal der XS201A behauptet, ein ausfallsicheres Bias-Netzwerk eingebaut zu haben?
500 mV ist für einige Empfänger nicht genug Vorspannung.
Eine Leerzeile sollte wie eine Markierung aussehen, nicht wie ein Leerzeichen.
Wenn die Leerlaufleitung gehen darf, sendet der XS201A grundsätzlich ein '0'-Byte.
Bias resitros R1 und R3 sollten gleich sein, wie 680 Ohm. Auch der Abschluss, 120 Ohm
Nein, es sollte nicht mit 120 Ohm abgeschlossen werden, da es sich um ein 100-Ohm-Kabel handelt.

Antworten (3)

RS-485 hat eine definierte Differenzspannung sowohl am Mark als auch am Space. Der Ruhezustand liegt vor, wenn die Spannung V_diff –0,2 V < V_diff < 0,2 V ist; Dies geschieht, indem der Sender in einen Hi-Z-Zustand versetzt wird, normalerweise durch Steuern des RTS-Signals vom UART. RTS wird dann verwendet, um den Sender ein-/auszuschalten, von Hi-Z auf den definierten Spannungspegel für Mark/Space.

Wenn das der Fall ist, dann ist dieser Adapter nicht zu spezifizieren, weil er Vdiff im Leerlauf nicht so niedrig setzt. Ich werde es aber nochmal mit RTS versuchen.

Alte Frage, aber...

Es gibt so etwas wie eine ausfallsichere Vorspannung, bei der die Leitungen leicht in einem von nur zwei gültigen Zuständen gehalten werden , in denen sich das verdrillte Paar befinden sollte.

Wenn dies bei Ihrem XS201A auftritt, könnte dies bedeuten, dass es tatsächlich wie vorgesehen funktioniert. Die unerwarteten Spannungen könnten durch eine hackige DC-DC-Wandlung erklärt werden, wie sie es bei den alten PIC/AVR-Programmierern taten. Wenn das ein Problem ist, würde ich empfehlen, sich einen geeigneten Adapter mit eigener Stromversorgung zu besorgen.

Eine ausführlichere Erläuterung der ausfallsicheren Vorspannung auf RS485 finden Sie in diesem Ti-Anwendungshinweis .

Um diese Probleme zu umgehen, habe ich den XS201A schließlich ganz aufgegeben. Es hat keine richtige Hardware-Signalisierung und seine Bias-Eigenschaften waren problematisch.