Fehlerhaftes RS-485-Gerät wirkt sich unregelmäßig auf benachbarte Geräte im Busaufbau aus

Ich versuche, das Rätsel zu verstehen, wie ein fehlerhafter RS-485-Transceiver in einem Netzwerkbus mit mehreren Geräten sehr unregelmäßigen Einfluss auf den eigenen und den Übertragungserfolg seiner Nachbarn zu haben scheint.

AUFBAU
Der Aufbau besteht aus einem RS-485-Busnetzwerk mit etwa 20 Geräten in der Leitung. Als Transceiver werden die RS-485 Breakout Boards ( Sparkfun BOB-10124 ) von Sparkfun verwendet. Die 220-Ohm-Abschlusswiderstände wurden von den Platinen entfernt, um eine Einrichtung mit mehreren Geräten zu ermöglichen. Die Twisted-Pair-Kabel zwischen den Geräten haben Längen zwischen 14 und 30 Metern. Für Sicherheitsmaßnahmen und Geräuschunterdrückung wurden RS-485-Repeater ( RPT-485_422-2 ) zwischen jeweils 6 Geräten installiert.

Einrichtung des RS-485-Netzwerkbusses

PROBLEM
Aufgrund unbekannter Probleme (möglicherweise: Stromspitzen oder Kurzschlüsse oder andere Formen von Fehlbedienung) wird hin und wieder ein Transceiver beschädigt. Die Übertragungsanalyse zeigt, dass bei mehreren Geräten im Netzwerk ein Problem zu bestehen scheint. Es ist nicht ersichtlich, welcher Transceiver das Problem verursacht. Sobald der defekte Transceiver gefunden (meist durch Trial+Error-Tests) und ersetzt wurde, normalisiert sich die Übertragungsrate aller anderen Geräte wieder.

Wenn der fehlerhafte Transceiver alleine getestet wird (eins-zu-eins statt in einem Bus), scheint er zu funktionieren. Einfache Widerstandsmessungen zwischen Pins auf der Transceiverplatine zeigen keinen Unterschied zu einer frischen unbenutzten Platine. An der Platine sind keine Beschädigungen zu erkennen.

Das folgende Bild zeigt die Übertragungserfolgsanalyse, was passiert, wenn derselbe fehlerhafte Transceiver an verschiedenen Positionen im Netzwerkbus eingefügt wird. Manchmal liegt der eigene Sendeerfolg des Transceivers bei 0% (bei Position #11 oder #12), manchmal bei 100% (bei #13 oder #15). Manchmal sind seine Nachbargeräte auf 0 % oder 100 % oder auf Werten dazwischen. Beachten Sie, dass diese Ergebnisse konstant sind und nicht schwanken.

Fehlerhafter Transceiver und seine Auswirkung auf die Übertragungserfolgsrate

Ich hoffe, dass jemand in diesen Ergebnissen ein Muster erkennen kann oder eine Vorstellung davon hat, welcher Teil des Transceivers beschädigt sein könnte. Vielleicht hat jemand ähnliche Probleme mit RS-485-Netzwerken erlebt und kann mich in einige Richtungen weisen. Mit diesem Beitrag hier versuche ich nicht herauszufinden, was den Transceiver beschädigt haben könnte, sondern versuche zu verstehen, wie sich dieser Schaden auf das gesamte Netzwerk auswirkt. Mit dem Ziel, ihn künftig schneller diagnostizieren zu können.


Hier ist ein Bild des im Setup verwendeten Transceivers: Sparkfuns RS-485 Breakout Board ( Sparkfun BOB-10124 ). Beachten Sie, dass der 220-Ohm-Abschlusswiderstand für die Einrichtung entfernt wurde.

Sparkfun RS-485 Breakout-Board

Ein offensichtliches Problem bei dieser Platine ist das Fehlen eines Pulldown-Widerstands, um die Sendefreigabe (DE auf dem Chip, RTS auf der Platine) standardmäßig auf deaktiviert zu setzen, bis sie explizit von laufender Software angesteuert wird. Sie sollten dies wahrscheinlich hinzufügen, wenn Sie es verkabeln. Andernfalls kann nur eine dieser fehlenden laufenden Software, die sie aktiv steuert, den gesamten Bus blockieren.

Antworten (2)

Ich denke, um dies richtig zu diagnostizieren, müssen Sie mit etwas wie einem FTDI-RS458- Konverter zusammen mit einem Oszilloskop lauschen. Mit dem Oszilloskop können Sie sehen, wann ein Transceiver die Leitung greift und freigibt. Möglicherweise müssen Sie jeden Knoten manuell abfragen und jede Antwort überprüfen. Wenn Sie das Modul lokalisieren können, das die Leitung "unten" hält, prüfen Sie, ob der entsprechende Aktivierungsstift tatsächlich hoch gehalten wird. Wenn die Leitung nicht gedrückt gehalten wird, könnte dies bedeuten, dass zwei Knoten versuchen, gleichzeitig zu antworten (Atmega-Firmware-Problem).

Stellen Sie sicher, dass Sie das System mit zwei 120-Ohm-Widerständen gemäß den Anweisungen des Repeaters abgeschlossen haben.

Viele Ingenieure ignorieren die Signalmasse , wenn sie ein RS485-Netzwerk erstellen, da RS485 für "2-Draht-Kommunikation" bekannt ist.

Schließen Sie neben den beiden Datensignalen auch die Signalmasse an?

Wenn Sie die Signalerde nicht anschließen, wird der RS485-Transceiver aufgrund von potenziellen Erdungsunterschieden beschädigt.

Und Sie benötigen möglicherweise zwei Vorspannungswiderstände (manche nennen diese Pullup- und Pulldown-Widerstände).

Es gibt zwei Signale in RS485 - A und B (einige Leute nennen diese TRX+ und TRX-). Und der RS485-Transceiver gibt das Signal an den UART-Controller entsprechend der Differenz zwischen A und B wie folgt aus:

AB > 150 mV: Ausgänge High AB < -150 mV: Ausgänge Low Wenn AB zwischen -150 mV und +150 mV liegt, ist der Ausgangszustand unvorhersehbar. Daher sind die Vorspannungswiderstände in der RS485-Schaltung erforderlich.

Die Vorspannungswiderstände in der RS485-Schaltung halten die A- und B-Signalleitung im RS485-Ruhezustand auf High- oder Low-Pegel. (Siehe unten.)

A: sollte im High-Zustand bleiben B: sollte im Ruhezustand Low bleiben

Dadurch wird die Signalleitung zu hoch, wenn keine Daten vorhanden sind. Wenn keine Vorspannungswiderstände vorhanden sind, können Datenmüll vorhanden sein, wenn keine Übertragungsdaten vorhanden sind.