|
MaKel89 |
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.11.2015, 17:24
Titel: GUI Variablenübergabe
|
|
Hallöchen,
bin nicht sicher ob das hier oder in Matlab reingehört, beschäftigt sich quasi mit beidem.
Ich möchte in Matlab ein GUI erstellen, welches mir ein paar Eingaben ermöglicht, diese dann in bereits geschriebenen Skripten verarbeitet und die Ergebnisse davon in einer Simulink-Analyse nutzt.
Wenn ich das laufen lasse kriege ich einen Haufen an Fehlermeldungen der Form:
Undefined function or variable 'variablexyz'
Es scheint mir so, als könne Simulink nicht auf die generierten Variablen zugreifen.
Da ich nicht weiß, wie die interne Verwaltung der Variablen in einem GUI läuft (es wird offensichtlich nicht in den Workspace der Matlab-Session gespeichert), wollte ich mal nachfragen, ob hier jemand eine Lösung weiß.
Vielen Dank schonmal
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.11.2015, 18:27
Titel:
|
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.11.2015, 21:29
Titel:
|
|
Hi Harald,
danke schonmal. Wie funktioniert das mit dem Debugger?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.11.2015, 22:13
Titel:
|
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2015, 12:58
Titel:
|
|
|
|
|
Mahlzeit zusammen,
ich hab n paar Sachen ausprobiert, um meine Variablen aus dem GUI im Workspace verfügbar zu machen (also im base workspace). So wie ich es verstanden habe wird in Matlab zwischen dem Base und dem Caller workspace unterschieden. Wenn ich also eine Callback Funktion im GUI (z.B. über einen Button) aufrufe, kann diese nur mit Variablen innerhalb des Caller Workspace umgehen. Assignin hilft mir schon mal die Variablen im Base Workspace verfügbar zu machen. Kann mir jemand meine Gedanken dazu bestätigen oder berichtigen?
Ich hoffe ich liege richtig, mein Programm arbeitet schon mal insofern richtig, als dass es mir zumindest die Variable in den Base Workspace legt und die Simulation auch startet, aber....
Ein Problem, auf das ich nun gestoßen bin sieht wie folgt aus:
Meine Skripte werden ausgewertet und die Variablen im Base Workspace hinterlegt. Die Simulation startet und läuft anscheinend auch bis zu einem bestimmten Punkt durch. An diesem Punkt sollte mit einem "To Workspace" Block etwas in den Workspace geschrieben werden. Diese Daten sollten nun von einem weiteren Skript eingelesen und geplottet werden.
Die Daten aus den "To Workspace" Blöcken sind nun aber nicht im Base Workspace verfügbar, ich vermute, weil sie in den Caller Workspace der Callback-Routine geschrieben werden, die die Simulation startet.
Wie kann ich diese nun abgreifen und im Base Workspace verfügbar machen?
edit: Hab grad überlegt, meine Simulation und die darauffolgende Auswertung mit Plot liegen in der gleichen Callback Funktion, werden also beide beim Drücken des gleichen Knopfes ausgelöst. Prinzipiell sollten dann die Simulink Variablen im Caller Workspace verfügbar sein und für das anschließende Skript bereitstehen. Mir scheint, ich habe doch noch nicht so ganz verstanden, was genau passiert.....Hilfe wäre super
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.11.2015, 17:47
Titel:
|
|
Hallo,
Zitat: |
Assignin hilft mir schon mal die Variablen im Base Workspace verfügbar zu machen. |
assignin ist generell keine gute Idee, da es schwer zu debuggen ist.
Ich persönlich nutze sim mit SrcWorkspace auf 'current' und lasse mir die Ergebnisse in Out-Ports zurückgeben. Dann ist alles da, wo es hingehört.
Grüße,
Harald
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2015, 17:48
Titel:
|
|
"current" bedeutet doch aber dann, dass der aktuelle workspace derjenige der momentan aktiven callback-routine ist, richtig?
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2015, 19:26
Titel:
|
|
|
|
|
Hi Harald, ich rekapituliere noch mal und hoffe, dass du mir die richtige Richtung aufzeigen kannst.
Also wenn ich nicht assignin() benutze, den Workspace der sim-Funktion aber auf current setze, sollte ja prinzipiell für die sim-Funktion alles verfügbar sein, was ich innerhalb der Callback-Routine für meinen Push-Button ausführe.
Innerhalb dieser hole ich mir die Werte, die ich für die Simulation brauche über die handles von Eingabefeldern meines GUI, in die ich die Werte eintrage. Das scheint auch soweit zu funktionieren. Eine Variable liegt aber in einer anderen Callback-Routine und ich finde nicht die richtige Möglichkeit diese abzugreifen und in der Simulation in Simulink verfügbar zu machen...
edit: ok, auch das habe ich in den griff bekommen, indem ich die variable in der handles-struct hinterlege und in der anderen callback-routine aufrufe. das funktioniert.
jetzt verbleibt nun mein allerletztes problem: ich möchte die daten aus der simulation in der gleichen callback-routine für einen plot verwenden. ich bekomme aber die fehlermeldung, dass die structvariablen (ich lasse sie in der simulation über "to workspace"-blöcke laufen) unbekannt sind. da fehlt mir offenbar noch ein kniff, um diese verfügbar zu machen...
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.11.2015, 20:48
Titel:
|
|
Hallo,
Zitat: |
ich bekomme aber die fehlermeldung, dass die structvariablen (ich lasse sie in der simulation über "to workspace"-blöcke laufen) unbekannt sind. |
Dann verwende bitte den Debugger, um herauszufinden, wo die Daten sind.
Oder nutze, wie von mir empfohlen, Out-Blöcke.
Grüße,
Harald
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2015, 21:28
Titel:
|
|
mit out-blöcken habe ich es auch schon versucht, die fehlermeldung bleibt aber dieselbe.
habe im debug-modus jetzt mal bis zur simulation laufen lassen. bis dahin läuft alles durch und ich bekomme ein objekt "ans" welches mir als 1x1 simulationoutput dargestellt wird.
wenn ich mir das aber öffne, ist es leer, nix drin. das wundert mich schon sehr, da ich aus redundanzzwecken sowohl to workspace als auch out-blöcke verwendet habe, und die simulation ohne probleme durchläuft.
wie kann ich den fehler weiter eingrenzen?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.11.2015, 21:39
Titel:
|
|
Hallo,
welches Release verwendest du?
Wie rufst du sim auf?
Es wäre hilfreich, wenn du dein Modell und die GUI zur Verfügung stellst.
Grüße,
Harald
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2015, 21:44
Titel:
|
|
meine Version ist R2015b
ich kann die files meiner simulation und meines GUI anhängen, weiß nur nicht ob das viel bringt.
das GUI greift auf Messdaten und weitere Unterprogramme zurück, die ich nicht einfach weitergeben darf...
Beschreibung: |
|
Download |
Dateiname: |
GUI.m |
Dateigröße: |
7.74 KB |
Heruntergeladen: |
477 mal |
Beschreibung: |
|
Download |
Dateiname: |
Behaelter_dynamischAN_Ausschleusensignaltest29052015.slx |
Dateigröße: |
38.96 KB |
Heruntergeladen: |
420 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.11.2015, 22:36
Titel:
|
|
Hallo,
die zugehörige .fig fehlt. Statt der echten Daten kannst du Testdaten zur Verfügung stellen, mit denen das Verhalten auftritt.
Du solltest dir das Ergebnis von
sim
in eine Variable zurückgeben lassen.
Grüße,
Harald
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.11.2015, 08:35
Titel:
|
|
Guten Morgen,
anbei sind jetzt die nötigen Dateien.
Das Excel File wird über den entsprechenden Button ausgewählt. Die Werte, die ich verwende sind der Reihe nach: 25,40,20,50 für die Eingabefelder.
Beschreibung: |
|
Download |
Dateiname: |
Tests.rar |
Dateigröße: |
333.16 KB |
Heruntergeladen: |
437 mal |
|
|
|
MaKel89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 46
|
|
|
|
Anmeldedatum: 16.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.11.2015, 21:50
Titel:
|
|
Also ich bins nochmal. Ich hab nochmal ein ganz einfaches GUI erstellt, um das ganze zu testen. Ich kriege auch hier nur ein leeres SimulationOutput Objekt. Entweder mein Matlab mag mich nicht oder ich hab grundlegend einen bestimmten Zusammenhang nicht verstanden, ich verzweifel hier...
Irgendwo ist der Wurm drin. Über jeden Ratschlag wäre ich echt mega froh.
Beschreibung: |
|
Download |
Dateiname: |
Test.m |
Dateigröße: |
4.18 KB |
Heruntergeladen: |
445 mal |
Beschreibung: |
|
Download |
Dateiname: |
Test.fig |
Dateigröße: |
19.12 KB |
Heruntergeladen: |
432 mal |
Beschreibung: |
|
Download |
Dateiname: |
sinusfunktion.slx |
Dateigröße: |
16.63 KB |
Heruntergeladen: |
435 mal |
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|