Hi, ich habe ADC Daten mit Hilfe von Signal Tap (Altera/Quartus Tool) aufgezeichnet. Diese liegen mir nun als 12 bit breite Samples vor. Ich möchte diese Daten als Input in einer Simulink Simulation benutzen. Die Daten kann ich sowohl als rohe Bitwerte (also z.B. 001100101110) oder als Integer Zahl (also z.B. 814) pro Sample zur Verfügung stellen. Ich habe jetzt schon versucht die Daten per "From Workspace" Block ins Model zu bekommen. Dabei habe ich die erste Zeile von 0-64000 durchnummeriert (Zeitstempel) und in der zweiten Zeile meine ADC Daten reingepackt. Ich kann aber leider nicht herausfinden ob das so richtig ist, da mir Simulink da immer eine Out Of Memory Fehlermeldung um die Ohren haut ohne einen speziellen Grund für diese Fehlermeldung anzugeben. Anschließend verabschiedet sich dann auch Matlab mit einem CTD (crash to desktop) (Matlab 2010b). Sind denn 64000 Samples zu viel? Ist das überhaupt eine geignete Methode meine Daten nach Simulink zu bekommen? Wenn nein, wie sollte man es am Besten machen? Danke und Gruß, Maik
Hi! Wahrscheinlich liegt es daran, dass alle Daten in einer Zeile liegen. Versuch mal, pro Zeile nur ein Wert zu speichern. Die Timestamps kannst du weglassen, wenn die Daten in ein Array geschrieben werden. Der Arrayindex gibt dir den Zeitstempel vor (solange der Zeitstempel immer nur um 1 erhöht wird). Gruß PP
Hi Paulchen, danke für deine Antwort! Du hast recht, es war wohl nicht richtig alles in eine Zeile zu schreiben. Da hatte mich eine Stelle in der Doku etwas verwirrt. Zu den Zeitstempeln: Ich denke ich habe durch herumprobieren herausbekommen, dass die Zeitstempel nur ganze Zahlen sein dürfen. Die Frage für mich ist, wie ich die Frequenz darstelle, mit der die Daten in Simulink ins Model gepumpt werden. Es gibt zwar in dem Block "from workspace" das Feld für die Samplefrequenz, aber trotzdem habe ich es bis jetzt nicht geschafft die Daten in Simulink so abzuspielen, dass das Signal wieder so aussieht, wie ich es ursprünglich aufgezeichnet habe (Also nicht nur die Form, sondern auch die Zeitauflösung). Kannst du vielleicht einmal ein paar Beispieldaten Posten und Einstellungen der Blöcke verraten, damit ich das hinbekomme? (Samplefrequenz: 100KHz, Signal z.B. Sinus, 10KHz) Gruß, Maik
Hi! Werden die Daten zu schnell, zu langsam oder gar ungleichmäßig angezeigt. Idealerweise verwendest du als Testdaten erstmal ein Rechteck. Ohne es probiert zu haben: In den Optionen von Simulink kannst du die Timebase einstellen. Ich glaube, dass du dann auch nen anderen Solver verwenden musst. Die genaue Wahl spielt glaube ich bei sowas "einfachem" keine Rolle. Gruß PP
Hi, also, wenn ich die Daten mit einem Zeitstempelinkrement von '1' (also 1,2,3,4,...) "abspiele", dann kam zwar mein Signal dabei raus, aber eben mit einer völlig falschen Zeitbasis. Jedes uSekunden-Sampel war dann also ein Sekunden-Sample. Ich musste also 1000 Sekunden abspielen um das Signal zu erhalten, welches normalerweise in einer Millisekunde da war. Ich habe dann versucht die Zeitstempel entsprechend im us Bereich zu inkrementieren. Das hat aber gar nicht geklappt. Ich werde mal versuchen die Zeitbasis in den Simulink Optionen einzustellen. Dort war ich zwar auch schon mal, aber ich habe es vielleicht übersehen. Was ich nicht verstehe ist, dass es kein Beispiel für diesen Fall zu finden gibt. Ist denn das so etwas "exotisches", was ich hier vor habe? Gruß, Maik
So, ich habe es jetzt noch einmal probiert. Meine Vorgehensweise ist folgende: Zuerst erstelle ich ein Timeseries Object in Matlab mit dem Timeseries Tool. Das heißt ich importiere meine Daten mit dem Tool in ein Object und gebe ihm auch die Zeitbasis an. Aus dem Tool heraus (oder aus dem Workspace) kann ich dieses Timeseries Object dann auch plotten. Dort sehen meine Daten und die Zeitbasis so aus, wie ich es erwarte. Anschließend konvertiere ich die Matlab Timeseries in eine Simulink Timeseries, damit ich das ganze per "from Workspace" Block in Simulink benutzen kann. Ich bekomme auch keine Fehlermeldung. In dem "from Workspace" Block kann ich nun als Sampletime aber '0', '1', oder '1/1000000' einstellen, es ändert nichts an der Tatsache, dass die Daten auf dem Scope, dass ich direkt an den "from Workspace" Block angeschlossen habe, nichts mit den Daten zu tun hat, die in dem Timeseries Object sein sollten (und im Matlab Object ja nachweislich auch sind). Ich habe auch schon Vorgehensweisen ohne Timeseries Object probiert. Das Ergebnis war aber immer das gleiche. Entweder geht es gar nicht, weil Simulink eine Fehlermeldung rausspuckt oder die Daten auf dem Scope passen nicht zu dem, was ich sehen will. Gruß, Maik
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.