Verfasst am: 28.01.2013, 16:42
Titel: Realtime Plot in GUI
Hallo,
Ich versuche eine GUI zu erstellen, indem Daten von einem Simulink-Modell in Echtzeit geplottet werden. Mit Hilfe des Eventlisteners und einem M-File "updategui.m" habe ich es schon hinbekommen, den aktuellen Wert der Simulation in ein Textfeld vom GUI zu übertragen, dass also der aktuelle Wert immer angezeigt wird. Die Simulationszeit kann ich auch auslesen.
Nun versuche ich diese beiden Werte in einem GUI axes in Echtzeit zu plotten. Mit den folgenden Befehlen läuft es leider noch nicht:
Hoffentlich kann mir jemand bei dem Problem lösen, da ich schon sehr viel im Netz recherchiert habe, aber leider keine Lösung gefunden hab, welche ich auf mein Programm anwenden kann.
ich habe es mal probiert. Beim ersten Mal wird ein Punkt gezeichnet, beim zweiten Mal wird aus mir auf Anhieb nicht ersichtlichen Gründen das Koordinatensystem nicht gefunden.
Für den Moment zumindest hilft es, guiplot als persistent zu definieren.
%create a run time object that can return the value of the gain block's
%output and then put the value in a string
persistent guiplot
rto1 = get_param('Beispiel4_sim/SinusOut','RuntimeObject');
% create str from rto1
str = num2str(rto1.InputPort(1).Data);
% get a handle to the GUI's 'current state' window display = findobj('Tag','edit_display');
%create a run time object that can return the value of the outport block's
%input and then put the value in a string
persistent guiplot
rto1 = get_param('Beispiel4_sim/SinusOut','RuntimeObject');
% create str from rto1
str = num2str(rto1.InputPort(1).Data);
% get a handle to the GUI's 'current state' window display = findobj('Tag','edit_display');
ich hatte es mit der aktuellen MATLAB-Version getestet, und es lief durch. Welche MATLAB-Version verwendest du?
Bitte überprüfe selbst mit dem Debugger, was die Größe von XData und YData ist und ob sie die gewünschten Werte beinhalten. Bei mindestens einem von beiden wird das wohl nicht der Fall sein.
Dank deiner Hilfe funktioniert nun alles bei mir. Dein Quelltext stimmt auch so wie er ist. Vielen Dank
Ich versuche jetzt noch die Anpassung für den Graphen zu machen. Ich versuche es erstmal alleine, ansonsten melde ich mich nochmal bei dir.
_________________
Damit wird abgeprüft, ob guiplot ein gültiges Handle ist. Falls es guiplot noch nicht gibt oder es, weil die GUI geschlossen wurde, nicht mehr gültig ist, wird es neu erzeugt.
Hallo Phil,
ich bin auch derzeit dabei eine Echzeitausgabe zu realisieren, mithilfe des Eventlisteners. Ich hab mir dein Programm angeschaut und würde gerne wissen an welcher Stelle du dein Eventlistener im Simulink-Model erstellst.
Der eventlistener wird im Simulinkmodell unter Callbacks erstellt.
Hoffe da findest du den Eintrag. Wenn nicht dann schicke ich dir Bilder. Sag einfach Bescheid.
_________________
mfg Phil
David1988
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.02.2014, 13:59
Titel:
Hey,
sorry wenn ich das Thema nochmal aufgreife, aber ich hab da noch ein kleines Problem
Mein Ziel ist genau das gleiche wie das von Phil, allerdings hänge ich noch an der Stelle hier:
Phil1988 hat Folgendes geschrieben:
Warning: Error occurred while evaluating listener callback.
??? Error using ==> plot
Vectors must be the same lengths.
Error in ==> updategui at 29
plot(guiplot,XData,YData);
Phil hatte leider nicht mehr erklärt, wie er dieses Problem lösen konnte und ich bin auch nicht der Erfahrenste was Matlab angeht... Vielleicht weiß ja noch jemand, wie das Problem zu beheben ist?! Laut Workspace haben XData sowie YData jeweils nur den aktuellen Wert gespeichert. So soll es ja auch sein...
ich konnte dass problem mit Haralds Vorschlag lösen. Ich musste nach der Änderung MatLab lediglich neu starten damit Werte aus dem cache gelöscht werden. Mit dem aktualisierten quelltext hat dann alles funktioniert.
Falls du trotzdem noch Hilfe brauchst kann ich dir bei Gelegenheit nochmal dass komplette Programm schicken. Aber wie gesagt, dürfte letztendlich nichts anders sein.
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
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.