Forum: Mikrocontroller und Digitale Elektronik Rs485 + Programm


von torsten (Gast)


Lesenswert?

Hallo.

Ich möchte den RS485 zur Kommunikation unter mehreren Atmel-Controllern 
benutzen.
Als Treiberbausteine würde ich den LTC485 benutzen.
Nun zu den Unklarheiten: hat jemand informationen oder ein tutorial, wie 
man das ganze programmtechnisch angehen muss?

freundliche Grüße,

von STK500-Besitzer (Gast)


Lesenswert?

torsten schrieb:
> hat jemand informationen oder ein tutorial, wie
> man das ganze programmtechnisch angehen muss?

Ja, ich.

von Purzel H. (hacky)


Lesenswert?

Als erstes benoetigst Du ein Protokoll. Dann ist die Programmierung auch 
gegeben. Das Protokoll ergibt sich aus den Anforderungen. Was sind denn 
die Anforderungen ?

von spess53 (Gast)


Lesenswert?

Hi

Ein Master, Multimaster,....?

MfG Spess

von torsten (Gast)


Lesenswert?

Also um gleich mal alle Punktu zu erwähnen:

Master-Slaves
vollduplex
Modellbahn

Über ein Protokoll habe ich mir auch schon Gedanken gemacht:

|Anfangsbyte|Adresse|Unteradresse|Befehl|Abschlussbyte|

Die Adresse wäre dann die eines Controllers und die Unteradresse z.B. 
die eines Signals o.ä..

Wenn es allerdings ein Standart-Protokoll gibt, welches nicht so 
kompliziert, wie das des CANs ist, wäre das natürlich auch gut!?

von spess53 (Gast)


Lesenswert?

HI

>-Master-Slaves

Dann sieh dir mal den Multi Processor Mode der UART an.

>-vollduplex

Mit dem LTC485?

MfG Spess

von STK500-Besitzer (Gast)


Lesenswert?

torsten schrieb:
> Wenn es allerdings ein Standart-Protokoll gibt, welches nicht so
> kompliziert, wie das des CANs ist, wäre das natürlich auch gut!?

Wenn du schon CAN erwähnst, solltest du ihn vielleicht auch benutzen.

torsten schrieb:
> Master-Slaves
> vollduplex
> Modellbahn

Um noch einen Begriff in den Raum zu werfen:
Kreuzschiene SDI

RS485 vollduplex geht nur mit 4Adern+Masse.
Die Treiber sind etwas schwach, um auch noch deine Eisenbahn 
anzutreiben.

von torsten (Gast)


Lesenswert?

Läuft die jede Kommunikation eines Controllers über den USART?

von Bastler (Gast)


Lesenswert?

Das erinnert mich an Sprüche aus dem PM: "UART ist tot, heute verwendet 
man RS485!"

Die Kommunikation läuft über UART und dann kommt ein entsprechender 
Tranceiver zum Einsatz.
z.B: RS232  RS485  0-24V (bei IO-Link) / ...

Das beschreibt nur die pysikalische Übertragung.
Profibus verwendet ebenfalls eine UART mit RS485.
Unterschied ist das Protokoll eine Ebene höher.

Schau dir mal das OSI Schichtenmodell an!

von chick (Gast)


Lesenswert?

Du weißt schon, daß sich RS485 und vollduplex widersprechen?

von RainerK (Gast)


Lesenswert?

chick schrieb:
> Du weißt schon, daß sich RS485 und vollduplex widersprechen?

Bei eindeutigen Master-Slave-Beziehungen eben nicht: 
http://www.rn-wissen.de/index.php/RS485

Es grüßt RainerK

von Thomas B. (nichtessbar)


Lesenswert?

Jap, hab Protokoll+Implementierung (atmega, Xmega, PC, gut portierbar 
auf andere Architekturen) das für deine Zwecke ganz gut geeignet sein 
müsste. Bei Interesse melden ;)

Standardprotokolle gibts bei RS485 nicht, RS485 is im wesentlichen nur 
die Busspezifikation und multiprotokollfähig, dh. man kann da 
drüberjagen was man will.
Oft wird einfach die USART von Mikroprozessoren genommen und auf RS485 
umgesetzt. Und dann byteorientierte Protokolle (wie du auch den Ansatz 
hättest)

von Peter D. (peda)


Lesenswert?

torsten schrieb:
> Wenn es allerdings ein Standart-Protokoll gibt, welches nicht so
> kompliziert, wie das des CANs ist

CAN ist nicht kompliziert.
Im Gegenteil, es ist um Größenordnungen einfacher als UART/RS-485. Ich 
verstehe nicht, warum man sich für neue Projekte noch das uralte RS-485 
antut. Vermutlich aus Langeweile, damit man länger programmieren darf.

Das CAN macht alles komplett in Hardware. Du stellst nur eine Nachricht 
in den Sendepuffer und wenn sie mindestens ein Teilnehmer empfangen 
konnte, kriegst Du einen Interrupt: "Ich habe fertig".
Der Empfänger kriegt auch nen Interrupt: "Da ist was im Puffer".
Ob Master, Slave, Fehlererkennung, Arbitrierung, Retry und anderen 
Protokollkrams mußt Du Dich nicht kümmern.

Einfacher gehts nun wirklich nicht


Peter

von torsten (Gast)


Lesenswert?

Also steht jetzt praktisch CAN gegen RS485.
Ich wollte den RS485 verwenden, da er ziemlich zuverlässig ist und 
multiprotokollfähig. Ich wollte ja eigentlich auch ein eigenes Protokoll 
entwerfen, es muss ja nicht sooo groß sein ;). Um mal zusehen wie viel 
aufwand das ist, wäre es nett, wenn Thomas mir mal seine Bemühungen 
nahelegt?

vielen Dank für die Bemühungen, torsten

von Purzel H. (hacky)


Lesenswert?

Nee, CAN ist fuer Autos und dergleichen. die maximale Meldungslaenge ist 
um die 6 Byte. Da ist nichts mit Filetransfers, resp das wird muehsam.

von Peter D. (peda)


Lesenswert?

Pico Oschi schrieb:
> Da ist nichts mit Filetransfers, resp das wird muehsam.

Das ist Quatsch.
Wir benutzen den CAN auch für Firmwareupdate (Bootloader), das geht ganz 
leicht.
Der Bootloader nimmt 8 MOBs als Empfangspuffer, damit kann er 64 Byte am 
Stück empfangen. Danach gibts ne Quittung und die nächsten 64 Byte 
können kommen usw.
Damit sich die 8 MOBs nicht in der Reihenfolge tauschen, sind 3 Bits im 
Identifier die Paketnummer.


Peter

von Peter D. (peda)


Lesenswert?

torsten schrieb:
> Ich wollte den RS485 verwenden, da er ziemlich zuverlässig ist und
> multiprotokollfähig.

Ob er das ist, bestimmst Du allein mit Deiner Protokollsoftware.
Der CAN ist es dagegen schon von Haus aus.
Die UART ist ohne Protokoll nur ne unzuverlässige Krücke.


Peter

von torsten (Gast)


Lesenswert?

Was ich brauche ist ein Programmierbespiel für einen Datenbus, also wie 
man überhaupt erstmal etwas sendet. Vielleicht gibt es ja auch ein tut, 
was ich dooferweise nicht gefunden habe!?

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
Noch kein Account? Hier anmelden.