mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 <--> RS485 Datenübertragung


Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte einen Frequenzumrichter der mit einer RS485 ausgestattet ist
mit einer Mini-SPS die nur über RS232 verfügt parametrieren.

Mir wurde gesagt dass es Ohne weiteres möglich ist die Verbindung
direkt herzustellen.Es müssten nur Kabel gekreuzt werden.

Allerdings habe ich auch gelesen dass RS232 mit +-12V Pegel Arbeitet
und RS485 nur mit+-5 V.

Ich bin jetzt irgendwie verwirrt und hätte an dieser Stelle
klärungsbedarf ;).

Kann mir das jemand nochmal genauer verklickern?

DAnke schon mal im Voraus.

Steffen Brüssel

Autor: Lord Helmchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das kann nicht so einfach sein. RS485 hat zwei differentielle
Leitungen, die sowohl RX als auch TX sind. Ohne Umsetzer kann man das
nicht auf die getrennten RX/TX einer RS232 umfriemeln.

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

Hab ich mir schon gedacht.
Dann werd ich mal bei MAXIM nach Bausteinen suchen die das können.
der MAX232CPE scheint das zu können jedenfalls lt Conrad..
Ist halt wieder mehr gebastel als geplant.

Danke für dein Post ;)

Bye

Autor: Lord Helmchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal.

der max232 war doch nur ein Umsetzer TTL-RS232, wie soll das gehen?

ELV hat ein Gerät, was tut, was du willst - 68-326-65
Vielleicht findet sich dazu irgendwo der Schaltplan, wenn ja, kannste
ihn auch rausrücken, würde mich auch mal interessieren, was drinnen ist
:)

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke nochmal. Warum schreibt Conrad das dann... da ist man als nicht
Elektroniker wieder voll ange***..

Hab noch ein wenig gesucht und nen Schaltkreis mit dem wohlklingenden
Namen ADM485 gefunden der wunderbar an die UART vom AVR passt. Das Teil
was du gefunden hast nehm ich mal genauer unter die Lupe ;)

Gruß

Steffen

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www1.conrad.de/conrad/layout2/detail.fh?fh_...

Hier das ist der Link zu dem Bauteil bei Conrad. Scheint so als ob die
Zeile wo der MAX232CPE steht tatsächlich gar nix mit dem angezeigten
Produkt zu tun hat... Nun ja...

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was Du brauchst, ist ein Protokollumsetzer.

RS485 arbeitet oft mit 9 Bits, um erstmal einen Slave adressieren zu
können.

Desweiteren benötigst Du ein zusätzliches Steuersignal, um zwischen
Senden und Empfang umzuschalten.

Ohne das benutzte RS485-Protokoll zu kennen geht also garnichts.


Peter

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es ist nicht nur eine Pegelwandlung, sondern auch angepasste SW
notwendig.

Die Richtung das Datenverkehrs muss ja auch auf beiden Seiten
umgeschaltet werden.

Kurt

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

zum Protokoll. Da ist ModBus RTU vorgesehen. Mit dem Umschalten könnt
man hinbekommen da ich ja lt. Modbus RTU sowieso nur ein Telegramm
sende und dann auf Bestätigung bzw. auf das Antwort-Telegramm warte.
Umschalten macht er ja auf der RS485 Seite allein oder?
Was ähnliches hab ich auf nem AVR schon mal gemacht. Allerdings war da
sowieso die RS232 Grundlage.

Das geht hier grad viel zu schnell. Ich muss erstmal wieder nachdenken
;)

Je mehr aufwand das wird umso weniger warscheinlich wird es das wir das
einsetzen werden. Zur not wird der FU halt über Digitale I/O angesteuert
und nicht über Schnittstelle mit Protokoll.
Gruß

Steffen

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

Der FU hat schon ein komplettes ModBus RTU Protokoll implementiert. der
FU ist dabei der Slave(logisch oder?). Ich muss ihn vorher adressieren
und muss  dann auf SPS seite die Byte-Telegramme zusammenstellen
entsprechend der ModBus RTU Spezifikation.

1.byte Adresse
2.Byte Funktion
3.byte Zieladresse (Read/Write)MSB
4.byte Zieladresse (Read/Write)LSB
5.Byte Data MSB
6.Byte Data LSB
.
.
.
x-1 byte CRC LSB
x byte   CRC MSB
So in etwa. Antwort Telegramme sind genauso aufgebaut.

Gruß

Steffen

Autor: Wolfram Szentiks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also für die RS-485 gibt es auch 2 Möglichkeiten,
2-Draht, oder 4-Draht.

Bei der 2-Draht Lösung muß natürlich umgeschaltet werden, was meist mit
dem RTS-Signal erledigt wird.
Wenn Du aber eine feste Strecke ohne bekanntes Protokoll umsetzen
möchtest, nimmst Du einfach eine 4-Draht RS-485.
Damit ist dann auch keine Anpassung oder sonst was nötig, es wird halt
lediglich eine Konvertierung jedes Signals (RXD,TXD) von RS-232 Pegel
auf Differenzsignal - und zurück- vorgenommen.

Gruß Wolfram

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"also für die RS-485 gibt es auch 2 Möglichkeiten,
2-Draht, oder 4-Draht."


Es gibt RS485   ein Leitungspaar  für hin und zurück

und RS422     zwei Leitungspaare

Kurt

Autor: Wa(h)lfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vollduplex = 2 Leitungspaare (keine Umschaltung notwendig).
Auch bei RS485!
Halbduplex = 1 Leitungspaar bei RS485 (Umschaltung notwendig)

Autor: Philipp Sªsse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Das erste Byte "Adresse" beim Protokoll klingt nach Busadresse, bei
der wird dann üblicherweise das 9te Bit gesetzt. Das solltest Du Dir
dann noch anschauen, ist aber natürlich keine große Sache.

2. Erst schreibst Du von einer SPS mit RS-232, dann von einem AVR mit
UART. Also offenbar eine SPS, mit einem AVR, deren UART auf RS-232
Pegel umgesetzt wird. Soll jetzt noch ein Extrakasten an die RS-232
ran? Wesentlich einfacher wäre es natürlich, die Pegelwandlung auf
RS-232 zu ersetzen gegen eine für RS-485. UART ist ja genauso gern 485
wie 232, auch wenn in Bastlerkreisen gerne UART und 232 assoziiert
wird.

3. Wolfram, Kurt und Walfänger schreiben dasselbe mit anderen Worten,
weiß der Kuckuck warum. Egal. Wenn Vollduplex, reicht wirklich eine
Pegelanpassung, Sende- und Empfangsbit des 485-Treibers können ständig
aktiv gesetzt werden. Falls Halbduplex, hat die RS232 hoffentlich
mindestens eine Hardware-Handshake-Leitung belegt, über die dann
zwischen Senden und Empfangen umgeschaltet werden soll. Das Protokoll
ist ja so einfach, daß auch das kein Problem ist.

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nene, den avr hab ich als Beispiel genant. Da hab ich shcon mal ne
ModBus RTU Kommunikation gemacht. Wobei ich die allerdings auf beiden
Seiten Implementiert hab. da Fallen Fehler nicht so shcnell auf solang
man sie auf beiden Seiten gleich macht.

Ich habe genaugesagt eine SmartLogic von IFM da ist kein AVR drin und
einen FU von Control Techniques.
Ob ich beim FU zwischen den Betriebsmodi von RS485 wählen kann wage ich
mal zu bezweifeln.
Beschriftet ist eine Leitung mit RXTX und eine mit GND die letzte mit
RXTX negiert.
Daher eh ich davon aus, dass das Teil nicht im Vollduplex Betrieb
arbeiten kann. Da das ModBus Protokoll auf Antworten wartet ist
Vollduplex sowieso unnötig.
Die Adresse ist die ModBus Adresse. Die wird auch per Telegramm in
einem Byte übertragen. Das 9. Bit ist mir fremd. Ich kenn nur die
übertragung von 8 Datenbits sowie Start und Stop. 9. Bit für die
Adressierung ist mir also unbekannt. Vielleicht hat jmd dafür nen Link
wo ich mich belesen kann. Wenn das alles in allem so umfangreich wird,
kann ichs ganz lassen weil meine Kosten insgesamt dann höher sind als
das Endprodukt. Das dumme ist halt das diese Umsetzer von RS232 auf
RS485 so sau teuer sind.
Das oben angegebene Teil kostet etwa die hälfte von dem was der FU
kostet. (naja zumindest fast) Das ist einfach Inakzeptabel teuer. Da
wir mindestens 8 SPS FU Kombinationen haben sind das mal eben 1000
Euro.

Wenn sich nix anderes ergibt. Werde ich direkt mit Digitalen I/O
arbeiten. Das ist zwar letztlich weniger komfortabel allerdings preis-
und nervengünstiger.

Gruß

Steffen

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ergänzung.

Nein die RS232 hat Ausschließlich RX TX und GND.

Gruß

Steffen

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die RS485-Gegenseite keinen Vollduplex kennt, die RS232-Seite aber
keine Senderumschaltung zulässt, dann ist eine Umsetzung ziemlich
schwierig.

Der RS485-Sender, der im Umsetzer verbaut ist, muss sich hochohmig
schalten, sobald von der RS232-Seite keine Daten mehr gesendet werden,
da sonst auf der RS485-Strecke zwei Sender "gegeneinander" arbeiten.

Ist die Protokollänge, die von der RS232-Seite aus gesendet wird,
konstant (beispielsweise immer 3 Bytes), dann ließe sich die
Senderumschaltung mit einem Monoflop (nicht retriggerbar) realisieren,
das auf das Startbit reagiert und für die Dauer eines Protokolles aktiv
bleibt.
Vom Timing her kniffliger wäre eine Einzelbyte-Umschaltung, die
ebenfalls mit einem Monoflop zu realisieren wäre, das Impulse von exakt
einer Bytelänge (incl. Start-, Parity- und Stopbit) erzeugt.

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt z.B. von der Firma Spectra einen RS232 <-> RS485 Konverter,
Typenbezeichnung irgend was mit 7520. google sollte mehr dazu wissen.
Kostet so rund 70 Euro + Märchensteuer.

Dieter

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und? Wie löst der das Problem der Sender/Empfängerumschaltung?

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das macht er selbstständig, und zwar auch bei wechselnden Baudraten. Ich
weiss aber nicht wie schnell das geht, für unsere ganz ordinäre ASCII
und Binär Datenübertragung ohne Protokoll reicht es alle mal (9600 bis
115200 Baud). Das angesprochene Gerät braucht ja auch etwas Zeit bis es
die Antwort auf die Anfrage fertig hat zum Senden.

Dieter

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du betreibst das Teil auf der RS232-Seite definitiv nur mit den
Leitungen rxd/txd (und Masse) und hat nur 'ne
RS485-Zweidraht-Verbindung?

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jau so isses, aber nix für ungut - ich leg mich ab, um 6 is die Nacht
rum.

So long    Dieter

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mir das so alles durchlese scheinen die 70-100 Euro für son
Kabel / Adapter gerechtfertigt zu sein.

Ich will ja nicht das Rad neu erfinden. Wenn ihc das privat machen
müsste würd ich mir das vielleicht noch überlegen, aber in der Firma
macht da sicher keiner mit ;). Wenn ich da 2 Wochen dran rumbastel dann
kann ich auch gleich für die komplette Anlage sone Umsetzer bestellen
;).

OK, danke für eure Tips.

und ne Gute Nacht @ Dieter

Gruß

Steffen

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffen,

nochmal zur Klarstellung: Der Konverter kann offensichtlich nur Daten
umsetzen, die auch mit einem im PC verwendeten RS232 Baustein (8250,
82550 usw.) erzeugt bzw. empfangen werden können.
Für Profibus DP z.B. ist er nicht geeignet, da hier offenbar eine
andere Bitstruktur der Daten vorliegt, siehe Beitrag von Peter
Dannegger.
Ob es mit Modbus klappt weiss ich leider auch nicht.

Dieter

Autor: Karl-heinz Domnick (kalledom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich würde gerne mit meinem Problem hier anknüpfen.

Als Brandschutzklappen-Steuerung und -Überwachung habe ich Platinen und 
Software in Assembler für einen PIC16F877 realisiert, die auch als Slave 
über eine RS485 2-Draht an ModBus angebunden wird: 
http://www.domnick-elektronik.de/aktbsk.htm

Auf der unteren Platine ist ein MAX232 für eine RS232 Schnittstelle und 
ein SN75176 für eine RS485 Schnittstelle mit Jumper zur Auswahl des 
Rx-Ausgangs platziert.
Mit dem Programm ModScan läuft die Software über RS232 perfekt. Es kann 
alles abgefragt und auch gesteuert werden.

Über RS485 läuft es nicht so gut, weil mir die Zeitpunkte der 
Umschaltung zum Senden bzw. Zurückschaltung auf Empfang unbekannt sind. 
Es gehen Bits verloren oder werden verschoben ???

Nach Empfang des letzten Bytes (CRC) sollen laut Protokoll 3,5 Byte an 
Wartezeit vergehen. In anderen Beschreibungen finde ich Werte von 
maximal 4 ms als TimeOut-Wert bei 9600 Baud, denen man nicht zu nahe 
kommen sollte, wieder andere schreiben von 10...100ms. Das sind alles 
Abstände zwischen Anfrage vom Master und Antwort vom Slave.
Zu welchem Zeitpunkt schaltet der Master, in diesem Fall der PC über 
RS232 zu einem Converter (IC485IP-1) RS232 <--> RS485, mit dem 
RTS-Signal den Baustein in dem Converter den Sender aus / auf Empfang 
und wann darf ich meinen SN75176 auf Senden umschalten ?
Die gleiche Frage für die umgekehrte Richtung.

Mittlerweile kenne ich sehr viele Bedienungsanleitungen von Geräten, die 
an den ModBus angeschlossen werden können. :-(
Niemand beschreibt für das Antworten den Zeitpunkt zum Umschalten von 
Empfang auf Senden und umgekehrt.
Viellecht kann mir jemand aus diesem Forum helfen.

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.