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
"boundrate" Hängt von der Konfiguration ab. Baudrate = Frequenz, mit der die Bits auf dem Bus ausgegeben werden.
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.
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
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.
@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.
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
+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.
@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.
@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.
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.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.