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: plot: Daten in Axes Updaten per Button

 

akki
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2013, 12:09     Titel: GUI: plot: Daten in Axes Updaten per Button
  Antworten mit Zitat      
Hallo Matlab-Freunde,

Von meiner GUI aus steuere ich mein Simulinkmodel1.

In meiner gui befinden sich 2 axes (axes1 und axes2).
Die Daten für den plot-befehl hole ich mir aus dem Workspace, das via Simulinkmodel dort abgelegt wird.

Die Daten sind in der Variable "StromSpannung" als Struct with Time im Workspace gespeichert.

Per Button starte ich die simulation in der Gui und es wird anschließend in die jeweiligen axes geplottet.
Das funktioniert soweit!


Wenn ich jetzt ein paar Parameter ändere und dann wieder auf dem Button drücke,
wird in der axes nichts geändert. Ich habe immer noch dasselbe signal.

Erst durch mehrmaligen drücken des Buttons (ca. 3mal) wird das neue Signal in der Axes1 geplottet.

Hier mein Code:

Code:
% --- Executes on button press in Startbutton.
function Startbutton_Callback(hObject, eventdata, handles)

clear Yfft1;
clear StromSpannung;

sim('Simulinkmodel1')


% Benutzereingabe aus Editboxen werden ausgelesen
Widerstandswert = get(handles.Widerstand_editBox,'String');
EinschaltwinkelAlpha = get(handles.EinschaltwinkelAlpha_editBox,'String');

% Hier findet die Übergabe an Simulink statt

% Code, erspare ich euch
% Funktioniert alles
% %%%%%%%%%%%%%%%%%%%%



% Strom Spannung plotten

axes(handles.axes1);%Axes1 handle
pos = find(StromSpannung.time == 0.1);% position X-max der X-achse finden und speichern in pos

plot(StromSpannung.time(1:pos,1), StromSpannung.signals.values(1:pos,1:2));%plotten des Signals


% habe versucht mit der set methode zu updaten, bekomme allerdings
% eine Fehlermeldung: Value must be a column or row vector
% set(h,'XData',StromSpannung.time(1:pos,1),'YData',StromSpannung.signals.values(1:pos,1:2));

title('Strom und Spannung');
xlabel('Zeit');


guidata(hObject, handles);
end




Vielen Dank für eure Ideen und Tipps!!!
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.09.2013, 12:13     Titel:
  Antworten mit Zitat      
Hallo

versuche DRAWNOW nach dem Plotten zusetzen
Private Nachricht senden Benutzer-Profile anzeigen
 
akki
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2013, 12:19     Titel:
  Antworten mit Zitat      
Danke für den Tipp!

Keine Änderung!

Immernoch dasselbe Problem muss mehrmals drücken bis
das neue Signal erscheint.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.09.2013, 12:55     Titel:
  Antworten mit Zitat      
Hallo

Nächste Vermutung ist, dass deine Werte sich nicht ändern, oder weil die Anbindung zu lange dauert.

versuche mal mit DEBUGGER zu arbeiten.
Setze den Breakpoint an der Plot-Stelle und schau dir die Werte an.

Oder mache Ausgaben in CommandWindow mit DISPLAY Funktion (Status/Werte).

Aber das alles kannst nur du überprüfen.
Private Nachricht senden Benutzer-Profile anzeigen
 
akki
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2013, 13:45     Titel:
  Antworten mit Zitat      
Danke für deinen Tipp.

Ich bin dem Problem ein wenig näher gekommen.

Tatsächlich wird bei der Übergabe der neuen Parameter an das Simulinkmodel, das Problem erzeugt.

Die Daten im Scope werden nicht geändert bzw. erst übernommen wenn man mehrmals auf den Button drückt.

Der Scope Block speichert mir die Daten aus meiner Schaltung im Workspace.

Kannst du mir vllt sagen warum der Scope Block noch die alten Daten hat, obwohl die restlichen Blöcke die neuen Parameter bereits haben?

Die übergabe an der neuen Parameter mache ich mit der set methode.
Dies klappt auch soweit, aber bei starten der Simulation hat der Scope Block noch die alten daten.

Code:
set_param('Simulinkmodel1/R', 'Resistance', Widerstandswert);
set_param('Simulinkmodel1/Pulseschnitt4','PulseWidth', num2str(var1));
set_param('Simulinkmodel1/Pulseschnitt1','PulseWidth', num2str(var2));


Danke schön
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.