RS485 - Kommunikation

Hallo liebe Arduino-Gemeinde!

Erst einmal kurz zu mir:
Ich habe vor kurzem erst angefangen, mich mit uC und dem Arduino-Board zu beschäftigen. Erste erfolge konnte ich bereits erzielen, sprich die Grundlagen sind mir doch recht bekannt.

Allerdings habe ich ein etwas größeres Projekt vor mir, habe dabei aber ein Problem was die serielle Übertragung mittels RS485 angeht.

Ein kleiner Überblick über meine Idee bzw. das Projekt:
Es wird einen Master und mehrere Slaves (ca. 12-16 Stück) geben. Der Master bekommt über eine simple Oberfläche digitale Signale (Taster) und soll dementsprechend Signale an die Slaves schicken, immer explizit zu einem Slave.

Mein Problem hierbei ist das Protokoll. Ich habe mich jetzt 5 Stunden lang durchs weite Netz gesucht und mindestens 500 mal gelesen, das RS485 an sich nur eine physikalische Norm ist, allerdings kein Protokoll darunter fällt. Allerdings fällt dabei oft die Empfehlung, selbst eins zu schreiben. Genau hier ist mein Problem:

Wie definiere ich ein solches Protokoll?
Vor allem bin ich oft über ein "9tes" Bit gestolpert, das den anderen uC anzeigen soll, dass das eine Adressierung ist und sowas. Ich konnte aber trotz allem nicht durchsteigen. Dazu muss noch gesagt werden, dass ich bis jetzt noch keine RS485-Wandler hier habe, wollte erst mal in der Theorie wissen, ob sich meine Idee überhaupt mittels RS485 umsetzen lässt.

Also, noch mal zusammengefasst: Wie schicke ich so simpel wie möglich vom Master mittels RS485 einen Befehl (momentan nur simpler Taster) zu einem Slave?

Ich danke euch schonmal im Voraus für eure Mühen,
khanorr

RS485, wie Du erkannt hast, definiert nur die elektrischen Parameter der Verbindung.
Du nimmst einen Arduino und schließt den 485-Wandler an RX und TX an. Das machst Du mit allen Arduino's und schließt alle Wandler paralell. Zum Protokoll ist das einfach das von der seriellen Schnittstelle (Baudrate, Start-Stop- Paritäts-Bit). Um eine Slave anzusprechen schickst Du eine Anfrage (Zeichenkette) mit der "Adresse" des Slaves und nur der antwortet.
Grüße Uwe

Darf ich dir mal diese Seite empfehlen. Ich habe meine RS485 Kommunikation darauf basiert

Er hat auch ein bisschen Sicherheit drin mit komplementär Übertragung und Start und Endbyte siehe Link

Hier noch den Link zu meiner Vorstellung.
Ich habe jetzt einen Master mit LCD und und Bedienung über ein Menu gemacht und einen Nano als Slave und einen attin84 als zweiten Slave (im Video sind es noch zwei Nanos).
Hier dier Thread:
http://arduino.cc/forum/index.php/topic,109050.0.html

Bei Fragen gerne zu Verfügung.
Das Protokoll habe ich selbst gemacht:
Es sieht mittlerweile so aus.
Byte 1 = Adresse des Sklaven
Byte 2= zum Setzen digital Ausgang 0x00, zum setzen analogAusgang 0xC3 oder Anfrage Daten 0xAA (z.B. TempFühler)
Byte 3= Pin (Byte Pin)
Byte 4= Wert (Hier Null und Eins)

Das ist nur zum Testen
Du bist Frei in deinen Telegrammdaten.

Also diese Sketche sind extrem Leicht auf deine Bedürfnisse anzupassen.
Ich nutze hier die SoftwareSerial um mir den Hardware Serial für debbuging freizuhalten und nicht die Uploaddaten auf den ganzen Bus zu schicken. Die Übertragung läuft sicher mit 9600baud.

Gruß Daniel