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
wenn der block nicht als eigenständiges modul läuft wirds eh nicht funktionieren....1ms ist zu langsam...
> 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.
Hallo Lothar, das Gerät das mir die Daten sendet arbeitet mit 9600 Baud. Stellt das Keine Probleme dar?
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
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
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.