RS485 für NOOBS

Serielle Datenübertragung über größere Entfernungen macht immer wieder Probleme.
Deshalb möchte ich mich nun endlich auch mal mit RS485 beschäftigen.
Dass es ein Bus ist, ist mir bekannt. Mehr aber auch nicht.

Wie kommunizieren da die einzelnen Komponenten? Ähnlich wie bei I2C?

Der Arduino, ESP oder Raspi ist der Chef und sendet oder empfängt die Daten von seinen Slaves?
Hat da jeder Slave eine eigene Adresse und der Master erkennt Anhand dieser, woher die Daten kommen?

Könnte mich bitte mal jemand (in Kurzform) aufklären.

freddy64:
Könnte mich bitte mal jemand (in Kurzform) aufklären.

Sorry, aber...

Lesestoff (teilw. engl.):
https://arduinoinfo.mywikis.net/wiki/RS485-Modules
https://www.gammon.com.au/forum/?id=11428

https://forum.arduino.cc/index.php/topic,109050.0.html

Sorry, aber…
EIA-485 – Wikipedia

Genau das habe ich nicht gesucht.

Mir geht es um die Unterscheidung der Busteilnehmer.
Teilnehmer A sendet ein Rundschreiben an alle Teinehmer: “F → schicke mir sofort deine Messwerte!”
Die Aufforderung wird an alle Teilnehmer versendet. Woher weiß jetzt Teilnehmer F, dass er gemeint ist und gefälligst sofort seine Daten senden soll.
Teilnehmer B, C und D empfangen die Meldung auch, können sie aber ignorieren.

Ich bin Ü50, deshalb brauche ich eine “Idiotensichere” Erklärung.

Wie hat mal ein Entwickler gesagt: Idiotensicher geht nicht - die Idioten sind zu erfinderisch :wink:

Gruß Tommy

freddy64:
Mir geht es um die Unterscheidung der Busteilnehmer.
Ich bin Ü50, deshalb brauche ich eine "Idiotensichere" Erklärung.

agmue hatte mal verlinkt:
http://www.gammon.com.au/forum/?id=11428

war aus dem thread:

Übers Alter sprechen ist gefährlich... Hüpfer :wink:

freddy64:
Genau das habe ich nicht gesucht.

Mir geht es um die Unterscheidung der Busteilnehmer.

Du hast nicht danach gesucht, aber Du hast danach gefragt!

RS485 ist eine Spezifikation, wo welcher Strom langfließt. Kurzgefaßt: Die Schnittstelle arbeitet mit Differenzsignalen. Aus, Ende, mehr nicht.

Master, Slave und all diese Dinge des Inhaltes werden da nicht behandelt.

Bei anderen Schnittstellen ist das anders, keine Frage.

Ich bestell' mir jetzt einfach mal einen Sack voll RS485 Shields und versuche das Prinzip herauszufinden.
Alle Arduino Samples beziehen sich immer nur 2 Module.

Die Schnittstelle arbeitet mit Differenzsignalen.

Bin überfordert

freddy64:
Ich bestell’ mir jetzt einfach mal einen Sack voll RS485 Shields

Hinweis: Du brauchst auch wenigstens noch nen nano/micro/irgendwas dahinter.
Den Sack voll also nicht vergessen :wink:

(Ja, man kann auch versuchen mit einem ARDUINO mehrfach sowohl Sender als auch Empfänger nachzubilden)

Nanos (China clones) habe ich mindestens 10 hier rumliegen.
Wenn China-Man RS485 Module geliefert hat, melde ich mich wieder.
Aber dann......
frage ich euch Löcher in den Bauch.

Der Link von my_xy_projekt zu Herrn Gammon scheint mir hilfreich.
Ohne je mit RS485 gearbeitet zu haben hier meine Interpretation (jedenfalls würde ich das so versuchen):
RS485 gibt die Elektrik vor -> das werden die Shields/Module erledigen.
Alle Teilnehmer hängen wie die Wäscheklammern auf der Leine nebeneinander am gleichen Kabelpaar.

Softwaretechnisch sieht mir das aus wie eine serielle Schnittstelle mit einer Spezialität:
Jeder kann senden, muss dazu aber vorher den Enable-Pin aktivieren (und danach wieder abschalten).
Alle hören alles mit.
Damit ist es Aufgabe des Programms in den übertragenen Daten den gewünschten Empfänger zu kodieren, also wenigstens ein minimales Protokoll zu implementieren.

Bei ihm ist das einfach gelöst - jede Nachricht vom Master mit einem Auftrag an einen Slave hat drei Byte: Empfänger, Kommando, Datum zum Kommando. Siehe Teil Master (physikalisch kann m.E. eigentlich jeder Busteilnehmer Master sein).

Die Empfänger (Slave) schauen nach:
Ist es für mich?
Kenne ich das Kommando?
Falls ja: Ausführen.
Die Antwortnachricht zur Bestätigung hat offensichtlich nur zwei Byte (Empfänger = Master), Bestätigungscode (als Kommando).

Kann mir auch vorstellen, dass man einen Empfänger "alle" (Broadcast) oder Gruppen definiert, dann sollte eine evtl. Bestätigung aber auch einen Absender enthalten.

Und jetzt bitte ich die RS485-Experten diesen Aufschrieb einem kritischen Review zu unterziehen :wink: .

Fang nicht mit dem Alter als Entschuldigung an, sonst kann es Dir passieren daß Du der jüngste bist.

RS485 funktioniert Halbduplex, das heißt nur ein Gerät kann in eine Richtung senden. Es hat 2 Leitungen wo auf einem das Signal und auf der anderen das negierte (1->0 und 0->1) Signal gesendet wird. So ergibt sich zwischen den 2 Datenleitungen mal eine positive, mal eine negative Spannung.

Wie Du bereits sagst gibt es einen Master der die Komunikation regelt.
F weiß daß er antworten muß weil er weil daß er F ist.

Wenn ich @freddy64 schreibe wissen auch alle, Du inbegriffen daß Du gemeint bist.

RS485 regelt nur die Elektrische Seite des Busses. Das Protokoll, wie die Daten geschicket werden und wie verhindert wird daß nicht 2 Geräte gleichzeitig senden geschied im Protokoll.
Es gibt mehrere Protokolle zB: Modbus, Modbus RTU, Profibus, BACnet ..

Kommunikation über die RS485-Schnittstelle - Janitza electronics scheint mir gut erklährt zu sein.

Grüße Uwe

freddy64:
... RS485 Shields ...

Ich verwende MAX485 Module an der seriellen Schnittstelle beispielsweise des Mega2560, weil der mehrere davon hat. Denn Serial wird ja für USB benötigt. Also RS485 beispielsweise an Serial1 anschließen. Beim UNO kann man SoftwareSerial verwenden, was aber in der Geschwindigkeit begrenzt ist.

freddy64:
Bin überfordert

Elektromagnetische Störungen werden bei der Verwendung von Differenzsignalen idealerweise zu Null addiert und damit eleminiert.

Grundsätzlich stellt sich mir die Frage, ob Du nur mal RS485 kennenlernen möchtest, oder ob Du eine konkrete Anwendung hast. Möglicherweise wäre eine andere Schnittstelle besser geeignet.

wno158:
Ohne je mit RS485 gearbeitet zu haben hier meine Interpretation (jedenfalls würde ich das so versuchen):

Jeder kann senden, muss dazu aber vorher den Enable-Pin aktivieren (und danach wieder abschalten).

Dafür aber gut interpretiert.

Ja. Das enable soll nur ausgeführt werden, wenn kein Signal auf der Leitung.
Alles andere wie Du schriebst.
Die Frage, wie der TO sein Protokoll gestaltet überlasse ich ihm. :wink:

Ich bestell' mir jetzt einfach mal einen Sack voll RS485 Shields

leg auch zwei USB-RS485 Wandler in den Einkaufskorb, damit du direkt vom PC aus ohne Umwege über einen Arduino in deinen RS485 plaudern und lauschen kannst.

leg dir ausreichend Megas zu - damit du für die RS485 Schnittstelle eine separate Hardware-Serial hast.

Du hast vermulich schon erkannt, bei RS485 musst du dich um alles das über die reine Datenleitung hinausgeht, selber kümmern. Ich empfehle lies dich ein, suche nach Industriestandards, die derartiges bereits umgesetzt haben, Suche nach Modbus und DMX wie die das machen, schau dir deren Vor/Nachteile an.

freddy64:
Bin überfordert

Jetzt schon?!

Geh spazieren. Das entspannt.

Gruß

Gregor

Geh spazieren. Das entspannt.

Darf er das bei dem Lockdown?

uwefed:
Darf er das bei dem Lockdown?

Er muss halt aufpassen, dass er nicht versehentlich in ein Mutantenrisikogebiet spaziert.

Gruß

Gregor

uwefed:
Darf er das bei dem Lockdown?

Man glaubt es kaum, aber ja. Ein triftiger Grund ist:
... die Bewegung an der frischen Luft,
die Verordnungsgeber meinen damit tatsächlich "Spazieren gehen" unter Einhaltung der Abstandregelungen.
In den meisten Begründungen zu den Verordnungen die ich kenne, die den Parlamenten vorgelegt wurde, stehts zumindest so. Und wird so umgesetzt, da es derzeit zumindest in D IMHO kein Gebiet mit Ausgangssperre gibt geht das also...

So, bin vom Spaziergang zurück. Bei uns ist ab 21:00 Ausgangssperre.
Der Post 10 von wno158 ist genau das, was ich mit "Idiotensicher" gemeint habe.

Ich werde mich dann erst mal ganz langsam durch die verschiedenen RS485 Samples arbeiten, sobald der Postman geklingelt hat.