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
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
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.
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?
bei reichelt gibs den max487 für ca. 2 und du kannst 128 slaves ansprechen.
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
"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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.