Serielle 9600 Baud Verständnisfrage

Gast #1235319
Hallo

ich habe da ein Verständnisfrage bzgl serieller Datenübertragung. Für 
manche sicher trivial aber ich blick da nicht ganz hinter.

Ich verwende unter Simulink einen Block um serielle Daten zu empfangen.
Mir ist es möglich z.B. 9600 Baud auszuwählen und Startbit, Stopbit, 8 
Datenbits und eventuell ein Paritätsbit.
Die Zykluszeit des Simulinkmodels beträgt 1ms und ist fest. Das heisst 
wenn ich mit 9600 Baud arbeiten würde und 10 bit Framelänge, würde ich 
gerade noch so auskommen.

1/9600Baud * 10 Bit = 1,04 ms / Byte

Nun kommt mein eigentliches Problem. Was mach ich wenn das Paritätsbit 
hinzukommt? Ich hätte dann somit 11 Bit und würde somit mit 9600 Baud 
nicht auskommen. Denn

1/9600Baud * 11 Bit = 1,15 ms / Byte

überschreitet die Zykluszeit uns es kommt zu Überschneidungen. Bzw 
Datenverlust.

Kannich denn einfach die Baudrate in Simulink auf 19200 umstellen? Dann 
käme ich auch mit der Zeit klar. allerdings weiss ich nicht ob man das 
einfach so machen kann?

Vielen dank für eure antworten

gruss
Holger
Moderator (Firma: Titel) Persönliche Seite
> Die Zykluszeit des Simulinkmodels beträgt 1ms und ist fest.
> 1/9600Baud * 10 Bit = 1,04 ms / Byte
> ... würde ich gerade noch so auskommen.
Nach nur 25 Zeichen wärst du um ein ganzes Zeichen zu spät :-o
Was würdest du zu einer Uhr sagen, die am Tag um eine Stunde falsch 
geht?

Nimm 19200 Baud, dann hast du Luft.
Holger Mertens wrote:
> Ich verwende unter Simulink einen Block um serielle Daten zu empfangen.
> Mir ist es möglich z.B. 9600 Baud auszuwählen und Startbit, Stopbit, 8
> Datenbits und eventuell ein Paritätsbit.
> Die Zykluszeit des Simulinkmodels beträgt 1ms und ist fest.

Was bedeutet Zykluszeit?
Was hat die Zykluszeit mit der UART zu tun?
Machst Du das Bit-Timing der UART etwa in Software?

Erklär mal Dein Problem so, daß man es versteht, ohne das man Simulink 
kennen muß.


Peter
(Firma: ACC)
Hallo Peter,

ich versuchs mal:
Es geht um folgendes. Ich verwende Simulink, um serielle Daten zu 
empfangen. Ich benutze eine externe Rs232-Karte (FPGA ähnlich). Diese 
Karte hat bereits Simulink Blöcke, um die seriellen Daten im Simulink 
weiterzuverarbeiten. Dort kann ich die üblichen Einstellungen 
(Startbit,stopbit, datenbits, baudrate und parität) einstellen.

Nun verwende ich diesen Block, um serielle Daten zu empfangen. Um diese 
Daten weiterzuverarbeiten bzw. in einem Array zu puffern verwende ich 
eine einfache Logik in Simulink:

Immer wenn ein Byte vorhanden ist im FIFO, schreibe es in den Puffer.


Die Zykluszeit des Models beträgt 1ms. d.h. dass jede Milisekunde ein 
Byte im Puffer geschrieben werden kann.
Da aber das Gerät, dass die Daten liefert und sie an die Karte 
weitergibt, mit 11 Bit und und einer Baudrate von 9600 arbeitet, kommt 
es zu konflikten.
denn nach 1ms wäre ja die Message ja noch nicht fertig.

gruß
Ich verstehe immer noch nicht ganz, was mit den empfangenen Daten 
gemacht werden soll. Üblicherweise muss man, wenn eine Datenquelle Daten 
mit einer gegebenen Geschwindigkeit zur Verfügung stellt und die Daten 
im Empfangsgerät für irgendetwas zwingend benötigt werden, so lange 
warten, bis die Daten auch da sind. Da die Übertragungsgeschwindigkeit 
ja offensichtlich vorgegeben ist, musst Du wohl die Zykluszeit 
entsprechend anpassen...
Hans Ganz wrote:
> Die Zykluszeit des Models beträgt 1ms. d.h. dass jede Milisekunde ein
> Byte im Puffer geschrieben werden kann.

"Kann" heißt doch nicht "Muß".


> Da aber das Gerät, dass die Daten liefert und sie an die Karte
> weitergibt, mit 11 Bit und und einer Baudrate von 9600 arbeitet, kommt
> es zu konflikten.
> denn nach 1ms wäre ja die Message ja noch nicht fertig.

Dann machste eben diese 1ms lang nichts.
Wenn die Daten langsamer ankommen, als sie verarbeitet werden können, 
ist das sicher, d.h. so ist es üblich.
Nur wenn die Daten zu schnell kommen, krachts.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.