Hi zusammen! Entschuldigt bitte im Vornherein mein Unwissen :-D Habe mich im Studium im großen und ganzen um Matlab drücken können, jedoch holt einen sowas immer ein .. In meinem Problem handelt es sich um eine Performanceanalyse von Simulationsmodellen, heißt ich habe im Matlab Workspace einen CPU-Timer implementiert der die Zeit vor dem Start einer Simulation und die Zeit zum Ende der Simulation festhalten soll. Aus der Differenz berechnet sich die Zeit die die Simulation benötigt hat. Die Simulationsmodelle sind in Simulink implementiert! Bei den Simulationen handelt es sich um Batteriesimulationen die über ein input Signal mit gesampleten Stromwerten gefüttert werden und zu den entsprechenden Stromsamplen dann Spannungsample ausgeben. Mein Ziel war es die Berechnungszeit pro Sample zu messen, jedoch ist es mir über die Inport-Funktion bisher nur möglich komplette Vektoren einzuspielen... Das Problem wenn ich statt einem Vektor nur ein diskretes Element angebe ist, dass mir für die fortlaufende Simulation die Historie der vorangegangen Simulation fehlt. Gibt es eine Möglichkeit eine Interaktion zwischen Matlab und Simulink aufzustellen, bei der Simulink sich nach Beedigung der Berechnung eines Samples an Matlab wendet und meldet "ich bin fertig gib mir das nächste Sample"? Danke schonmal für eure Hilfe!! Best Grüße Fabian
Servus, ich hoffe, dass hilft dir: http://www.hs-augsburg.de/~ragr/Topics/Matlab/Skript/Simulink_4.pdf Ist eigentlich ganz einfach die Geschichte. Du musst halt ein Script/Protokoll schreiben, dass dein ganzes Problem lösst.
Die Seite ist mir bei der Recherche schon über den Weg gelaufen. Mein Problem ist, dass die Simulation nach jedem berechneten Wert nicht "stoppen" darf. Die Simulation muss praktisch weiterlaufen, da sonst die Anfangswerte (ausgenommen des Inputs) wieder initialisiert werden. Im Fall der Batteriesimulation würde ich Veränderungen in Alterung und State of Charge verlieren. Ziel ist es in der laufenden Simulation die Zeit für den Durchlauf genau eines Samples zu messen. Best Grüße Fabian
Willst du eine Echzeit Simulation erreichen oder willst du wissen, welche max. Abtastzeit zu wählen ist? Generell versuche ein Skript zu schreiben, in dem du den Ablauf debuggen kannst! Deine Aufgabenstellung müsste mit einer while-/for-Schleife zu lösen sein. Alte Werte speichern neue initialisieren...
Im Prinzip brauche ich ein Echtzeit-System. Es soll später möglich sein mit aktuell an der Hardware eingelesenen Daten zu arbeiten und die simulierten Daten dann praktisch in "Echtzeit" an die Hardware zurückgeben zu können. <- Aber da ist im Moment noch nebensächlich. Die vorgeschlagene Lösung würde funktionieren wenn ich auf alle abgespeicherten Werte Zugriff hätte. Leider handelt es sich bei den Simulationsmodellen um FMU-Modelle die nicht alle Daten als Variablen ausgeben sondern mit internen Werten weiterrechnen. Bei einer neuen initialisierung der Simulation sind die internen Daten also unwiderruflich weg. Wird das Problem langsam klarer? Beste Grüße Fabian
Servus, ich habe eigentlich keine Lust aus dir jede kleine Info rauszuquetschen. Entweder du stellst dein Problem den Entwickler vor oder arbeitest dich in die Materie selbst ein. Ohne das Model zu sehen, wird dir hier kaum einer helfen können! Bei Simulink kann man doch "inf" bei der Zeitangabe angeben. Dann läuft das unendlich lang. K.A.
Eventuell gibt es die Möglichkeit, in Simulink ein event zu triggern, wobei der observer mit callback Funktion in Matlab implementiert ist. http://de.mathworks.com/help/matlab/matlab_oop/listener-callback-functions.html Bin mir aber nicht sicher, ob man in embedded matlab function blocks sowas benutzen kann. Allerdings wird das arg aufwändig und langsam für jedes Sample - falls es überhaupt funktioniert. Wie viele samples/second sollen das werden?
:
Bearbeitet durch User
Eventuell willst Du Simulink in Echtzeit laufen lassen? Das wird nicht ganz klar... dazu gibt es drei Möglichkeiten: - Poor man's realtime: Ein Bremsblock, der die Ausführung von Simulink-Modellen auf Echtzeit herunterbremst (ist irgendwo im file exchange zu finden) - das gleiche in Richtig heisst Simulink Desktop Realtime (einen halben Schritt weiter mit Coder mit kompilierten Modellen) - Simulink Realtime mit dedizierter Hardware: Sehr schön, sehr teuer...
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.