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

Simulationslaufzeit in GUI darstellen

 

invisible

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2015, 18:45     Titel: Simulationslaufzeit in GUI darstellen
  Antworten mit Zitat      
Hallo und Guten Abend zusammen. Smile

Ich habe, als ziemlich MatLab-Neuling, ein (hoffentlich nur) kleines Problem.

Ich habe in Simulink eine vergleichsweise umfangreiches Modell aufgebaut welches auch Top funktioniert.
Zu einfacheren Handhabung wollte ich dazu nun gleich eine GUI erstellen mit der ich die Simulation öffnen, starten/stoppen und die Werte innerhalb der Simulation ändern kann. Das funktioniert auch alles prächtig.

Nun mein Problem:
Ich möchte innerhalb dieser GUI die aktuelle (oder zumindest quasi-aktuelle) Laufzeit der Simulation anzeigen.
Ich hatte gehofft das ich einfach ein static-field erstelle und ähnlich wie den SimulationStatus auch an eine SimulationTime komme und damit mein Static fülle. Das funktioniert aber nicht wirklich.

Mein nächster Versuch war eine Source im Modell mit einzubauen die die entsprechende "Zeit" ins Workspace wirft (das klappt auch).

Mit diesem Array möchte ich jetzt das Static Feld "Laufzeit" aktualisieren, dazu hab ich überlegt müsste ich einen Timer aufziehen und mit einer Periode von einer Sekunde eine unterfunktion "ZeitUpdate" aufrufen.
Das sieht dann so aus:

Code:
% --- Executes during object creation, after setting all properties.
function Laufzeit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Laufzeit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

t = timer('TimerFcn', @ZeitUpdate, 'ExecutionMode', 'fixedDelay', 'Period', 1.0);
 
function Zeitupdate(obj, evt)
set(handles.Laufzeit, 'String',Time)


Das funktioniert aber leider nicht.
Kann mir jemand sagen was ich falsch mache oder ob ich sogar einen fundamentalen Fehler begehe?
Möglicherweise gehts aber ja auch viel einfacher, ich bin für jeden Tip dankbar.

Schönen Abend noch. Smile


invisible

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2015, 17:54     Titel:
  Antworten mit Zitat      
Keiner da der mir helfen kann? Sad
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.04.2015, 18:02     Titel: Re: Simulationslaufzeit in GUI darstellen
  Antworten mit Zitat      
Hallo invisible,

Zitat:
Das funktioniert aber leider nicht.

Es ist immer wichtig zu erklären, was genau nicht funktioniert. Bekommst Du eine Fehlermedlung oder weicht das Ergebnis von Deinen Erwartungen ab? Während Dir diese Information direkt vorliegt, müssen die Leser im Forum erstmal Zeit und Energie darauf verwenden, dieses Detail zu erraten.
Poste also auf jeden Fall die Fehlermeldung, wenn Du eine bekommst, oder erkläre das Problem genauer. Die Erklärungen, was bereits gut läuft sind dagegen überflüssig und rauben nur Zeit.

Ich rate mal, dass die Variable "Time" im Base-Workspace (also im Command Window) existiert. Jede Funktion hat aber ihren eigenen Workspace, also müsstest Du die Variable innerhalb des Timer-Callbacks zunächst per EVALIN aus dem Base-Workspace bekommen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
invisible

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2015, 19:48     Titel:
  Antworten mit Zitat      
Hallo Jan und danke für deine Anmerkungen, du hast natürlich Recht. Embarassed

Ich habe es mit dem evalin noch einmal probiert, allerdings ändert sich immer noch nichts.
Mein Problem ist dass sich das static Feld nicht aktualisiert mit dem entsprechend gerade aktuellen Wert für die Laufzeit, es bleibt schlicht auf 0 (voreingestellter Wert zum Start der GUI).

Mein letzter Versuch damit sieht im Moment folgendermaßen aus:
Code:
% --- Executes during object creation, after setting all properties.
function Laufzeit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to Laufzeit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called


t = timer('TimerFcn', @ZeitUpdate, 'ExecutionMode', 'fixedDelay', 'Period', 1.0);
 
function Zeitupdate(obj, evt)
SimTime = evalin('base','SimTime');
set(handles.Laufzeit,'String',SimTime)


Dabei kommt es zu keinen Fehlermeldungen oder ähnliches. Die Simulation und die GUI laufen, allerdings wird die aktuelle Simulationszeit nicht im static-Feld "Laufzeit" angezeigt.
Mein Ziel war es, wie erwähnt die Simulationszeit über die Variable SimTime aus dem workspace einzulesen und immer wenn mein Timer kommt den Wert zu aktualisieren.

Vielleicht weiß noch jemand Rat, bin aufjedenfall für alle Tipps dankbar.
Bis dann.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.04.2015, 12:55     Titel:
  Antworten mit Zitat      
Hallo invisible,

Was siehst Du, wenn Du einen Debugger-Breakpoint in die TimerFcn setzt? Wird sie überhaupt aufgerufen? Ist der Timer also irgendwo gestartet worden?
Ist die TimerFcn eine nested function, so dass der Inhalt von "handles" auch dort bekannt ist? Falls nicht, müsstest Du handles auch wieder innerhalb der TimerFcn bekannt machen, am besten in den Inputs:

Code:
t = timer('TimerFcn', {@ZeitUpdate, handles}, 'ExecutionMode', 'fixedDelay', 'Period', 1.0);
start(t);
 
function Zeitupdate(obj, evt, handles)
SimTime = evalin('base','SimTime');
set(handles.Laufzeit,'String',SimTime);
drawnow;

Gruß, Jan
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 - 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.