Übertragung großer Datenmenge über lange Entfernung
Hallo alle zusammen.
Mein Problem ist das ich 16kByte über eine Distanz von 50m übertragen muss.
Außerdem sollte das ganze noch ziemlich schnell gehen. (nicht länger als 1s für die 16kByte)
Kann mir jemand einen Tipp geben, wie ich das am besten mache!
RS 232 ist zu langsam, da benötige ich bei 9600baud 85s. Das ist definitiv zu langsam. Schneller als 9600 geht es auch bei 50 leider nicht.
Wie sieht es zum beispiel mit I²C aus? Würde das für die Entfernung gehen. Ich kenne mich leider nicht mit I²C. bei ner Übertragungsfrequenz von 400kBit/s sollte das doch gehen oder? Aber auch auf die Entfernung?
Bin für jede Hilfe dankbar.
Re: Übertragung großer Datenmenge über lange Entfernung
Zitat:
Zitat von mikro-VIIV
Hallo alle zusammen.
Mein Problem ist das ich 16kByte über eine Distanz von 50m übertragen muss.
Außerdem sollte das ganze noch ziemlich schnell gehen. (nicht länger als 1s für die 16kByte)
Kann mir jemand einen Tipp geben, wie ich das am besten mache!
RS 232 ist zu langsam, da benötige ich bei 9600baud 85s. Das ist definitiv zu langsam. Schneller als 9600 geht es auch bei 50 leider nicht.
Wie sieht es zum beispiel mit I²C aus? Würde das für die Entfernung gehen. Ich kenne mich leider nicht mit I²C. bei ner Übertragungsfrequenz von 400kBit/s sollte das doch gehen oder? Aber auch auf die Entfernung?
Bin für jede Hilfe dankbar.
Mit RS485 klappt es bis 1200 m über LAN geht auch bis ca 150m,
I²C ist nur für sehr kurze Entfernungen geeignet weil die Treiber
nur geringe Leitungskapatitäten vertragen.
RS485 ist eine Differenzsiegnal übertragung braucht also 2 Leitungsdräte
(Telefonkabel 4*2*0,6) die Datenleitung mußan beiden Enden mit
einen 120 Ohm Widerstand abgeschlossen werden.
Gruß Richard
Re: Übertragung großer Datenmenge über lange Entfernung
Hallo,
bei der Entfernung liegst Du mit RS485 am besten. 50m könntest Du mit Glück auch mit RS232 errreichen, obwohl hier meist 15m als Obergrenze angegeben werden (z.B. http://www.lammertbies.nl/comm/info/RS-485.html ).
Zitat:
Zitat von mikro-VIIV
...RS 232 ist zu langsam, da benötige ich bei 9600baud 85s.
Deine Rechnung verstehe ich nicht. Wenn ich von 10Bits=8Bits+1Startbit+1Stoppbit ausgehe, werden mit 9600kb/s pro Sekunde 960 Daten-Bytes übertragen. 16384/960~17; also 17 s für 16k! Bei 115200Bd also <1,5 s für Deine 16kB.
Zitat:
Schneller als 9600 geht es auch bei 50 leider nicht.
Den Satz verstehe ich nicht.
I2C: max. ein paar Meter für hohe Datenraten; 100m oder so gehen auch, aber dann nur mit ganz kleinen Geschwindigkeiten (z.B. <1kHz).
Noch mehr Infos: http://www.esacademy.com/faq/i2c/q_and_a/i2cqena.htm .
Gruß
Fred
Re: Übertragung großer Datenmenge über lange Entfernung
Danke erst einmal für eure Hilfe.
Zitat:
Zitat von fhs
bei der Entfernung liegst Du mit RS485 am besten
OK, dann werde ich mich diesbezüglich mal belesen.
Zitat:
Deine Rechnung verstehe ich nicht. Wenn ich von 10Bits=8Bits+1Startbit+1Stoppbit ausgehe, werden mit 9600kb/s pro Sekunde 960 Daten-Bytes übertragen. 16384/960~17; also 17 s für 16k! Bei 115200Bd also <1,5 s für Deine 16kB.
Wenn ich von 8+1+1 Bits ausgehe, dann kann ich doch 960 Byte pro s übertragen. Bei 16kByte sind das dann ~17s.
Stimmt
allerdings habe ich 16384 einzelne Bytes. Es sind 16384 Integerwerte. Wenn ich die jeweils einzeln übertrage, dann benötige ich für einen Integer ja schon 5Byte.
Es wird ja dann z.B. 1 5 2 \r \n übertragen. (hab das mal mit Bascom und Print und dem Terminalprogramm HTerm probiert) (nur so nebenbei HTerm ist echt zu empfehlen)
Wie müsste ich es denn machen, um die 16384 Integerwerte schneller zu übertragen?
Um nun nochmal zur Rechnung zu kommen.
Es waren also 960Byte/s. Ich habe 16384 Integers, Dann sind das 5*16384Byte. Demnach 81920/960=85,33s.
Desswegen geht das so langsam.
Für 11520Baud, was bei 50m leider nicht mehr möglich ist währen es dann immer noch 7.11s. Also immer noch zu viel.
OK, dann bedanke ich mich nochmals und schau mir wie gesagt RS485 mal an.
Falls weitere Fragen auftreten sollten, melde ich mich.
Bin natürlich auch weiterhin dankbar für eure Hilfe.
Re: Übertragung großer Datenmenge über lange Entfernung
Hallo,
Zitat:
Zitat von mikro-VIIV
...allerdings habe ich 16384 einzelne Bytes. Es sind 16384 Integerwerte. Wenn ich die jeweils einzeln übertrage, dann benötige ich für einen Integer ja schon 5Byte.
Es wird ja dann z.B. 1 5 2 \r \n übertragen. ....
Wie müsste ich es denn machen, um die 16384 Integerwerte schneller zu übertragen?
OK, Du willst also tatsächlich 5*16kB übertragen, da Du Deine 16kB 8-Bit Ganzzahlen als ASCII-BCD mit Zeilenvorschüben usw. überträgst.
5x effektiver wäre es, Du übertrügest einfach die rohen Bytes! Nicht alle Terminal-Programme können so etwas korrekt empfangen -- wenn Du aber das empfangende PC-Programm entsprechend ausrichtest, lässt Du es einfach die Rohdaten (und nicht BCD-Code) erwarten! Wenn das für Deine Anwendung nicht passt, musst Du tatsächlich 80kB übertragen.
Gruß
Fred