Pages: [1]   Go Down
Author Topic: RS485 - Kommunikation  (Read 1002 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 266
Posts: 21661
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1128
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Darf ich dir mal diese Seite empfehlen. Ich habe meine RS485 Kommunikation darauf basiert
http://www.gammon.com.au/forum/?id=11428
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
« Last Edit: June 21, 2012, 01:50:51 pm by volvodani » Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Pages: [1]   Go Up
Jump to: