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!
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.
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.
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?
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 vom Autor gelöscht.
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.
:
Bearbeitet durch User
Moin, nicht jedes RS485 Gerät ist dafür gedacht mit anderen in einem Netz betrieben zu werden ;) Stell doch hier mal deinen Servotyp rein, dann können wir besser helfen. Gruß Hannes
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.
Rainer W. schrieb: > Das macht dem Empfänger die Sache nicht leicht. "Irgend" hat sich vertippt, er wollte 8n1 schreiben. Auf Start- und Stopbit können UARTs nicht verzichten, aber auf Parity. Das Startbit ist implizit immer an Bord, das Stopbit wird gezählt, weil auch andere Mengen als eines auftreten können.
Schau dir mal MODBUS an. http://de.wikipedia.org/wiki/Modbus https://simplymodbus.ca/ Das verwende ich für Basteleien seit 10 Jahren. Das ist sogar einem ATMEGA168 beizubringen.
:
Bearbeitet durch User
Hans-jürgen H. schrieb: > Das verwende ich für Basteleien seit 10 Jahren. Er will ja irgendwelche ungenannte fertigen Servos nehmen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.