|
|
Simulink- interpreted matlab Fcn. |
|
19sanjok88 |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 06.05.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.06.2015, 14:23
Titel: Simulink- interpreted matlab Fcn.
|
|
|
|
|
Hallo,
ich sitze gerade an meiner Masterarbeit und Arbeite erst seit 1 Woche mit Simulink. Da ich im Internet so nicht fündig geworden hoffe ich, dass mir hier jemand helfen kann.
Mein Problem ist folgendes. Ich soll eine Funktion für ein Batteriemodell schreiben, dass dann später in c++ geschrieben wird und dann auf einem Simulator getestet werden soll. Das Bild im Anhang ist ist die Vorgabe die ich bekommen habe.
Ich muss also für das Batteriemodell erst mal eine Ah-Bilanzierung machen. Dabei will ich ein Startwert vorgeben. Also die Kapazität bei Start C_start= x
Bei der Ah-bilanzierung soll dan jede sekunde ein wert dazuaddiert oder subtrahiert werden. Also in formel: C(t)=C(0) + i*dt mit dt=1s
Ich habe das einmal als script probiert zu schreiben, da habe ich aber in dem script die Zeit als array gespeichert und mit einer forschleife ein array für die kapazität erzeugt, was ich auch plotten konnte, das hat funktioniert. Meine frage ist jetzt, wie mach ich das in Simulink? Gibt das clock jeden Berechnungsschritt einen neuen Wert in den Funktkionsblock oder einmal als "array"? und wie kann ich da am besten vorgehen??
Vielen dank schon mal im vorraus für eure Hilfe,
Mfg alex
Beschreibung: |
|
Download |
Dateiname: |
Unbenannt.png |
Dateigröße: |
58.09 KB |
Heruntergeladen: |
609 mal |
|
|
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.06.2015, 17:15
Titel:
|
|
Also wenn ein Modell nur aus einem Matlab-Function-Block besteht würde ich ja darüber nachdenken, das ganze Ding einfach direkt in Matlab zu schreiben.
Und wenn es hinterher nach C++ übersetzt werden soll, würde ich auch darüber nachdenken, das ganze Modell einfach gleich in C++ zu schreiben.
Ansonsten hilft bei der Benutzung von Simulink das hier ganz enorm: http://de.mathworks.com/help/simuli.....tarted-with-simulink.html - vermutlich sind die meisten Deiner Fragen schon geklärt, wenn Du Dich da einmal durchklickst.
|
|
|
19sanjok88 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 06.05.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.06.2015, 14:55
Titel:
|
|
hi,
ja wer lesen kann ist klar in Vorteil
Also ich hab das jetzt so verstanden dass Simulink für jeden Zeitschritt den Funktionsblock noch einmal von oben nach unten durchgeht. So kann das natürlich nicht funktionieren wie ich das gedacht habe.
Es ist leider von der Aufgabenstellung her so dass ich das erst in Simulink umsetzen soll.
Rein theoretisch müsste es doch gehen wenn ich mit einem Funktionsblock einen Startwert vorgebe, die Funktion einen neuen Wert berechnet und dann dieser neue Wert rückgeführt wird in die Funktion? Gibt es in Simulink einen speziellen block dafür?
danke schon mal im vorraus,
mfg Alex
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.06.2015, 21:21
Titel:
|
|
Ja, Simulink rechnet den Code-Block in jedem Rechenschritt einmal komplett durch.
Klär vielleicht zuerst mal ab, ob Dein Betreuer es wirklich so gemeint hat, wie Du es jetzt versuchst. Dir ist bestimmt nicht entgangen, dass Simulink dutzende Blöcke zur Verfügung stellt, mit denen sich so ungefähr fast alle Probleme, die sich in Form von Gleichungen aufschreiben lassen auch modellieren und lösen lassen. Es ist nicht unwahrscheinlich, dass er möchte, dass Du das ganze erst mal mit diesen Blöcken aufbaust.
Ansonsten hilft Dir bei Deinem akuten Problem der Memory-Block weiter. Der gibt am Ausgang immer den Eingangswert aus dem vorherigen Rechenschritt aus. Den kann man prima um einen Matlab-Code-Block herumstricken.
|
|
|
19sanjok88 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 06.05.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.06.2015, 11:17
Titel:
|
|
Hallo Epfi,
ne das war schon so gewollt mit dem Funktionsblock, um das später einfacher in C++ zu übertragen.
Vielen dank für deine Hilfe, der Memory block ist genau das was ich gebraucht habe. Und mit dem IC block kann ich da noch einen Startwert einfügen.
Vielen dank, du hast mir sehr geholfen.
Mfg
Alex
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.06.2015, 11:20
Titel:
|
|
Der Memory-Block hat sogar ein Feld für den Anfangswert, da ersparst Du Dir den IC-Block. Je nach Anwendung kann es mit dem IC-Block für fremde Menschen aber leichter lesbar sein, da man direkt sieht, dass ein Anfangswert existiert und wichtig ist.
|
|
|
19sanjok88 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 06.05.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.06.2015, 20:13
Titel:
|
|
ahhh ok , so gehts natürlich noch viel einfacher
vielen dank, du hast mir echt weiter geholfen
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|