RS-485 Master-Slave Adressierung

OP #7541996
Lesenswert?

Hallo,

ich habe eine Frage zum RS-485 Bus. Wenn ich einen Master und mehrere Slaves auf dem Bus habe, wie kann ich jeden einzelnen Slave ansprechen? Bzw. wir weise ich jedem Slave eine Adresse zu? Ist das Abhängig vom verwendeten Protokoll zb UART oder Modbus oder benötigt jeder Slave ein Treiberbaustein mit einer festgelegten Adresse?

Vielen Dank für eure Antworten!

#7542007
Lesenswert?

Thomas E. schrieb:

ich habe eine Frage zum RS-485 Bus. Wenn ich einen Master und mehrere Slaves auf dem Bus habe, wie kann ich jeden einzelnen Slave ansprechen?

Über ein passendes Protokoll.

Bzw. wir weise ich jedem Slave eine Adresse zu?

Per DIP-Sachalter oder in dessen Software.

Ist das Abhängig vom verwendeten Protokoll zb UART oder Modbus oder

Ja.

benötigt jeder Slave ein Treiberbaustein mit einer festgelegten Adresse?

Siehe oben.

(Firma: egal) #7542069
Lesenswert?

Thomas E. schrieb:

RS-485

RS-485 legt erstmal nur die elektrische Übertragungsart fest. Die gebräuchliche serielle Übertragung mit z.B. 8N0 ist eigentlich schon von UART/RS-232 entliehen und könnte auch was beliebig anders sein. Sowas wie Adressierung kennen die aber alle erstmal nicht. Genaugenommen noch nichtmal so Begriffe wie Master/Slave. Prinzip ist einer sendet und alle anderen hören zu. Was du da sendest und was die Empfänger ggf. damit anstellen ist rein deine Sache und muss von dir entsprechend in einer höheren Protokollschicht in deiner Software passend implementiert werden.

OP #7542080
Lesenswert?

Irgend W. schrieb:

RS-485 legt erstmal nur die elektrische Übertragungsart fest. Die gebräuchliche serielle Übertragung mit z.B. 8N0 ist eigentlich schon von UART/RS-232 entliehen und könnte auch was beliebig anders sein. Sowas wie Adressierung kennen die aber alle erstmal nicht. Genaugenommen noch nichtmal so Begriffe wie Master/Slave. Prinzip ist einer sendet und alle anderen hören zu. Was du da sendest und was die Empfänger ggf. damit anstellen ist rein deine Sache und muss von dir entsprechend in einer höheren Protokollschicht in deiner Software passend implementiert werden.

Danke soweit für die Antwort!

Wenn ich jetzt verschiedenen Servos am Bus habe und nur einen bestimmten ansteuern will, wie kann ich das konkret machen? Noch konkreter, wie weis der entsprechende Slave das er angesprochen wird? Läuft das über den Treiber der eine bestimmte Adresse hat, die ich dann Header des verwendeten Protokolls definiere?

#7542086
Lesenswert?

Thomas E. schrieb:

Wenn ich jetzt verschiedenen Servos am Bus habe und nur einen bestimmten ansteuern will, wie kann ich das konkret machen?

Simpelste Möglichkeit: Du schickst immer zwei Bytes. Im ersten steht die Nummer des Servos, im zweiten der Sollwert. Die Servos lauschen am Bus und wenn das erste Byte ihre Nummer ist, werten sie das zweite aus, sonst machen sie nichts. Das ganze kannst Du dann nach belieben mit Rüchmeldungen, Prüfsummen etc ergänzen.

Beitrag #7542087 wurde von einem Moderator gelöscht.
#7542109
Lesenswert?

Thomas E. schrieb:

Wenn ich jetzt verschiedenen Servos am Bus habe und nur einen bestimmten ansteuern will, wie kann ich das konkret machen?

Das sollte in der Protokollbeschreibung des unbekannten Servos stehen. Eine Möglichkeit ist der 9-Bit Mode. Das 9. Bit legt fest, ob eine Adresse oder Daten übertragen werden. Nicht adressierte Slaves können dann ihre UART so konfigurieren, daß Datenbytes ignoriert werden. Die Adreßzuweisung könnte z.B. über Jumper oder Befehle erfolgen.

#7542212
Lesenswert?

Oliver R. schrieb:

Simpelste Möglichkeit: Du schickst immer zwei Bytes. Im ersten steht die Nummer des Servos, im zweiten der Sollwert.

Dann musst du dem Empfänger nur noch mitteilen, welches Byte das erste ist (falls er einmal außer Tritt kommt). Dafür brauchst du ein weiteres Bit.

Irgend W. schrieb:

Die gebräuchliche serielle Übertragung mit z.B. 8N0 ist eigentlich schon von UART/RS-232 entliehen

Das macht dem Empfänger die Sache nicht leicht. Wenigstens ein Stop-Bit sollte man sich gönnen, damit der Empfänger sich schneller wieder synchronisieren kann, falls bei der Übertragung einmal etwas schief geht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren