WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

GUI - M-FILE - Simulink

 

ba_2013
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2013, 19:36     Titel: GUI - M-FILE - Simulink
  Antworten mit Zitat      
Hallo zusammen,

ich habe bisher immer versucht, durch vorhandene Beiträge Lösungen zu finden. Allerdings komme ich jetzt einfach nicht weiter:

Zu meinem Problem:

- Zunächst habe ich ein Simulink-Modell erstellt (Energieversorgung.mdl)
--> läuft soweit gut

- Dann habe ich mir gedacht, ich schreibe ein M-File (simu.m), welches die Variablen in den Base Workspace einliest und danach die Simulation des Simulink-Modells durchführt.
--> funktioniert auch

- Als nächstes hatte ich die Idee, den Anwender des Programms die Möglichkeit zu geben, über eine GUI die Werte in den Base Workspace zu lesen
--> klappt auch

Was bisher nicht funktioniert:
- Ausführen der GUI und dadurch Start/Run der simu.m

Ich verstehe es einfach nicht, wie ich jetzt die Verknüpfung schaffen soll. Confused

(Der nächste Schritt wäre dann, dass automatisch eine Ausgabedatei erzeugt wird, die mir sämtliche Ergebnisse der Simulation ausgibt.)

Hoffe das war jetzt verständlich. Vielleicht kann mir jemand helfen, eine Verknüpfung zwischen meiner GUI und der simu.m zu schaffen?!

Vielen Dank Exclamation
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.04.2013, 20:43     Titel:
  Antworten mit Zitat      
Hallo,

an sich brauchst du nur in deiner GUI einen Pushbutton oder ähnliches zu machen, in dem dann deine simu.m aufgerufen wird.

Falls es dabei dann Probleme gibt, wäre es gut, wenn du die so konkret wie möglich darlegen könntest.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
ba_2013
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2013, 21:31     Titel:
  Antworten mit Zitat      
Hallo,

erstmal danke für deine Antwort!

Einen Push-Button habe ich bereits eingebaut. Durch klicken des Buttons werden die Werte, die die Simulation benötigt, in den Base Workspace geladen.

Ich weiß nicht genau, wo und wie genau ich jetzt den Aufruf der simu.m veranker.

Ist mein Problem klar?
Private Nachricht senden Benutzer-Profile anzeigen
 
ba_2013
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2013, 22:50     Titel:
  Antworten mit Zitat      
http://www.gomatlab.de/gui-soll-m-file-ausfuehren-t24772.html

Also in dem Beitrag hattest du ja bereits schon mal zu einem ähnlichen Thema Hilfestellung geleistet.

So wie ich es bisher verstanden habe, ist es sinnvoll die in der GUI eingegeben werde als handles zu übergeben. Komme ich um diese Methode vorbei? Da mein Simulink-Modell auf den Base Workspace zugreift.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.04.2013, 17:29     Titel:
  Antworten mit Zitat      
Hallo,

du kannst beim sim-Befehl bzw. mit simset über die Optionen 'SrcWorkspace' und 'DstWorkspace' angeben, aus welchem Workspace Daten gelesen und wohin sie gespeichert werden. Ich würde beides auf 'current' setzen.

Ansonsten gilt das, was ich auch in dem von dir verlinkten Beitrag geschrieben habe. Je konkreter du sagen kannst, worin die Probleme liegen, desto besser.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
ba_2013
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2013, 18:04     Titel:
  Antworten mit Zitat      
Hallo,

also ich habe mal ein kurzes Beispiel erstellt, dass meine Probleme im Grunde eigentlich zeigt.

Die Test.fig und Test.m stellen meine GUI dar. In dieser GUI wird ein Wert eingegeben, der durch betätigen des Pushbuttons in den Base Workspace gespeichert wird.

Die Skript.m startet die Simulation der Versorgung.mdl. (In meinem Skript werden noch weitere Berechnungen durchgeführt)

Die Versorgung.mdl ist mein Modell. Das Ergebnis wird in den Base Workspace gespeichert.

__________________________________


Wie ich mir das Modell vorstelle?

1. In der GUI wird ein Wert eingegeben.
2. Durch betätigen des Pushbuttons wird Skript.m ausgeführt.
3. Die Simulation beginnt.

Aber wie bekomme ich das hin? Ich habe keine Ahnung...sorry...

Test.m
 Beschreibung:

Download
 Dateiname:  Test.m
 Dateigröße:  3.54 KB
 Heruntergeladen:  363 mal
Test.fig
 Beschreibung:

Download
 Dateiname:  Test.fig
 Dateigröße:  2.39 KB
 Heruntergeladen:  338 mal
Skript.m
 Beschreibung:

Download
 Dateiname:  Skript.m
 Dateigröße:  23 Bytes
 Heruntergeladen:  364 mal
Versorgung.mdl
 Beschreibung:

Download
 Dateiname:  Versorgung.mdl
 Dateigröße:  31.67 KB
 Heruntergeladen:  394 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.04.2013, 18:38     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Durch betätigen des Pushbuttons wird Skript.m ausgeführt.

Woher soll MATLAB das wissen? Das musst du schon in den Code schreiben.

Zitat:
Das Ergebnis wird in den Base Workspace gespeichert.

Nein, wird es nicht. Es wird in den momentanen Workspace, also den von Start_Callback gespeichert. Du müsstest Ergebnis also dort weiterverarbeiten.

Code:
function Start_Callback(hObject, eventdata, handles)
% hObject    handle to Start (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

Zahl=str2double(get(handles.Zahl,'String'));
assignin('base','Zahl',Zahl)
Skript
plot(Ergebnis) % beispielhaft


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
ba_2013
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2013, 18:47     Titel:
  Antworten mit Zitat      
Also im Beispiel hat das jetzt schon mal super geklappt! Smile

Herzlichen Dank!!!!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
ba_2013
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2013, 00:11     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe da doch noch eine Frage.

In meiner Skript.m werden nach der Simulation noch weitere (hier sinnlose) Berechnungen durchgeführt.

Das Ergebnis dieser Berechnungen würde ich gerne in einer Ausgabe-GUI darstellen, die sich nach Abschluss der Berechnungen öffnet und beispielsweise den Wert "Umrechnung" ausgibt.

Könntest du mir einen Tipp geben, wie ich das realisieren kann? Mit evalin habe ich es irgendwie nicht hinbekommen.


Vielen Dank.

Viele Grüße

P.s.: Die Eingabe-GUI bleibt unverändert.

Skript.m
 Beschreibung:

Download
 Dateiname:  Skript.m
 Dateigröße:  143 Bytes
 Heruntergeladen:  363 mal
Ausgabe1.fig
 Beschreibung:

Download
 Dateiname:  Ausgabe1.fig
 Dateigröße:  1.18 KB
 Heruntergeladen:  347 mal
Ausgabe1.m
 Beschreibung:

Download
 Dateiname:  Ausgabe1.m
 Dateigröße:  2.74 KB
 Heruntergeladen:  355 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2013, 08:52     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Könntest du mir einen Tipp geben, wie ich das realisieren kann? Mit evalin habe ich es irgendwie nicht hinbekommen.

Zeige bitte, was du mit evalin versucht hast. Das gibt immerhin einen Hinweis, was du eigentlich erreichen wolltest.

Das Ablegen der Daten im Base Workspace finde ich eine schreckliche Angewohnheit. Mit sim/simset kann man SrcWorkspace und DstWorkspace auf 'current' setzen und dann so die Daten vernünftig verwalten:
http://www.mathworks.com/help/matla.....-data-in-a-guide-gui.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
ba_2013
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2013, 10:44     Titel:
  Antworten mit Zitat      
Hatte es u.a. mit

Umrechnung = evalin ('base', 'String', Umrechnung)


oder

Umrechnung= evalin ('base', 'String', num2str(Umrechnung))

versucht...


Mit dem Base Workspace gebe ich dir recht, allerdings ist das Modell so erst nach und nach entstanden.

Würde ich es jetzt neu erstellen, würde ich auch einiges anders machen.

Trotzdem danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2013, 10:54     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe nicht, wie du auf die Idee kommst, evalin mit drei Eingabeargumenten aufzurufen.

in der Doku ist folgendes Beispiel:
Code:
v = evalin('base', 'var');


Auf dein Beispiel übertragen:
Code:
Umrechnung = evalin ('base', 'Umrechnung')


Zitat:
Mit dem Base Workspace gebe ich dir recht, allerdings ist das Modell so erst nach und nach entstanden.

Am Simulink-Modell brauchst du doch dazu gar nichts ändern. Es muss lediglich der sim-Aufruf angepasst werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.