|
|
Simulinkfunktionen in Matlab verwenden |
|
Rolf |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.04.2020, 08:57
Titel: Simulinkfunktionen in Matlab verwenden
|
|
Hallo,
gibt es eine Möglichkeit, Subsysteme aus Simulink in Matlab wiederzuverwenden?
Folgender Hintergrund: Angenommen, ich baue mir ein Modell in Simulink auf und möchte dieses später inheralb eines Matlabskriptes evaluieren. Ggf. möchte ich auch dieses in einer Optimierung aufrufen, oder ich möchte das Modell innerhalb von Simulink mit Hilfe eines Matlabfunktionblockes für eine Optimierung verwenden. Wenn ich dies in Matlab aufbaue, ist es kein Problem. Wenn ich dieses als Simulinkblock realisiert ist, ist das manchmal eher weniger hilfreich.
Mein Ansatz ist es, das subsystem als s function zu kompilieren, zu mexen und dann per command line aufzurufen. Das hat aber noch nicht geklappt.
Hat jemand dazu eine Lösung?
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.04.2020, 09:29
Titel:
|
|
Hallo,
eine direkte Antwort kenne ich nicht.
Eine Alternative wäre, Modellreferenzen statt Subsystemen zu verwenden. Dann kannst du die einzelnen Modelle bequem auch separat aufrufen und z.B. mit sim simulieren.
Ich habe Zweifel, dass es eine gute Idee ist, innerhalb eines MATLAB Function-Blocks komplexe Optimierungen (und dazu zähle ich das Optimieren eines Simulink-Modells) durchzuführen. Das muss ja in jeder Iteration gemacht werden und die gesamte Simulation wird entsprechend lange dauern.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.04.2020, 10:15
Titel:
|
|
Hi,
danke für deine schnelle Antwort.
Je, nach Fachbereich kann es schon Sinn machen, modellbasierte Regelungen mit einer online Optimierung zu implmentieren.
Die Frage ist nur, wie sich dies bei einem vorhandenen Simulinkmodell am besten realisieren lässt.
Ich bin aber gerne für weitere Vorschläge und Ideen offen.
|
|
|
fabianT |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 31.10.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.04.2020, 08:51
Titel:
|
|
|
|
|
Hi,
eine Simulink S-Function hat die typischen für den Simulink Solver relevanten Funktionen, Output, Update, Start, Derivative,... MATLAB kann damit erstmal nicht so viel anfangen. Wenn du eine MATLAB mex Datei schreibst benötigst du die Entry Funktion MexFunction(). Theoretisch könntest du beides verknüpfen und in eine aus Simulink generierte S-Function den MexFunction() Aufruf hinzufügen. Selbst habe ich das noch nicht gemacht und es ist mit Sicherheit eher komplex und mit einigen Problemen zu rechnen.
Ein Simulink Modell kannst du grundsätzlich schon für Optimierungen verwenden:
https://www.mathworks.com/help/rele.....ifferential-equation.html
Grundsätzlich stellt sich die Frage wie sinnvoll es ist ein Simulink Modell wie eine Funktion nur einmal aufzurufen, wenn dieses Zustände beinhaltet. Du müsstest dann für jeden State einen Initialwert angeben. Um dies zu erreichen könntest du den sim() Befehl anwenden und initial States übergeben. Das wäre der Parameter "LoadInitialState". Wenn du Tstop auf 0 setzt wird nur ein Schritt berechnet.
VG
Fabian
VG
Fabian
|
|
|
|
|
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.
|
|