RS485-Terminierung: AC + ausfallsicher + parallel + bidirektional

Da ich weiß, dass ich meine RS485-Schaltung verfeinern muss, habe ich gelesen. Ich habe eine Reihe spezifischer Fragen und hoffe, dass Sie mir nachsichtig sind, wenn ich beschreibe, wie ich versucht habe, eine Bewerbungsnotiz durchzugehen.

Hier sind einige Grundlagen des seriellen Kommunikationssystems:

  • RS485
  • 115,2 kBaud, hauptsächlich begrenzt durch die Mikrocontroller
  • Halbduplex (1 differentielles Paar plus Masse)
  • Worst-Case-Kabellänge von Anfang bis Ende von ~80 m
  • Ungünstigste Stub-Länge von vielleicht 2 cm aufgrund der PCB-Leiterbahnen; keine Kabelstummel
  • Gänseblümchenkette
  • Multipoint-Geräteanzahl von typischerweise 8, wahrscheinlich nicht mehr als 20
  • Etwas, aber nicht viel, BER-Toleranz aufgrund der Prüfsumme im Signalisierungsprotokoll
  • Alle Slave-Geräte sind SN65176 ; der Master ist ein USPTL4 .

Angenommen, das von mir verwendete Kabel ist Belden 3106A , da es gut spezifiziert ist:

  • Wellenwiderstand Zo = 120 Ohm
  • Ausbreitungsgeschwindigkeit VP = 78 %

Meine Terminierungsschaltung hat einige Iterationen durchlaufen:

  1. Einfache bidirektionale parallele Terminierung. Funktioniert überhaupt nicht, da der ausfallsichere Betrieb unterbrochen und falsche Startbits erzeugt werden.
  2. Bidirektionale Terminierung, wobei die Master-Seite eine einfache parallele Terminierung hat und der letzte Slave eine Schaltung hat, wie in AN-903 "Power Termination" beschrieben. Funktioniert immer noch nicht: Die parallele Terminierung am Master belastet den Master mit DC zu stark und unterbricht den Failsafe-Betrieb.
  3. Abgemeldeter Master, letzter Slave mit „Power Termination“ abgeschlossen. Es sieht aus wie das:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Es funktioniert, ist aber aus mindestens zwei Gründen nicht ideal: Es gibt immer noch viel DC-Last; und die Masterseite ist nicht impedanzangepasst/terminiert.

Als bessere Alternative betrachte ich TI AN-903 "A Comparison of Differential Termination Techniques". Basierend auf Abschnitt 2 "Unterbrochen",

Niedrige Geschwindigkeit ist im Allgemeinen dadurch gekennzeichnet, dass entweder Signalisierungsraten unter 200 kbit/s vorliegen oder wenn die Kabelverzögerung (die Zeit, die ein elektrisches Signal benötigt, um das Kabel zu durchqueren) wesentlich kürzer ist als die Bitbreite (Einheitsintervall) oder wenn die Signalanstiegszeit ist mehr als das Vierfache der Ausbreitungsverzögerung in einer Richtung des Kabels (d. h. keine Übertragungsleitung).

Da 115,2kBaud < 200kBaud ist, ist das erste Kriterium erfüllt. Für das zweite Kriterium zur Berechnung der Kabelverzögerung:

(80 m) / 0,78 c = 342 ns

Im Vergleich zur Bitbreite:

1 / 115,2 kBaud = 8,68 μs

Auch dieses Kriterium ist also problemlos erfüllt. Dies bedeutet, dass ich das Kabel möglicherweise als keine Übertragungsleitung behandeln könnte und keine Impedanzanpassung / Terminierung benötige. Ich möchte jedoch aus folgenden Gründen trotzdem eine Abschlussschaltung entwickeln:

  • Es kann billig gemacht werden
  • Es ist eine Lerngelegenheit
  • Es erhöht die Übertragungsqualität, wenn auch nicht wesentlich
  • Falls die Kabelstrecke einmal stark verlängert werden muss, überlebt das System
  • Das TI-Datenblatt empfiehlt es uneingeschränkt:

Die Leitung sollte an beiden Enden in ihrem Wellenwiderstand RT = ZO abgeschlossen werden. Stichlängen abseits der Hauptleitung sollten so kurz wie möglich gehalten werden.

Ich möchte eine modifizierte Version von Abschnitt 5, AC-Terminierung, verfolgen. Angesichts meiner Systemparameter ist RT = 120 Ohm. Für CT heißt es in der App-Note:

Andererseits wird CT so ausgewählt, dass es gleich der Umlaufverzögerung des Kabels dividiert durch die ZO des Kabels ist. CT ≤ (Kabelumlaufzeitverzögerung) / ZO

Round-Trip-Kabelverzögerung = 2 * 342 ns = 684 ns

CT ≤ 684 ns / 120 Ohm

CT ≤ 5,7 nF

Wählen Sie CT = 5,6 nF, die nächste Kapazität in der Reihe E24 (5 %).

Der App-Hinweis sagt auch:

Ferner sollte die resultierende RC-Zeitkonstante kleiner oder gleich 10 % des Einheitsintervalls (TUI) sein.

(120 Ohm) (5,6 nF) ≤ 0,1 * 8,68 μs

672 ns ≤ 868 ns

Dieser Kondensator sieht also in Ordnung aus. Ich sehe jedoch ein (großes?) Problem, das in der App-Note nicht erwähnt wird. Der Kondensator in Reihe mit dem Anpassungswiderstand macht die Impedanz des Anpassungsnetzwerks sehr ungleich der charakteristischen Impedanz des Kabels.

f = 115,2 kBaud / 2 = 57,6 kHz

120 Ohm + 1/2πj/57,6 kHz/5,6 nF = 120 + 493 j Ohm

Sollte ich nicht auch eine Serieninduktivität hinzufügen, um diese Reaktanz aufzuheben?

493 Ohm / 2π / 57,6 kHz = 1,36 mH

Verwenden Sie den E24-Wert 1,3 mH. Dann:

120 Ohm + 1/2πj/57,6 kHz/5,6 nF + 2πj*57,6 kHz*1,3 mH = 120 - 22,9 Ohm

Diese Reaktanz kann mit einer präziseren Induktivität viel näher an Null gebracht werden.

Wenn ich eine Übertragungsleitung mit denselben Eigenschaften wie Belden und bidirektionalem RC-AC-Abschluss simuliere , scheint sie recht gut zu funktionieren. Wenn ich jedoch den Induktor hinzufüge, um die kapazitive Reaktanz aufzuheben, gibt es ein schreckliches Klingeln.

Angesichts all der oben genannten Punkte lauten meine Fragen:

  • Ist meine Berechnung und meine Interpretation des Anwendungshinweises korrekt?
  • Warum zeigt das AN keine bidirektionale AC-Terminierung? Ist es zulässig, an beiden Enden einer Mehrpunktleitung einen AC-Abschluss zu haben?
  • Warum berücksichtigt das AN bei der Beschreibung der AC-Terminierung keine kapazitive Reaktanz?
  • Der PC-seitige RS-485-Transceiver verfügt für einen ausfallsicheren Betrieb über einen nicht entfernbaren 4,7-k-Pullup auf Leitung A und einen 4,7-k-Pulldown auf Leitung B. Wäre dies mit der AC-Terminierung direkt daneben kompatibel?
Warum die alten 176er Teile? Ich würde selbst etwas mit besseren integrierten Ausfallsicherungen verwenden ...
@ThreePhaseEel Weil sie billig waren. Ich wäre bereit, bei einem ausreichend starken Fall einen Austausch der Teile in Betracht zu ziehen.

Antworten (3)

Dies ist eine interessante Frage :-) Daumen hoch, dass Sie gründlich darüber nachgedacht haben - ich sehe, dass viele Leute immer noch RS485 verwenden, aber kaum jemand versucht, die Terminierung zu verstehen (eigentlich kennt kaum jemand die grundlegenden Lehrbuchregeln). Verstehe ich auch richtig, dass Sie versucht haben, die Linie mit einem Zielfernrohr zu beobachten? Super, das macht auch kaum jemand.

Ich habe neulich selbst eine Übung zur RS485-Terminierung gemacht ... Ich habe die AC-Terminierung nicht berücksichtigt (nicht im üblichen differenziellen Sinne), aber ich habe mich auf die Rolle der Bezugserde, Vorspannung ("ausfallsicher") und Gemeinsamkeit konzentriert Modusbeendigung - da dies einen Unterschied zu machen schien.

Der einzige klassische Mangel von RS485 ist die Tatsache, dass die Knoten per Definition nicht garantiert erdisoliert sind. Twisted-Pair-Ethernet ist aus diesem einen Grund so viel einfacher zu handhaben.

Wenn ich mir Ihren Nur-R-Terminator mit Failsafe in dem von Ihnen geposteten Schaltplan ansehe, finde ich seine Asymmetrie faszinierend und bizarr. Ich schätze, dass der Nettodifferenzwiderstand 100 Ohm beträgt, aber ich bin nicht damit einverstanden, dass die B-Leitung nur mit 24 Ohm an GND gebunden ist ... wie sind Sie zu diesem asymmetrischen Aufbau gekommen? Ich glaube, dass die RX- und TX-Pins in den 485-Transceivern ziemlich gleichwertig sind. Ich würde die Vorspannung symmetrisch halten.

Im Gegensatz zu anderen Postern hier würde ich nicht versuchen, nach Transceivern mit integrierten (ausfallsicheren) Vorspannungswiderständen zu suchen. Die Knoten sollten beim Hören ein hohes Z haben, die Ausfallsicherheit (und Terminierung!) sollte eine Funktion des Busses sein und nicht ein einzelner Transceiver. Um zu erreichen, dass die A/B-Eingänge an jedem einzelnen Knoten immer "innerhalb des Ballparks" liegen, sollten Sie eine Referenzerde verwenden - mit einem 100-Ohm-Widerstand an jedem Knoten, wie manche sagen würden, oder direkt angeschlossen. Wenn das lokale Bodenwobbeln zu groß ist, verwenden Sie eine Isolierung. Das Vorspannen an jedem Knoten bringt Sie nicht weiter. Sofern Ihre Referenzmasse nicht isoliert (schwebend) ist, sind alle Vorspannungswiderstände einfach zu schwach, um harte Erdschleifen zu überwinden. Und wenn die Abschirmung des Signalpaars individuell und eng ist, dh die Übertragungsleitung eher einem Twinax ähnelt,eine geeignete Bezugsmasse! da die Abschirmung effektiv ein dritter Leiter im Sinne der HF-Energieübertragung ist. Jeder Leiter, den Sie nur an einem Ende erden, wird bei seiner eigenen Wellenlänge zu einer Antenne.

Ich habe zuvor eine AC-Terminierung (RC) mit Koaxialleitungen (für IRIG) ausprobiert. Sie sollten sich mit einem Oszilloskop ansehen, was das tatsächliche Ergebnis ist - am Terminator und an allen Transceiver-Knoten auf halber Strecke. Versuchen Sie, mit zu viel und zu wenig Kapazität zu experimentieren.

Ihre allgemeinen Formeln für die Kondensatorauswahl scheinen richtig zu sein, Sie argumentieren in die richtige Richtung. Und ich bin der Meinung, dass zumindest die RC-Terminierung (AC-fokussiert) selbst bei "zu kurzen und zu langsamen" Leitungen angemessen ist, da die UARTs mehrere Abtastpunkte innerhalb einer einzigen Bitlänge haben können oder wenn es nur eine einzige Abtastung gibt Punkt, man kann nicht genau wissen, wo es ist ...

Abgesehen davon ist mein allgemeines Gefühl: Sie sollten sich nicht so sehr um die DC-Last kümmern. Die Sender (Transceiver-ICs und ihre Netzteile) sind grundsätzlich so ausgelegt, dass sie rund um die Uhr 60 Ohm Gleichstrom an ihrem Ausgang verarbeiten können. Und ein gerader DC-Abschluss an beiden Enden der Übertragungsleitung ist die beste Wahl.

Wenn Ihr TX / RX-Muster Vollduplex ist und der Sender immer eingeschaltet ist, hat Ihr Anliegen möglicherweise etwas Anerkennung - wenn OTOH das Kommunikationsmuster "spärlich" ist, dh die Transceiver die meiste Zeit in High Z verbringen, ist dies nicht der Fall Es macht nicht viel Sinn, von DC-Lasten besessen zu sein.

Und in einer Übertragungsleitung sollte auch der Sender impedanzangepasst sein! In verschiedenen HF-Systemen erfolgt dies normalerweise durch Reihenabschluss am Sender. Ich bin mir bei RS485 nicht genau sicher (FETs schalten schwer auf die Stromschienen), insbesondere wenn Ihr Sender immer eingeschaltet ist. Überprüfen Sie dies möglicherweise mit einem Oszilloskop mit und ohne Terminierung "am Senderende" (ob Ihr "always on master" wirklich ist an einem TML-Ende), aber wie ich bereits sagte, machen Sie sich keine allzu großen Sorgen über die Belastung durch den zweiten Abschlusswiderstand. Als Hausaufgabe sollte ich wahrscheinlich ein Zielfernrohr nehmen und einen 485-Sender an einem Ende der Leitung beobachten, der vom aktiven Zustand in den hohen Z wechselt :-)

Übrigens, Sie haben sich mit einem USB/485-Dongle (Ihrem Master-Knoten) verbunden, aber das ist eine komplette Schaltung in einer undurchsichtigen Plastikbox, wir kennen die Details seiner inneren Verkabelung nicht. Ich würde wetten, dass Sie darin einen SN75176 oder ein moderneres Arbeitsgerät finden. Und es wird wahrscheinlich zu High Z zurückkehren, wenn der FIFO und das "Sender-Halteregister" jemals leer werden.

===BEARBEITEN===

Für eine perfekte HF-TML-Impedanzanpassung am Sender müsste der TX-Chip die Stromschienen über einen lokalen Widerstand von 60 Ohm Differenz auf die TML schalten, oder in der realen Welt 30 Ohm, die in Reihe mit jedem Pin (A/B ). Dies ist auch als Kurzschlussschutz (Strombegrenzung) sinnvoll. Beim Blick in das Datenblatt des SN75176 kann ich keinen expliziten Serienabschluss erkennen, weder in Reihe mit den Line-Ausgängen noch mit einzelnen Totem-Schaltern - aber ich erinnere mich, dass die Signalamplitude etwas abnimmt, wenn Sie den ersten und den zweiten Abschluss anbringen. Das Datenblatt erwähnt eine Strombegrenzung von 60 mA während des Sendens an den A / B-Anschlüssen - wiederum unter Berücksichtigung des internen Schemas müsste dies eine inhärente zerstörungsfreie Grenze der Totemschalter sein (oder vielleicht sind sie tatsächlich Stromquellen). Beachten Sie, dass alle Aktivitäten, die in den Ausgangstotems des Chips stattfinden, durch die 0/+5-V-Stromschienen begrenzt sind. Volle 5V an 120 Ohm würden 83 mA bedeuten. Bei 60 mA beträgt die Diff-Ausgangsamplitude an einer ordnungsgemäß abgeschlossenen Leitung 60 Ohm * 60 mA = 3,6 VIe. In diesem Szenario beträgt die effektive Differenzimpedanz des Chips 23 Ohm (1,4 V links bis +5 V, /60 mA).

"Wie bist du zu diesem asymmetrischen Setup gekommen?" - um zu versuchen, die Spannungspegel anzupassen, die ich vom Master-Gerät gesehen habe, die ebenfalls asymmetrisch waren.
„Wenn Ihr TX/RX-Muster Vollduplex ist“ – ist es nicht; Es ist immer Halbduplex
Asymmetrische Wellenformen? Das ist neugierig. Ich empfehle, dass Sie sich nicht um eine leichte Asymmetrie kümmern. Habe das auch schon gesehen. Transceiver verschiedener Hersteller lassen sich anscheinend um einige Prozent in diese oder jene Richtung „kippen“. Und wenn Ihre lokale Referenzerde von einer Netzrückführung abgeleitet wird, kann das „Wackeln“ der Erde auf einer Oszilloskopanzeige erscheinen, wenn die beiden Knoten ihre Ausgänge „DC-verschoben“ gegeneinander haben (oder vielmehr „auf einer Sinuswelle reiten“): -) Es macht keinen Sinn, Pin A oder B durch einen zu kleinen Widerstand mit dem ref.GND "kurzzuschließen".
Die Asymmetrie war nicht gering, sie war signifikant. Der Meister hat Markierungen und Zwischenräume sowohl über dem Boden, Markierungen leicht über dem Boden als auch Zwischenräume auf halbem Weg zu 5 V angebracht (ich kann mich nicht an die genauen Werte erinnern).
Wenn die von einem Transceiver-Chip übertragene Wellenform stark beeinträchtigt ist, überprüfen Sie den Transceiver-Chip Ihres Dongles. Ich habe gesehen (und Berichte darüber gelesen), dass Transceiver-Chips in einigen USB/485-Dongles von Markenherstellern ab Werk defekt waren. Scheinbar gefälschte Chips. Nach dem Austausch des 8-beinigen Transceivers war alles in Ordnung. Diese Art von Problem neigt dazu, mit einem (oder zwei) angeschlossenen 120-Ohm-Terminator vollständig aufzublühen. Wenn Sie ein Oszilloskop haben, können Sie sich glücklich schätzen. Viele 485-Praktizierende haben keine.
Nur um sicherzugehen: Die Transceiver werden mit +5 V gegen lokales GND (das auch als gute Referenzmasse dient) versorgt. Und der Ausgang der Transceiver, jeder Pin von A/B, bewegt sich zwischen +5 V und GND. Dh die beiden Ausgänge liegen beim Senden immer über dem lokalen GND. Sie können sich manchmal nur unter GND bewegen, wenn Sie die Übertragung eines anderen Knotens empfangen und die Referenzpotentiale zwischen den beiden Knoten unterschiedlich sind = der GND des sendenden fernen Knotens ist im Moment niedriger als Ihr lokaler GND an dem Knoten, an dem Sie sich befinden Aufpassen.
Ich habe einige Oszillogramme von intakten Transceivern (und verschiedenen Arten von Busabschlüssen) auf meiner oben genannten Webseite. Wenn Sie einige Oszillogramme haben, die Ihrer Meinung nach fehlerhaft sind, posten Sie sie vielleicht hier :-)

Ich glaube, du hast komplizierte Dinge überstanden. Warum nicht einen Abschlusswiderstand 120 Ohm an beiden Enden verwenden, es ist einfach und am zuverlässigsten.

Wie Sie sagten, haben Sie keine Stichleitungen, die gesamte Übertragungsleitung ist in Reihe geschaltet, das Kabel hat die angegebene charakteristische Impedanz, dann ist es am besten, an beiden Enden einen 120-Ohm-Widerstand zu verwenden.

Das Schlaue bei der Verwendung eines PCs ist, einen isolierten RS485-Transceiver zu haben und diese Pullup/Pulldown-Funktion zu aktivieren. Nicht alle Geräte mögen die Klimmzüge. Einige von ihnen arbeiten damit, dass A hochgezogen und B niedrig gezogen wird, und einige A niedrig gezogen und B hochgezogen. Überprüfen Sie dies.

EDIT: Meine Empfehlung. Verwenden Sie den Schirm nicht als 3. Leiter. Der Schirm muss an jedem Knoten geerdet werden, jedoch nur an einem Ende. Insgesamt wird jeder Teil des Schirms nur an einem Punkt geerdet. Es besteht keine direkte Verbindung vom Master zum Endknoten über den Schirm.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Bidirektionale parallele Terminierung ist zwar einfach, aber nicht zuverlässig, wenn es gar nicht funktioniert. Wie gesagt, wenn ich eine einfache parallele Terminierung verwende, ist die Leitung alles andere als ausfallsicher, und es werden immer falsche Startbits gesehen. Die DC-Last des Treibers ist zu hoch, davor warnt der App-Hinweis.
Pullup/Pulldown sind festgelegt und können nicht aktiviert oder deaktiviert werden. Sie waren nicht das Problem; Tatsächlich sind sie zu schwach, um einen ausfallsicheren Betrieb bei Vorhandensein einer 120-Ohm-Terminierung zu gewährleisten, weshalb ich mein eigenes Stromterminierungsnetzwerk hinzufügen musste und warum ich jetzt die AC-Terminierung verfolgen möchte.
In meiner Karriere habe ich Dutzende von RS485-, Profibus- und CAN-Netzwerken installiert. 80m lange Übertragungsleitung ist einfach, aber man muss die richtige Hardware haben (ich war immer in der industriellen Reichweiten-App). Oft gibt es Probleme mit schlechter Transceiver-Hardware, falscher Abschirmung usw. Können Sie Messungen melden, um das eigentliche Problem zu finden?
@Reinderien Kannst du die Hardware verbinden: sowohl Master als auch Slave?
Klar - der Sklave war schon verlinkt. Ich habe einen Link zum Master hinzugefügt.
@Reinderien Der Transceiver-Chip selbst ist keine ausreichende Information über Slave. Die Schaltpläne um den Transceive würden helfen. Auch ein einfacher Schaltplan der Verkabelung, wie hast du das gesamte Netzwerk angeschlossen.
Der Schaltplan wurde hinzugefügt. Ich kenne bereits "das eigentliche Problem", das in meiner obigen Beschreibung gezeigt wird; Ich bin gespannt auf Alternativen aus dem Anwendungshinweis. Danke dir.
@Reinderien Haben die Slaves einen galvanisch getrennten Transceiverteil?
Nö. Was Sie sehen, ist das, was da ist. Während ich denke, dass eine Isolationsphase sehr vorteilhaft sein könnte und etwas, worüber ich separat lesen werde, würde das meine Fragen zur AC-Terminierung nicht beantworten.
Ich weiß Ihre Empfehlung sehr zu schätzen, aber sie beantwortet nicht meine Fragen.
@Reinderien In so einem Fall wird es schwierig. Ich hatte schlechte Erfahrungen mit nicht isoliertem RS485. Sie werden meistens als Punkt-zu-Punkt-, nicht als Multidrop-Verbindungen verwendet. Einige Industriehandbücher sagen das auch deutlich.

Was Sie tun möchten, ist, den minimalen Hysteresewert für ein Differenzsignal zu finden und genügend Strom durch den Leitungsabschlusswiderstand für mindestens das Doppelte der minimalen Vrh-Spannung (Empfänger-Hysteresespannung) an so vielen Lasten zu leiten, wie Sie haben werden. Der Lastwiderstand ist ein weiterer Datenblattwert und der 120er Leitungsimpedanzwiderstand wird parallel dazu hinzugefügt.

Beim MAX485 beträgt beispielsweise Vrh (Hysterese des Empfängers) 70 mV und Rrl (Lastwiderstand des Empfängers) 12 K. Mit nur 2 davon beträgt die Last an jedem Ende mit zwei 120-Ohm-Abschlusswiderständen 59 Ohm. Bei 140 mV und 59 Ohm benötigen wir 2,37 mA Strom. Das bedeutet VDC minus Vrh * 2 dividiert durch unseren berechneten Laststrom, was uns 2,050 K ergibt. Teilen durch 2 und unsere idealen Ausfallsicherheitswiderstände sind 1K. Davon benötigen Sie nur einen an den Abschlusswiderständen. Die Werte, die Sie an anderer Stelle verwenden würden, würden nur 12,5 uA (12 K Rrl) benötigen, also zwei 180 K-Widerstände.

Ihre beste Wette unter 115K und entweder Simplex oder Vollduplex ist Single-Ended-Terminierung, da ein Nur-Sende-Chip-Ausgang keine Terminierung benötigt. Bei Halbduplex hilft es, beide Enden abzuschließen.