Hallo,
ich möchte einen Raspberry 3 einsetzen, um Daten über Modbus RS485
auszulesen. Ich möchte vier USB-to-RS485 Adapter einsetzen. Ist es
möglich, diese gemeinsam über einen USB-Hub mit externer
Spannungsversorgung zu betreiben?
Ist der Einsatz eines USB Isolators notwendig bzw. empfehlenswert?
Reicht so etwas hier?
https://www.ebay.de/itm/1500V-USB-to-USB-Isolator-Board-Protection-Isolation-ADUM4160-ADUM3160-Module/174605216709?hash=item28a7482bc5:g:BGQAAOSwy2tgCWyv
Sollte man davon nur einen holen, um den USB-Hub vom Raspberry
galvanisch zu trennen oder sollte eher jeder USB-to-RS485 Adapter
einzeln getrennt werden?
Danke!
Erstmal: RS485 hat die Besonderheit, dass vor dem Senden der Sender im
Transceiver eingeschaltet und anschließend wieder abgeschaltet werden
muss. Oft muss das die Software machen (über das RTS Signal), manche
USB-UARTs können das auch selber, was dann natürlich deutlich besser ist
(z.B. die von FTDI). Optimal wäre für Dich ein FT4232H, der vier UARTs
enthält. Der funktioniert definitiv auch am Pi 3.
http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4232H.pdf
Du musst auch überlegen, ob beim Senden der Empfänger aktiv sein soll
(d.h. Du empfängst auch Deine gesendeten Daten und weißt damit, dass die
korrekt gesendet worden sind), oder ob der Empfänger beim Senden
abgeschaltet sein soll. Das hängt auch von der verwendeten Applikation
ab.
Ob eine galvanische Trennung erforderlich ist, hängt stark von der
Umgebung ab. Bei kurzen Strecken mag das nicht erforderlich sein, in
industrieller Umgebung und bei langen Strecken vielleicht schon.
Wenn Du Dich für eine galvanische Trennung entscheidest, ist der
richtige Ort für die Isolation die Verbindung zwischen USB-UART und
RS485-Transceiver. Damit kannst Du dann nämlich jeden Bus einzeln
isolieren. Entweder nimmst Du dafür digitale Isolatoren oder isolierende
Transceiver wie den hier:
https://www.analog.com/media/en/technical-documentation/data-sheets/adm2582e_2587e.pdf
USB-Isolatoren gehen nur bis Fullspeed, und damit würdest Du den FT4232H
als Highspeed-Device bremsen. Das ist immer nur die zweitbeste Lösung.
fchk
Hallo fchk,
danke für deine Antwort. Im Endeffekt wird wohl der Raspberry wohl eh
nur lesen. Der soll nur ein Smartmeter auslesen ... Highspeed wird wohl
auch nicht benötigt?? RS485 kann doch nur max. 12 Mbps, damit würden
doch die günstigeren USB-Isolatoren ausreichen??
huzd schrieb:> Im Endeffekt wird wohl der Raspberry wohl eh> nur lesen
Das hat seine eigenen Probleme: das heisst ja, die Sensoren senden ohne
Aufforderung, und daher muss der Raspi "allzeit bereit" sein für alle
vier Busse, es können ja jederzeit und gleichzeitig Daten eintreffen.
Auch auf der Sensorseite besteht das Problem, dass die Sensoren an einem
Bus ja keinesfalls gleichzeitig senden dürfen, wie soll das ohne den
RasPi synchronisiert werden?
Georg
Eine frage etwas am Thema vorbei.
Ich habe ein Problem wo der usb isolator villeicht helfen könnte.
Ich habe eine Solaranlage mit Akku und messe alle möglichen werte mit
dem Raspberry. Ich habe einige usb2serial und usb2485 dran. Problem wenn
das Battery Management abschaltet dort wird Masse von dem Akku
abgeschaltet dann läuft masse über den usb und alles geht kaputt.
wenn ich die Usb ports über so einen Isolator trenne könnte man das
Problem damit doch umgehen oder?
huzd schrieb:> Hallo fchk,> danke für deine Antwort. Im Endeffekt wird wohl der Raspberry wohl eh> nur lesen. Der soll nur ein Smartmeter auslesen ...
MODBUS ist immer und grundsätzlich eine bidirektionale Kommunikation.
Wenn Du nur EIN Smartmeter auslesen willst, warum brauchst Du dann vier
Busse? Kannst Du nicht alle Geräte auf einen Bus hängen?
> Highspeed wird wohl> auch nicht benötigt?? RS485 kann doch nur max. 12 Mbps, damit würden> doch die günstigeren USB-Isolatoren ausreichen??
Wie gesagt, technisch gesehen ist die Isolation des USB-Interfaces immer
nur die zweitbeste Lösung. Du hast dann auch nur eine funktionale
Trennung, keine sicherheitsgerichtete Trennung.
fchk
ps: das wäre etwas brauchbares, wenn Du nicht basteln willst oder
kannst:
https://www.delock.de/produkte/1012_USB-2-0---RS-422---RS-485--Industrie-/62501/merkmale.html
Georg schrieb:> huzd schrieb:>> Im Endeffekt wird wohl der Raspberry wohl eh>> nur lesen>> Das hat seine eigenen Probleme: das heisst ja, die Sensoren senden ohne> Aufforderung, und daher muss der Raspi "allzeit bereit" sein für alle> vier Busse, es können ja jederzeit und gleichzeitig Daten eintreffen.> Auch auf der Sensorseite besteht das Problem, dass die Sensoren an einem> Bus ja keinesfalls gleichzeitig senden dürfen, wie soll das ohne den> RasPi synchronisiert werden?>> Georg
Wenn man doch 4 einzelne USB-to-RS485 Adapter einsetzt, dann existieren
ja auch 4 separate Kabelverbindungen zu den Smart Metern. Damit wäre
doch alles separat und nichts würde "gleichzeitig" über das gleiche
Kabel ankommen??
huzd schrieb:> Wenn man doch 4 einzelne USB-to-RS485 Adapter einsetzt, dann existieren> ja auch 4 separate Kabelverbindungen zu den Smart Metern. Damit wäre> doch alles separat und nichts würde "gleichzeitig" über das gleiche> Kabel ankommen??
Du hast aber nur einen USB-Host, und deswegen geht da eh nichts
gleichzeitig. Und MODBUS arbeitet streng nach dem
Request-Response-Verfahren, d.h. die Slaves antworten nur, wenn sie
gefragt werden.
Um wieviele und welche Endgeräte geht es denn jetzt genau, und wie lang
wären die Kabelverbindungen?
fchk
das sind drei Endgeräte, Kabellänge zu max. je 60m. Also 60m ist das
Endgerät mit der größten Entfernung. Wenn das doch 4 seperierte RS485
Kabel sind, da es ja über 4 USB-Adapter geht, dann gibt es doch pro
Netzwerk nur einen Master und einen Slave??
huzd schrieb:> das sind drei Endgeräte ... Wenn das doch 4 seperierte RS485> Kabel sind, da es ja über 4 USB-Adapter geht, dann gibt es doch pro> Netzwerk nur einen Master und einen Slave??
Ja. Aber dann müssen auf dem RPi auch 3 bis 4 Modbus-Master laufen. Also
müsste eine normale Software 3 bis 4 mal getrennt gestartet werden.
Macht man das so?
Und schreib bitte mal, was für Endgeräte das wirklich sind. Und warum 3
davon 4 Adapter brauchen.
Dass du wegen der Isolation keinen Bus verwenden willst, würde ich bei
60m Kabel gelten lassen. Aber dann muss auch jeder Adapter einzeln
isoliert sein, dann wäre der Vorschlag erste Wahl:
Frank K. schrieb:> ps: das wäre etwas brauchbares, wenn Du nicht basteln willst oder> kannst:> https://www.delock.de/produkte/1012_USB-2-0---RS-422---RS-485--Industrie-/62501/merkmale.html
Solange alle betroffenen im gleichen Haus an einem gemeinsamen
Erdungspunkt angeschlossen sind, sehe ich keinen Bedarf für galvanische
Trennung. Denn RS-485 erlaubt bereits Differenzen von etwas mehr als 5V,
das muss reichen.
Anders sieht es aus, wenn zwei separat geerdete Gebäude verbunden
werden. Da würde ich mich dann nicht mehr darauf verlassen, dass GND
überall gleich GND ist.
huzd schrieb:> Damit wäre> doch alles separat und nichts würde "gleichzeitig" über das gleiche> Kabel ankommen??
Wenn das so ist ja, aber das ist nicht die übliche Verwendung für einen
Bus. Sonst hiesse er ja nicht Bus.
Georg