Forum: Mikrocontroller und Digitale Elektronik Modbus / RS485 / galvanische Trennung


von Sebastian E. (sebert)


Lesenswert?

Hallo!

Ich möchte an meinem ESP32 über den seriellen Port einem Dritten Modbus 
über eine RS485 Schnittstelle bereitstellen.

Häufig wird dazu scheinbar der MAX485 eingesetzt.

Ich muss allerdings sicherstellen, dass der ESP32 keinen Schaden nehmen 
kann, weil die Dritte Person am A/B-Eingang Unfug treibt. Dazu gehört 
z.B., dass dort einfach mal 24V DC oder auch 230V AC angelegt wird (also 
z.B. versehentlich eine Phase aus dem Wechselstromnetz).

Mein Ansatz wäre hier, einen digitalen Isolator zu verwenden, der eine 
galvanische Trennung integriert hat. Damit habe ich einerseits die 
Spannungsversorgung der Schnittstelle von der Spannungsversorgung von 
meinem µC isoliert, andererseits kann über die digitalen Ein- und 
Ausgänge nichts Schädliches an den RX/TX-Port vom µC kommen.

Texas Instruments hat hier scheinbar eine Komplettlösung (full duplex):
https://www.ti.com/lit/ds/symlink/isow1412.pdf

Oder das hier als half duplex:
https://www.ti.com/lit/ds/symlink/isow7821.pdf

Drei konkrete Fragen dazu:
1. Würde der ISOW7821 (half duplex) den µC so schützen, wenn man 
versehentlich 230V AC an den A- oder B- Eingang anlegt?
2. Kann man beim MAX485 bei Anschluss einer galvanisch getrennter 
Spannungsversorgung das Gleiche erreichen oder hätte man weiterhin das 
Problem, dass die falsch angelegte Spannung über die DI/DO-Ausgänge auf 
den µC übertragen würde? In der Dokumentation des MAX485 wird auf den 
DC/DC-Wandler MAX253 verwiesen. Wenn man die Doku des MAX253 liest, dann 
gibt es dort Beispiele einer Trennung über Optokoppler, was recht 
aufwendig erscheint.
https://www.analog.com/media/en/technical-documentation/data-sheets/max253.pdf
3. Die Frage mag basic sein, aber ich bin ein Elektrotechniker: Was 
heißt in all diesem Zusammenhang "Spannungsfestigkeit"? Das hat wohl 
erst einmal nichts direkt mit galvanischer Trennung zu tun. Aber gibt es 
dort eine Verbindung zwischen diesen Themen?

von Weingut P. (weinbauer)


Lesenswert?

RS-485 ist ein definierter differenzieller Datenbus die Ansteuerung des 
Transceiver kannst Du galvanisch per Optokoppler trennen ... mit 230V 
wäre der Transceiver dann aber dennoch hinüber.
Auch müsstest Du dann die Spannungsversorgung des Transceivers vom Rest 
der Schaltung trennen.

von Harald K. (kirnbichler)


Lesenswert?

Sebastian E. schrieb:
> 2. Kann man beim MAX485 bei Anschluss einer galvanisch getrennter
> Spannungsversorgung das Gleiche erreichen oder hätte man weiterhin das
> Problem, dass die falsch angelegte Spannung über die DI/DO-Ausgänge auf
> den µC übertragen würde?

Nur die Spannungsversorgung zu trennen ist sinnlos und obendrein auch 
nicht möglich, denn die Masse der Spannungsversorgung des RS485-Treibers 
muss auch mit dem µC verbunden werden, die ist das Bezugspotential für 
alle Signale.

Du hast effektiv zwei Möglichkeiten:

Verwende einen RS485-Treiber mit integrierter galvanischer Trennung oder 
verwende einen RS485-Treiber mit separater galvanischer Trennung.

In beiden Fällen brauchst Du einen galvanisch isolierten DC/DC-Wandler 
zur Spannungsversorgung.

Ein Beispiel für einen Treiber mit integrierter galvanischer Trennung 
ist das hier: https://www.analog.com/en/products/adm2587e.html

Vorteil: Einfacheres Schaltungsdesign.

Nachteil: Hoher Preis, der auch bei Reparaturen wieder anfällt.

Die verbreitete Alternative besteht aus drei Optokopplern und einem 
herkömmlichen RS485-Treiber wie dem MAX485.

Vorteil: Niedriger Preis, auch bei Reparaturen
Nachteil: etwas aufwendigeres Schaltungsdesign.

Eine weitere Möglichkeit besteht in der Verwendung eines digitalen 
Isolators und eines herkömmlichen RS485-Treibers wie dem MAX485. Ein 
solcher digitaler Isolator ist beispielsweise der hier: 
https://www.analog.com/en/adum342e

Vorteil: Einfacheres Schaltungsdesign
Nachteil: Hoher Preis.

von G. K. (zumsel)


Lesenswert?

Sebastian E. schrieb:
> 3. Die Frage mag basic sein, aber ich bin ein Elektrotechniker: Was
> heißt in all diesem Zusammenhang "Spannungsfestigkeit"? Das hat wohl
> erst einmal nichts direkt mit galvanischer Trennung zu tun. Aber gibt es
> dort eine Verbindung zwischen diesen Themen?

Ab einer bestimmten Spannung schlägt das Ding durch, eine 380KV Leitung 
kannst du nicht auf der einen Seite anschließen und erwarten das man die 
andere Seite anfassen kann.

von Sebastian E. (sebert)


Lesenswert?

Harald K. schrieb:

> Nur die Spannungsversorgung zu trennen ist sinnlos und obendrein auch
> nicht möglich, denn die Masse der Spannungsversorgung des RS485-Treibers
> muss auch mit dem µC verbunden werden, die ist das Bezugspotential für
> alle Signale.

Oh ja, richtig. Der MAX485 hat nur eine einzige Spannungsversorgung. 
Dachte, er hätte zwei separate. Dann fällt diese Option zumindest beim 
MAX485 weg. Es gibt bei TI andere mit separater Spannungsversorgung für 
beide Seiten (die hatte ich fälschlicherweise im Kopf).

> Ein Beispiel für einen Treiber mit integrierter galvanischer Trennung
> ist das hier: https://www.analog.com/en/products/adm2587e.html

OK, das scheint das äquivalente Produkt zum TI ISOW1432 zu sein. Schaue 
mir das mal an.
https://www.ti.com/product/ISOW1432

> Die verbreitete Alternative besteht aus drei Optokopplern und einem
> herkömmlichen RS485-Treiber wie dem MAX485.

OK, 3 Optokoppler sowie galvanische Trennung.

von Michael B. (laberkopp)


Lesenswert?

Sebastian E. schrieb:
> 1. Würde der ISOW7821 (half duplex) den µC so schützen, wenn man
> versehentlich 230V AC an den A- oder B- Eingang anlegt?

Sieht gut aber teuer aus. Ein MAX485 kommt dann an dessen isolierte 
Stromversorgung. Für RS485 tut es direkt auch ein LTM2881 von AD.

> 2. Kann man beim MAX485 bei Anschluss einer galvanisch getrennter
> Spannungsversorgung das Gleiche erreichen

Nein, du brauchst noch Optokoppler. Und so machen das auch die 
Hersteller von RS485 Geräten: Ein kleiner 5V DC/DC Wandler stellt eine 
galvanisch getrennte Stromversorgung bereit, daran ein MAX485 und die 3 
Leitungen SendeDaten, RichtungsSignal und EmpfangsDaten werden über 
Optokoppler isoliert.

https://de.rs-online.com/web/p/dcdc-wandler/2233692

Da gehen natürlich auch ADUM1402. Leider erzeugen die ADUM eventuell 
Hf-Probleme beim EMV-Test, ebenso ISO7220/7221 von TI und 
TPT7710/7720/7730/6640 von 3Peak, SI8710/8711 von SiLabs, ISO6781 sind 
wohl besser. NVE IL510-516/610-616 sollen störungsfrei sein.

von U. M. (oeletronika)


Lesenswert?

Hallo,
> Ich möchte an meinem ESP32 über den seriellen Port einem Dritten Modbus
> über eine RS485 Schnittstelle bereitstellen.
Gut wäre es, wenn du weitere Parameter nennen würdest, wie max. 
Baudrate, Leitungslängen, gewünschter Schutz gegen EMP (Blitzschlag), 
sonstige Störeinflüsse usw.

> Häufig wird dazu scheinbar der MAX485 eingesetzt.
Für hohe Schutzwirkung ist galvanische Trennung zweckmäßig.
Eine mögliche Beschaltung für industrielle Umgebung kannst du hier 
sehen:
Beitrag "Re: RS485 common GND"

Aber auch diese hat gewisse Einschränkungen.

> Ich muss allerdings sicherstellen, dass der ESP32 keinen Schaden nehmen
> kann, weil die Dritte Person am A/B-Eingang Unfug treibt. Dazu gehört
> z.B., dass dort einfach mal 24V DC oder auch 230V AC angelegt wird (also
> z.B. versehentlich eine Phase aus dem Wechselstromnetz).
Also kompletter Schutz gegen so extreme Fehlbeschaltung ist nicht 
trivial.
Man muß dabei verschiedene Aspekte berücksichtigen.
So beinflussen z.B. Schutzbauelemente mit ihrer Kapazität die Dynamik 
der Signale. Man kann sich auch nicht gegen alle Störeinflüsse in 
gleicher Art und Weise schützen.

> Mein Ansatz wäre hier, einen digitalen Isolator zu verwenden, der eine
> galvanische Trennung integriert hat. Damit habe ich einerseits die
> Spannungsversorgung der Schnittstelle von der Spannungsversorgung von
> meinem µC isoliert, andererseits kann über die digitalen Ein- und
> Ausgänge nichts Schädliches an den RX/TX-Port vom µC kommen.
Den uC vor Zerstörung durch externe Signale zu schützen, ist eigentlich 
einfach. Man kann bei moderater Baudrate die digitalen Leitungen 
zwischen uC und Interfacetreiber ausreichend hochohmig auslegen und 
diese mit hinreichend leistungsfähigen Überspannungsschutz versehen.
So müßte man bei einem Reihenwiderstand von 100 kOhm nur ca. 2,5 mA 
ableiten und der Widerstand müßte nur ca. 600mW vertragen.

> Drei konkrete Fragen dazu:
> 1. Würde der ISOW7821 (half duplex) den µC so schützen, wenn man
> versehentlich 230V AC an den A- oder B- Eingang anlegt?
Prinzipiell ja, wenn Luft- und Kriechstrecken garantieren, dass die 
Störspannung nicht auf die Schaltung des uC durchschlägt.

> 2. Kann man beim MAX485 bei Anschluss einer galvanisch getrennter
> Spannungsversorgung das Gleiche erreichen oder hätte man weiterhin das
> Problem, dass die falsch angelegte Spannung über die DI/DO-Ausgänge auf
> den µC übertragen würde?
Modbus braucht keine Megabauds, oder? bandbreitenbegrenze Treiber mit 
galv. Trennung sind da einfacher in Verbindung mit DCDc-Wandler.
Ich verweise mal auf besser geeignete ADM2481 oder ADM2483

> 3. Die Frage mag basic sein, aber ich bin ein Elektrotechniker: Was
> heißt in all diesem Zusammenhang "Spannungsfestigkeit"? Das hat wohl
> erst einmal nichts direkt mit galvanischer Trennung zu tun. Aber gibt es
> dort eine Verbindung zwischen diesen Themen?
Das Thema hat verschiedene Aspekte:
- Festigkeit gegen dauerhaft anliegende Störungen, wie eben z.B. eine 
falsch aufgelegte Leitung.
- Festigkeit gegen kurzzeitig auftetende Störungen, wie ESD oder EMP 
(durch Blitzschlag oder Störimpulse, die durch benachbarte Leitungen mit 
sehr hoher Leistung verursacht werden (z.B. ein Motor oder Heizung im 
MW-Bereich).

Fazit: Den uC vor Beschädigkung über die RS485 zu schützen, geht noch 
recht einfach. Das Interface selber vor Zerstörung durch angelegte 
Netzspannung schützen ist ein sehr sportliches Unterfangen.
Gruß Öletronika

von Purzel H. (hacky)


Lesenswert?

Man sollte sich schon realistische Schadensszenarien vorgeben. Und Netz 
ist keins. Einfach so 24V ist auch keins. Beides laesst sich durch die 
Anschlusswahl definieren. Wenn der Anschluss des Modbus durch die genau 
gleichen Stecker im praktischen 3.81mm Rastermass wie Netz geschieht, .. 
ja dann ist eine Zerstoerung sicher.
Die Benutzer sollen nicht mir Draehten anschliessen belastet werden, die 
Verbindungen werden gesteckt. Bedeutet der Benutzer, oder Betreuer, muss 
einmal aufpassen und den Bus, die 24V und das Netz richtig anschliessen 
und nachher gibt der Stecker die Verbindung vor.

von Sebastian E. (sebert)


Lesenswert?

U. M. schrieb:
> Ich verweise mal auf besser geeignete ADM2481 oder ADM2483

Genau, die würden gut gehen, zusammen mit einem galvanisch getrennten 
DC/DC-Wandler. Oder alternativ der ISO1410 (etwas günstiger, scheint 
sonst das Gleiche zu können).

U. M. schrieb:
> So müßte man bei einem Reihenwiderstand von 100 kOhm nur ca. 2,5 mA
> ableiten und der Widerstand müßte nur ca. 600mW vertragen.

Hierbei redest Du von 230V AC, korrekt? Das könnte ich gegen N oder 
gegen PE ableiten. Leider sind die 2,5 mA zu wenig, dass bei Ableitung 
gegen PE der FI auslösen würde. Ich könnte den Widerstand kleiner 
machen, um den FI zum Auslösen zu bringen. Doch dann müsste ich 
sicherheitshalber eine Feinsicherung mit einbauen, um eine Überhitzung 
zu vermeiden. Und vielleicht hole ich mir dann Störungen über den PE 
rein. Noch eine weitere Idee?

von Ingo S. (schicki)


Lesenswert?

Hallo Sebastian,

ich benutze seit längerer Zeit den MAX22028F. Dieser 
Pegelwandler/Treiber hat mehrere Vorteile.

- Der hat eine galvanische Trennung.
- eine automatische Umschaltung zum senden und Empfangen.
- und einem sicheren Pegel im Failsafe-Modus (Bestelloption F)

https://www.analog.com/en/products/max22028f.html

Viele Grüße
Ingo

von U. M. (oeletronika)


Lesenswert?

Hallo,
> Sebastian E. schrieb:
> U. M. schrieb:
>> Ich verweise mal auf besser geeignete ADM2481 oder ADM2483
>
> Genau, die würden gut gehen, zusammen mit einem galvanisch getrennten
> DC/DC-Wandler. Oder alternativ der ISO1410 (etwas günstiger, scheint
> sonst das Gleiche zu können).
Günstiger als ADM2481 ADM2483 sind auch die kompatiblen ISO3082.
https://www.digikey.de/de/products/detail/texas-instruments/ISO3082DWR/1898638
Diese setze ich seit einigen Jahren auch regelmäßig ein, zusammen mit 
kleinen 1-Watt DDCDC-Wandlern z.B. RO-0505 von Recom.

> U. M. schrieb:
>> So müßte man bei einem Reihenwiderstand von 100 kOhm nur ca. 2,5 mA
>> ableiten und der Widerstand müßte nur ca. 600mW vertragen.
> Hierbei redest Du von 230V AC, korrekt?
Ob 230V AC oder auch DC ist am Ende egal.

> Das könnte ich gegen N oder
> gegen PE ableiten. Leider sind die 2,5 mA zu wenig, dass bei Ableitung
> gegen PE der FI auslösen würde. Ich könnte den Widerstand kleiner
> machen, um den FI zum Auslösen zu bringen.
Das ist kein so sinnvolles Konzept. Eine Feinsicherung mit wenigen mA 
zur Auslösung zu bringen, wird nicht gut funktionieren.
Mit höherem Strom steigt aber die Verlustleistung im strombegrenzenden 
Widerstand an und es braucht ein größere Bauform.
Es gibt da sicher noch diverse Möglichkeiten, aber wie oben Purzel H. 
(hacky) schrieb:
"Man sollte sich schon realistische Schadensszenarien vorgeben."

Abgesehen davon bin ich auch der Meinung, dass das Risiko so grober 
Fehlbeschaltung durch Benutzer durch diverse Maßnahmen reduziert werden 
sollte.
- gute Abtrennung von Signalbereichen zu Klemmen mit gefährlicher 
Spannung.
- Gute Kennzeichnung von Leitungen, Klemmen, Steckverb. und ordentliche 
Doku
- Verwendung unterschiedlicher bzw. codierter Steckverbinder

Abgeshen davon sind Leitungen mit Netzspannung nicht von elktrotechn. 
Laien    zu klemmen. Das dürfen nur Fachkräfte!

Deine Fragestellung war ja auch zuerst nur darauf gerichtet, primär den 
uC zu schützen.
In der Schaltung, die ich verlinkt hatte, sind Polyswitche am Eingang, 
die auch auf kleinere Ströme ausgelegt werden sollten (100mA-Typ).
Damit kann man die Schutzbeschaltung zumindest bis über 30V DC recht 
sicher machen.

> Doch dann müsste ich
> sicherheitshalber eine Feinsicherung mit einbauen, um eine Überhitzung
> zu vermeiden. Und vielleicht hole ich mir dann Störungen über den PE
> rein. Noch eine weitere Idee?
Man könnte auch vor den Eingang einen robusten Halbleiter setzen, der 
bei Überspannung sehr schnell den Störstrom gegen Masse ableitet.
Ich halte das aber für Overengineering.
Gruß Oeletronika

von Hadmut F. (hadmut)


Lesenswert?


von Flip B. (frickelfreak)


Lesenswert?

Can/ Modbus wird häufig wegen solcher ängste mit galvanischer trennung 
gebaut. Man nimmt normalerweise optokoppler und einen kleinen 
getrennten Dc/DC.

Ist aber häufig overkill. Moderne Transceiver kommen auch mit -+ einigen 
V potentialverschiebung aus. Wenn jemand L und N an den bus anlegt 
knallt es sowieso.

Gegen fehlanschluss an Signaleingängen kann man diese hochohmig machen, 
es gibt Schutzdioden und PTC die wie in vielen Multimetern einen 
empfindlichen ADC vor überspannung schützen und dabei auch nicht selbst 
durchbrennen. An Busleitungen wie hier oder Ausgängen funktioniert das 
häufig nicht. Gegen fehlanschluss würda aber z.b. ein einfaches 2xUm 
Relais helfen was die datenleitungen vom Transceiver trennt und erdet. 
Wenn falsch angeschlossen knallt es, falls es richtig angeschlossen 
wurde fährt das gerät hoch und schaltet das relais ein. Im betrieb 
braucht es dann noch die übliche TVS diode und ggf. ein paar kleine 
serienwiderstände.

von Harald K. (kirnbichler)


Lesenswert?

Hadmut F. schrieb:
> Galvanische trennung

Die beiden sind für den Einsatz mit RS485 ungeeignet, denn es fehlt die 
Steuerleitung zum Umschalten zwischen Sende- und Empfangsbetrieb, die 
der RS485-Transceiver braucht.

von Hadmut F. (hadmut)


Lesenswert?

Die sind für die andere seite des rs485 transceivers gedacht ...

von Harald K. (kirnbichler)


Lesenswert?

Hadmut F. schrieb:
> Die sind für die andere seite des rs485 transceivers gedacht ...

Wie stellst Du Dir das vor?

Die UART (sei es in Form einer USB-Seriell-Bridge oder in einem µC) 
braucht drei Signalleitungen, um mit einem RS485-Transceiver reden zu 
können - RxD, TxD und Empfänger/Sender-Umschaltung.

von Hadmut F. (hadmut)


Lesenswert?

Stimmt. Hast du recht. Es braucht 2 solche chips.

von Εrnst B. (ernst)


Lesenswert?

Mal ganz ketzerisch gefragt: Die meisten dieser Lösungen sind teurer als 
ein ESP32, und gehen trotzdem kaputt, wenn jemand 230V anschließt. Lohnt 
der Aufwand überhaupt?

von Hans-jürgen H. (hjherbert) Benutzerseite


Angehängte Dateien:

Lesenswert?

Beim Verwenden von Optokopplern ist zu beachten, dass ein stromloser 
RS485-Teilnehmer den Optokoppler nicht ansteuern kann.

Der Optokoppler im Bild zieht TEnab -REnab laso nur nach High, wenn er 
aktiv durch RSB angesteuert wird.

Schaltungen, bei denen der Optokoppler so verschaltet ist, dass dessen 
Transistor nach LOW zieht, machen die RS485-Kommunikation kaputt, wenn 
DIESER Teilnehmer einen Stromausfall hat.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Das geschilderte Problem würde aber auch auftreten, wenn kein 
Optokoppler verwendet wird, denn bei Ausfall der Stromversorgung des µC 
oder was auch immer den RS485-Treiber ansteuert, ist logischerweise das 
Steuersignal auch auf Low-Pegel.

Da das nicht der Fall ist, wird die im Falle eines Ausbleibens der 
Stromversorgung ebenfalls fehlende Stromversorgung des RS485-Treibers 
einen Anteil daran haben. Ich gehe glatt davon aus, daß es in diesem 
Fall keine parasitäre Speisung des RS485-Treibers durch die Pegel auf 
dem RS485-Bus gibt, denn dann träte genau das von Dir geschilderte 
Problem auf.

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.