www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rs485 1 x master n x slaves


Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo :-)

ich habe da mal ein paar frage.
ich müßte über eine lange strecke (bis ca 800m) daten in eine richtung
an viele uC`s schicken. dabei wird lediglich vom master geschickt!!!
ein slave antwortet (bis jetzt zumindest) nie.

a)ist es möglich viele slaves paralel zu betreiben? da sie nie senden,
dürften so keine datenkollisionen erfolgen.

b)muß ein signal über diese strecke irgendwie verstärkt werden?

c)kabeltype für diese strecke (brauche ich eine gemeinsame
masseleitung)?

d)vorstellbare boudrate für 800meter oder mehr?

e)gibt es günstige bustreiber für 3,3v? kann ich eventuell auch
CAN-transreciver für das differential benutzen?

f) ... sachen die ich noch berücksichtigen muß ...

vielen dankt für hilfe

mfg
KoF

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS 485 erlaubt derzeit nur 32 Teilnehmer, ich habe aber gelesen, daß es
inzwischen Treiber gibt für 128 Teilnehmer. Kabeltyp Cat5. Baudrate
20.000 bis 30.000? Die Anzahl der teilnehmer kannst du erhöhen, indem
jeder Empfänger das Signal aufbereitet (nicht nur elektrisch, sondern
auch zeitlich, also einmal durch die UART schicken). CAN bus arbeitet
meines Wissens mit RS485, die Treiber solten funktionieren.
MW

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frage ist, wieviel sich unter "viele" verbirgt und mit welcher
Baudrate Du das abwickeln willst.

Bei etwa 100 Geräten und einer Baudrate von 9600 Baud ist mit
primitiver Zweidrahtleitung (kein TP, kein Schirm) problemlos eine
Länge von ~ 1km zu erzielen. Klingeldraht genügt völlig.
Leitungsverstärker o.ä. sind bei diesen Betriebsparametern nicht
erforderlich.
Allerdings sollten galvanisch getrennte RS485-Sender/Empfänger
eingesetzt werden.

Mit geeigneten Protokollen (Master schickt Anfrage an adressierbare
Slaves, Slaves antworten innerhalb eines gewissen Zeitfensters und
halten sonst die Schnauze) ist auch eine Halbduplex-Kommunikation kein
Problem. Das Protokoll sollte allerdings mit Prüfsummen/CRC
abgesicherte Pakete verwenden, um Übertragungsfehler erkennen zu
können.

Keine Ahnung, ob es auch RS485-Transceiver für 3.3V Versorgungsspannung
gibt, aber da würd' ich mal bei Maxim nachsehen, was die so im Angebot
haben.

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
woran liegt es denn, das ich "nur" 32 slaves ansprechen kann?

also müßte ich wenn ich mehr habe möchte, sozusagen eine art
cableselect  benutzen :-( (mehr leitungen) oder eine art stern vom
master aus erzeugen, an dem an jedem strang 32 slaves hängen?

Autor: Sir Wedeck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei reichelt gibs den max487 für ca. 2€ und du kannst 128 slaves
ansprechen.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Enrweder Low Current tranceiver wie sir wedec dir gesagt hat oder jeder
Empfänger muß das Signal aktiv treiben. Lies doch mal die Posts durch.
MW

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"e)gibt es günstige bustreiber für 3,3v? kann ich eventuell auch
CAN-transreciver für das differential benutzen?"

Geht sogar sehr gut.
Man spart dann auch die Sendeumschaltung und Kollisionen verlaufen
unblutig (kein Kurzschlußbetrieb).

Aber nicht RS-485 mit CAN mischen !

Und Abschlußwiderstände nicht vergessen !


Peter

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wegen den CAN-Transrecivern frage ich ja nur, weil ich da noch welche
von habe ;-)

ursprünglich wollte ich eine einfache art von hausbus realisieren (mit
CAN) aber nach einigen experimenten und tests habe ich festgestellt,
das  auf den datenverkehr vom slave her verzichtet werden kann. und da
ich lediglich  8 datenbytes (festgelegt) übertrage (eventuell noch eine
checksumme und je ein byte für start und ende der übertragung) meine
ich, das CAN hier überflüssig sein kann. und ich dieses billiger und
mit weniger codeaufwand das ganze betreiben kann. und wenn ich doch mal
daten vom slave haben will, dann werde ich nur ihm die ganze
aufmerksamkeit geben ;-) sprich alle anderen stumm machen ;-)
dazu muß ich dann wohl das protokoll umändern, aber das ist ja kein
aufwand.

aber vielen dank

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ich denke mal, ich werde ein protoll ähnlich dem diesen nehmen!
-------------------------------------------------------------------

0x02; 0xXX; 0xXX; 0xXX; 0xXX; 0xXX; 0xXX; 0xXX; 0xXX; 0xXX; 0xXX; 0xXX;
0xXX; 0xXX; 0x03

1. byte:  0x02:   Start des protokolls
2. + 3. byte:  welcher slave (max also 65546 slaves (ok etwas
übertrieben ;-))
4. byte:  master erwartet daten = 0x00 / schreibt daten = 0xff
5. - 13. byte:  daten die der master haben will / daten, die der master
schreibt
14. + 15. byte:  checksumme
16. byte  0x03:  ende des protokolls

ok, ich werde eventuell auf die checksumme verzichten und auch sind 256
slaves wohl genug ;-)
also komme ich auf 13 bytes.

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.