Forum: Mikrocontroller und Digitale Elektronik tatsächliche Boundrate


von Mirek Kowal (Gast)


Lesenswert?

moin,
bin ein anfänger und würde gerne erfahren, wie  man allgemein die
maximale übertragungsbandbreite eines systems (µC -> PC oder µC -> µC
bzw µC -> sender) bestimmen kann.
habe gerade mit einem projekt angefangen, und würde gerne rausfinden
wie gross die wirkliche bzw tatsächliche boundrate in dem vorliegenden
system ist.

mirek

von Mike (Gast)


Lesenswert?

"boundrate"

Hängt von der Konfiguration ab. Baudrate = Frequenz, mit der die Bits
auf dem Bus ausgegeben werden.

von crazy horse (Gast)


Lesenswert?

begrenzende Faktoren:
-erforderliche Leitungslänge (je länger, desto geringer die mögliche
Baudrate)
-welche Baudrate kann auf dem MC überhaupt mit ausreichender
Genauigkeit erzeugt werden?
-aufgrund der stark begrenzten Ressourcen auf dem MC: was mache ich mit
ankommendenn Daten? Allzuviel Speicher steht normalerweise nicht zur
Verfügung.

von Mirek Kowal (Gast)


Lesenswert?

hallo,
danke für die hilfe.
habe da paar fragen die sich nach euren postings ergeben haben,

begrenzende Faktoren:
-erforderliche Leitungslänge (je länger, desto geringer die mögliche
Baudrate)

wie wird das den genau berechnet? welche parameter muss ich kennen? und
wie gehen sie in die berechnung ein?


-welche Baudrate kann auf dem MC überhaupt mit ausreichender
Genauigkeit erzeugt werden?

weiss ich nicht, aber das kann man doch im dateblatt zu den MC erfahren
oder?
welche Baudraten (bzw. übertragungsfrequenzen) gibt es, bzw. welche
sind max möglich?


-aufgrund der stark begrenzten Ressourcen auf dem MC: was mache ich mit
ankommendenn Daten? Allzuviel Speicher steht normalerweise nicht zur
Verfügung.

was kann man den da machen? ???????????????????????????
wieviel speicher gibt es denn maximal?


würde mich über antworten zu meinen fragen sehr freuen.
mirek

von Christof Krüger (Gast)


Lesenswert?

Machen wir das doch mal andersrum:

Sag uns doch einfach mal, was du machen willst, dann können wir viel
spezieller auf deine Fragen eingehen.

Ansonsten ist die Anwtwort nämlich immer 42.

von Martin S. (Gast)


Lesenswert?

@Mirek
Viele deiner Fragen sind sehr systemspezifisch (sowohl PC-seitig, als
auch MC-seitig. Ein Beispiel:

In meinerm Windows 98 PC bekomme ich unter "Systemsteuerung /
Gerätemanager / Eigenschaften von COM und LPT" folgende
Übertragungsraten aufgelistet:
110,300,1200,2400,4800,9600,19200,38400,57600,115200,230400,460800,92160 
0

Ob mein serieller Baustein auf der Hauptplatine des PC überhaupt
unterstützt ist mir nicht bekannt, denn alleine das Auflisten des
Wertes an deser Konfigurationsstelle ist für mich noch keine GArantie
dafür.

Dies Baudraten sind nicht "gottgegeben", man kann wenn man mag
(inenrhalb gewisser Grenzen) auch "krumme" BAudraten definieren und
aktivieren, aber welchen Sinn sollte es machen, eine Baudrate von z.B.
4711 Buad zu definieren, wenn man doch mit dem vordefinierten Wert von
4800 viel eher die Chance hat, 2 Geräte auf 4800 zu koppeln?

Übertragungsraten bis ca. 9600 wirst du noch mit relativ schlechter
Kabelqualität über kurze Strecken übermitteln können. Übertragungsraten
enseits von 115200 sind eher als "ein bischen" kritisch anzusehen.
Dies betrifft die genutzte Kabelqualität als auch die angeschlossenen
MC (die ja derartige Taktraten auch "verkraften" müssen.

Die Übertragungsgeschwindigkeit und Leitungslänge hängt auch von den
vorhandenen physikalischen Leitungswegen ab. mit der "RS232" werden
die Bits "asymetrisch" mit einem Spannungspegel +12 oder -12 Volt
übertragen. Die gleiche seriielle Leitung kann jedoch auch mit
"RS485" Transmitter-Bausteinen deine Daten symetrisch übertragen und
kann dannw esentlich größere STrecken oder widrigere
Umgebungsbedingungen (Leitungs-Störungen) verkraften.


Wegen der Speicherkapazität: Die Antwort kannst du dir selbst
beantworten:
Wenn du z.B. Meßdaten von einem MC zu einem PC schickst, und zwar mit
115000 Baud, dann sind das ca. 10 KByte/Sekunde die da auflaufen. Häng
eine 100 GByte Festplatte an deinen PC und rechne aus, wie lange du
derartige Daten aufsammeln kannst. Sicherlich wirst  du an einen MC
keine 100 GB Festplatte koppeln, sondern etwas was deinem Bedarf
entspricht. Und wenn dein Bedarf halt ist: "10 MByte müssen
zwischengespeichert werden" (z.B. eine umfangreiche Meßwerterfassung
und Zwischenspeicherung) dann mußt du dir halt einen "passenenden" MC
aussuchen, der soviel internenen oder externen Speicher ansprechen kann.
Die Datenblätter des MC sollten dir sicherlich Auskunft geben.

von Mirek Kowal (Gast)


Lesenswert?

hallo,
danke für die antworten.

also definiere ich vorab meine baudrate? aber wie ist das den wenn ich
eine drathlose übertragung machen würde, wo die baudrate immer
schwankt, z.b. wenn die länge der übertragung mal länger mal ganz kurz
ist, wie könnte ich das berechnen und darauf reagieren?

bzw. wenn ich die baudrate festlege und mein system das nicht schafft
wegen störungen ect. und ich anhand dieser baundrate meine datenmenge
definiert habe die zu übertragen ist, müsste ich doch die
nichtübertragenen daten managen, aber wie kann mir da ein puffer
vorstellen, aber wie das genau code technisch ablaufen könnte weiss ich
nicht, ist das viel programmierarbeit?


wenn ich mit 115000 Baud schicke würde, wären es doch genau 115000/8
=14375 byte/s nicht wahr?

mirek

von abgreifer (Gast)


Lesenswert?

+1Startbit +8DataBits +1Stopbit => 115000/10 = 11500 Bytes/sek, oder?

und wenn die Übertragungsrate hoch ist, möchte man vieleicht noch das
Byte auf Korrektheit prüfen können, dh. + 1 Paritäts-Bit.
Sind nun schon 11 Bit statt 8.

von Martin S. (Gast)


Lesenswert?

@Mirek
Sicherlich mußt du dir im Vorfeld überlegen, welche Datenmenge du zu
übertragen hast, und was deine Hardware (Übertragungsstrecke) hergibt.


Sinnvollerweise bliebt jedoch de eigentliche Schrittgeschwindigkeit
(Baudrate) für den "Übertragungsweg" immer die Gleiche. Sender und
Empfänger müssen sich ja erst mal zueinander Synchronisieren, und da
kann es sehr aufwendig sein, da erst mal eine gemeinsame (neue)
Buadrate auszuhandeln. Ganz unmöglich ist das jedoch nicht (halt nur
sehr aufwendig).

Welche Übertragungsbandbreite benötigst du den minimal, und was ist
deine maximale BAndbreite (d.h. was gibt dein Leitungsweg, udn Sender
sowie Empfänger da vor?

Richtig ist, daß alles das was du nicht übertragen kannst erst mal
gepuffert werden muß. Bis zu einer gewissen (kleinen) Menge (z.B. 8
Bytes) könenn die seriellen Übertragungsbausteine schon selbst
zwischenpuffern. Wenn es mehr werden soll dann mußt du dir auf dem
jeweiligen System einen "Ringpuffer" einbauen.

Wenn du noch nie mit Programmier-Hochsprachen gearbeitet hast, ist es
sicherlich etwas aufwendig, da erst einmal "strukturiert zu denken",
daß da gleich programmierbare Algorithmen raus kommen.
Assembler-Programmierung ist noch um einiges aufwendiger, da du da die
Architektur und die Assemblerbefehle deines MC ganz genau kennen must.

von Martin S. (Gast)


Lesenswert?

@Mirek
Sicherlich mußt du dir im Vorfeld überlegen, welche Datenmenge du zu
übertragen hast, und was deine Hardware (Übertragungsstrecke) hergibt.


Sinnvollerweise bliebt jedoch de eigentliche Schrittgeschwindigkeit
(Baudrate) für den "Übertragungsweg" immer die Gleiche. Sender und
Empfänger müssen sich ja erst mal zueinander Synchronisieren, und da
kann es sehr aufwendig sein, da erst mal eine gemeinsame (neue)
Buadrate auszuhandeln. Ganz unmöglich ist das jedoch nicht (halt nur
sehr aufwendig).

Welche Übertragungsbandbreite benötigst du den minimal, und was ist
deine maximale BAndbreite (d.h. was gibt dein Leitungsweg, udn Sender
sowie Empfänger da vor?

Richtig ist, daß alles das was du nicht übertragen kannst erst mal
gepuffert werden muß. Bis zu einer gewissen (kleinen) Menge (z.B. 8
Bytes) könenn die seriellen Übertragungsbausteine schon selbst
zwischenpuffern. Wenn es mehr werden soll dann mußt du dir auf dem
jeweiligen System einen "Ringpuffer" einbauen.

Wenn du noch nie mit Programmier-Hochsprachen gearbeitet hast, ist es
sicherlich etwas aufwendig, da erst einmal "strukturiert zu denken",
daß da gleich programmierbare Algorithmen raus kommen.
Assembler-Programmierung ist noch um einiges aufwendiger, da du da die
Architektur und die Assemblerbefehle deines MC ganz genau kennen must.

von thkais (Gast)


Lesenswert?

Eine Datenübertragung per Funk mit 115kBaud - das wird teuer. Technisch
bedingt wird der Aufwand, Daten zu übertragen, umso höher, je höher die
Baudrate sein soll. Das gilt sowohl bei Funk als auch bei Kabel.
Zunächst mal macht man sich Gedanken, wieviele Daten pro Zeiteinheit
überhaupt übertragen werden sollen. Nehmen wir mal an, es sind 500
Bytes pro Sekunde. Das entspräche einer Baudrate von 5000 Baud (siehe
Rechung von abgreifer). Aber wie Du schon richtig bemerkt hast, kann es
zu Fehlübertragungen kommen - also braucht man noch etwas Platz für
Sicherungsmaßnahmen (Prüfsummen, Zeit zum Wiederholen), deshalb würde
ich min. auf 9600 Baud gehen (das ist die nächste "gerade" Baudrate).
Dann kommt es darauf an, wie "sicher" die Übertragung sein soll -
macht es beispielsweise etwas aus, wenn ein Paket fehlt, muß es auf
jeden Fall wiederholt werden etc.
Vielleicht postest Du einfach mal, was Du genau vorhast, dann können
wir Dir wesentlich besser weiterhelfen.

von Mirek Kowal (Gast)


Lesenswert?

hallo,
also, zuerst was ich vor habe, ist messdaten (sicher) drathlos zu
übertragen, zuerst möchte ich ein wegsensor auslesen und ein
temperatursensor. reicht auch erstmal der wegsensor, da dieser mit
einer höheren abtastrate als der temperatursensor abgetastet wird. d.h.
ich bekomme so max an die 10000byte/s von dem wegsensor, d.h. es wären
5000 werte da eine amplitude bzw. ein wert in 2 byte -> 16 bit
dargestellt wird.

so bräuchte ich eine baundrate von ca. 100k baund nur für diesen kanal,
es sollen später aber mehr werden bis 8, aber erstmal klein anfangen.
ist das alles realistisch was ich erzähle?
so wäre meine min baudrate 100kbaund und später 800kbaund ist das
möglich???

d.h. auch für mich wie martin s. geschrieben hat

Sender und Empfänger müssen sich ja erst mal zueinander
Synchronisieren, und da kann es sehr aufwendig sein, da erst mal eine
gemeinsame (neue)Buadrate auszuhandeln. Ganz unmöglich ist das jedoch
nicht (halt nur sehr aufwendig).

das ich dieses tun müsste, wie gehe ich da vor?

hoffe das ich jetzt genug infos gegeben habe und ihr mir jetzt weiter
helfen könnt? würde mich sehr freuen, lese mich die ganze zeit parallel
in das thema ein aber se ist nicht einfach am anfang des himalaya zu
stehen und hoch zu gucken.

mfg
mirek

von thkais (Gast)


Lesenswert?

Prinzipiell handeln Sender und Empfänger nicht die Baudrate aus. Man
legt die Baudrate von vornherein fest, und zwar mit dem zu erwartenden
Maximum.
Man kann nun tatsächlich mit unterschiedlichen Baudraten (man schreibt
"Baud" ohne "n")  operieren, das einfachste ist, der Sender teilt
dem Empfänger mit einem Befehl mit, daß nun eine andere Baudrate
verwendet wird. Ist aber relativ ungewöhnlich, mitten im Betrieb zu
wechseln.
Bei Baudraten von 100 - 800kBaud per Funk klinke ich mich aus. Mir ist
momentan nichts bezahlbares und für den normalen Anwender beschaffbares
bekannt, das diese Übertragungsraten sicher realisieren kann. Unter
sicher verstehe ich dann auch eine bidirektionale Verbindung, damit bei
Fehlübertragungen Korrekturen ausgelöst werden können.
Evtl. gibts so etwas im 2,4GHz-Band. Da muß nun aber jemand anders
übernehmen.

von Mirek Kowal (Gast)


Lesenswert?

hallo,
vielleicht habe ich jetzt übers ziel hinausgeschossen.
was mich prinzipiell interessiert, ist der ablauf bei dieser geschichte
wie ich anfangen könnte, vorallem software technisch?
hardware ist erstmal nebensache.

z.B.
-Synchronisieren von sender und empfänger (da die entfernung nicht
konstant ist)
-wie man abfragen kann wieviele kanäle bzw sensoren angeschlossen sind
usw.

mirek

von Mirek Kowal (Gast)


Lesenswert?

hat keiner eine idee?

von Hubert (Gast)


Lesenswert?

Welcher Kontroller, welche Sprache?
Sender - Empfänger synchronisieren sich durch die gleiche Taktfrequenz,
was noch dran hängt wird via SW ermittelt.
Wenn du sowas noch nicht gemacht hast würde ich mit dem AVR-Tutorial
beginnen.

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
Noch kein Account? Hier anmelden.