www.mikrocontroller.net

Forum: Compiler & IDEs RS485 Protokoll auf einen ATmega32


Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte zwei ATmega32 miteinander vernetzen. Der eine sitzt ca. 60m 
(in HF-verseuchter Umgebung) von dem anderen uC entfernt. Ziel ist es 
mit dem einen uC eine Steuerung zu realisieren und mit dem anderen eine 
Art zusätzliche "Fernbedienung" zu realisieren.

Ich dachte mir, dass ich das ganze per RS485 übertragen, denn für RS232 
ist der weg zu lang und andere Busse sind ggf. zu anfällig auf die 
starken elektromagnetischen Felder!?

Ich habe schonmal einen ATmega (vom STK500 mit AVRStudio und WinAVR) mit 
dem PC via RS232 sprechen lassen, mehr Erfahrung habe ich auf dme Gebiet 
nicht.

Soweit ich nun herausfinden konnte benötige ich nun für jeden uC einen 
RS485 Bustreiber (z.B. MAX485), die Ein-/Ausgänge zum uC trenne ich noch 
mit schnellen Optokopplern. Benötige da wohl 3 Pins vom uC (TXD, RXD, 
Richtung) und somit für den Bus eine 3-Draht-Leitung für halfduplex.

Nur: Wie implementiere ich das nun im Programm, was muss ich 
programmieren, ich hab keinen Plan wo ich anfangen soll. Gibt es denn 
ggf. fertige Libs für ein RS485 Protokoll??

Für jegliche Hilfestellung wäre ich sehr dankbar.

Grüße Pascal

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS485 (und RS422) sind keine Protokolle, sondern nur Definitionen von 
Übertragungsleitungen. Wenn du mit 4 statt 2 Leitungen (evtl. plus GND) 
leben kannst, nimm RS485 oder RS422 full duplex statt RS485 half duplex, 
dann ändert sich softwareseitig gegenüber RS232 rein garnichts, weil 
beide Richtungen unabhängig arbeiten können und somit keine 
Richtungsumschaltung nötig ist.

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

vier Adern (plus GND) sollten kein Thema liegen, auf der Strecke liegt 
noch eine CAT5-Leitung (also 8 Adern plus Schrim). Die kann ich alle 
verwenden...

Jetzt ne blöde Frage: Du sagst, es ändert sich dann nichts auf der 
Softwareseite?
Was heißt das nun genau? Wie schließe ich denn nun die 
Schnittstellen-ICs an den uC an, wie steuere ich denn nun den Transfer?
Kann mir jemand ma ein Codeschnipsel zukommen lassen wie dass für mein 
Problem aussehen könnte? (z.B. ich drücke am uC 1 einen Taster, der uC 2 
soll das per RS485 "erfahren" und einen Ausgang schalten).


Grüße Pascal

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pascal wrote:

> Was heißt das nun genau?

Das heisst, dass die Kommunikation exakt genauso verlaufen kann, als 
wäre die Verbindung mit RS232 realisiert. Einzig die Leitungen selbst 
und deren Treiber unterscheiden sich.

> Wie schließe ich denn nun die
> Schnittstellen-ICs an den uC an,

Beispielsweise MAX488, oder auch gleich potentialgetrennt mit MAX1490. 
Wie das aussieht steht in den Datasheets.

> wie steuere ich denn nun den Transfer?

Du schreibst, dass du RS232 schon mal verwendet hast. Genau so.

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, dann ist mir schonmal ein wenig geholfen.

RS232 hab ich schonmal verwendet um vom uC zum PC (Terminalprogamm) 
Infos zu senden und um vom PC Terminal Befehle an den uC zu senden.
Wie mache ich das denn nun wenn statt dem PC der zweite uC ins Spiel 
kommt? Wie regle ich wann wer sendet und wann hört? Wie verpacke ich die 
Steuerinformationen für den jeweils anderen uC?

Grüße

Autor: Jochen S. (jochen_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
der Witz liegt darin, dass du jeweils 2 Bustreiber pro Teilnehmer hast 
und von denen je einer an TX und einer an RX hängt. Derjenige der an TX 
(senden) hängt ist dauherhaft so beschaltet das er sendet der an RX 
(empfangen) ist so beschaltet, dass er dauerhaft empfängt. Dadurch hast 
du den Sende/Empfangswechsel weg.

Jochen

Autor: Dieter.B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es fehlt wohl noch das Protokoll.

Da muss man nicht alles neu erfinden. Sowas gibt es schon.

Für eine Punkt zu Punkt Kopplung hat Siemens schon vor langer Zeit das 
Protokoll 3964R / RK512 definiert. Die Dokumentation dazu steht auf der 
Siemens Internetseite (Bereich Automation) zum Download bereit.

Von dem ganzen Protokoll braucht man in der Regel nur eine kleine 
Teilmenge. Das sollte innerhalb von 2 bis 3 Tagen programmiert und 
getestet sein.

Das Siemens Protokoll zeichnet sich auch durch eine sehr hohe 
Datensicherheit aus, da es verschiedene Fehlerüberprüfungen beinhaltet.

Leider sind mir keine Bibliotheken bekannt, die man für einen 
Microcontroler bekommen kann.

Ein anderes sehr schönes und sehr leistungsfähiges Protokoll ist der 
Modbus. Auch für dieses Protokoll steht die komplette Dokumentation im 
Internet kostenlos zum Download bereit.

Mit dem Modbusprotokoll kann man problemlos ein System mit einem Master 
und mehreren Slaves aufbauen. Auch hier braucht man in der Regel nur 
eine kleine Teilmenge der gesamten Funktionalität.

Der Modbus ist einer der weltweit verbreitesten Bussysteme auf RS485- 
Basis. Für diesen habe ich auch schon mal fertige Bibliotheken für AVR 
etc. gesehen. Leider waren diese Angebote immer kommertiell.

Die Notwendige Teilmenge des Modbus für einen einfachen Datenaustausch 
zwischen 2 Partnern sollte innerhalb von 1 bis 3 Tagen programmiert und 
getetstet werden können.

Bei allem gilt: Google hilft wunderbar.

Viel Spass

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.