- 12V Akku mit 280 Ah bauen         
Seite 1 von 7 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 64

Thema: Übertragung großer Datenmenge über lange Entfernung

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    169

    Übertragung großer Datenmenge über lange Entfernung

    Anzeige

    Praxistest und DIY Projekte
    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.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555

    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

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    69
    Beiträge
    622

    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.

    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

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    169

    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.


    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.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    69
    Beiträge
    622

    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

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.08.2006
    Beiträge
    169
    Danke für die schnelle Antwort Fred.

    Wie mach ich das denn dann in Bascom, dass ich nur die Rohdaten übertrage. Ich hätte das wahrscheinlich auch schon so gemacht (geht ja 5* schneller), wenn ich wüsste wie.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    69
    Beiträge
    622
    Hi,

    tut mir leid, da überlasse ich den Experten das Feld. Ich kann kein Bascom; benutze nur Assembler und C.

    Gruß

    Fred

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    wenn ich mich richtig entsinne mit writebyte aber da bin ich jetzt mal gaaaaaaanz vorsichtig...

    aber zu rs485 kann ich dir wirklich raten, das ist ein prima bus für höhere distanzen!

    einfach einen rs485 chip hinter rx-tx von deinem controller, findest im netz dazu sicherlich schaltpläne

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    41
    Beiträge
    982
    hiermit kanst du eine word variable als 2 byte "rohdaten" senden:

    dim x as word
    printbin x


    auszug aus der Bascom hilfe:

    Syntax

    PRINTBIN var [ ; varn]
    PRINTBIN #channel, var [; varn]

    Remarks

    PRINTBIN is equivalent to PRINT CHR(var);
    When you use a Long for example, 4 bytes are printed.

    Multiple variables may be sent. They must be separated by the ; sign.

    The number of bytes to send can be specified by an additional numeric parameter. This is convenient when sending the content of an array.

    Printbin ar(1) ; 3 ' will send 3 bytes from array ar().
    Printbin ar(1) ; 2 ; ar(2) ; 4 ' will send 2 bytes from array ar() starting at index 1, then 4 bytes from array ar() starting at index 4.

    When you use Printbin ar(1) , the whole array will be printed.
    When you need to print the content of a big array(array with more then 255 elements) you need to use the CONFIG PRINTBIN option.


    gruss bluesmash

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Pfalz
    Beiträge
    154
    Hast Du mal die Möglichkeit überlegt die Daten zu packen?
    klarer Nachteil:du bräuchtest dann ein eigenes Auswertungsprogramm und weitere Resourcenbedarf im Sender.

Seite 1 von 7 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test