|
|
Event Listener verlangsamen meine Simulink Regelung |
|
Alex1 |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 07.09.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.09.2014, 22:21
Titel: Event Listener verlangsamen meine Simulink Regelung
|
|
|
|
|
Hallo Zusammen,
ich habe eine Regelung in Simulink erstellt die mittels einer GUI (mit guide erstellt) gesteuert werden soll. In dieser werden derzeit 4 (später 6) Messsignale in Echtzeit in der GUI dargestellt. Dies passiert über Event Listener (in der StartFcn in Simulink deklariert) die auf ein seperates updategui.m File verweisen.
Mein Problem ist jetzt, dass seitdem die Simulationszeit extrem zugenommen hat.
Parameter:
Simulationszeit 5s, Fixed Step Solver (ode1), Fixed Step Size 0.1
Berechnungszeit vorher (ohne gui, event listener): 1s
Berechnungszeit nachher: 62s
Die Werte beziehen sich auf einen reinen Berechnungsvorgang in Simulink. Die Steuerung erfolgte hier nicht über die GUI. (wobei das Ergebnis gleich ist)
Wenn ich mein Simulink slx File in einen anderen Ordner kopiere in dem kein updategui.m File liegt, ist die Simulationszeit wieder bei 1s.
D.h. das Problem muss an der Wertübergabe zwischen Simulink (Modell) und Matlab (updategui.m) liegen.
Jetzt meine Fragen:
Habt ihr ähnliche Erfahrungen gemacht?
Kann ich etwas im updategui.m File verbessern?
Vielleicht eine Begrenzung einbauen, dass nur 2 Werte pro Sekunde gelesen/angezeigt werden? Wie?
Viele Grüße
Alex
|
|
|
|
|
Alex1 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 07.09.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.09.2014, 15:57
Titel:
|
|
Habe es selbst gelöst.
Die letzte Zeile Code im updategui.m File, hat meine Simulation ausgebremst.
--> set_param('regelung','SimulationCommand','Update')
Ich dachte mit dem Update Befehl kann ich meine Ausgabewerte in der GUI aktualisieren. Der Befehl ist aber gar nicht nötig, es wird schon automatisch in Echtzeit aktualisiert.
Falls jemand mit dem Updaten der GUI Probleme hat, hier mein Code:
function varargout = updategui(varargin)
%create a run time object that can return the value of the out block's
rto1 = get_param('regelung/Out_1','RuntimeObject');
rto2 = get_param('regelung/Out_2','RuntimeObject');
%create string from realtime object
str1 = num2str(rto1.InputPort(1).Data);
str2 = num2str(rto2.InputPort(1).Data);
%get a handle to the GUI's text fields
display1 = findobj('Tag','text1');
display2 = findobj('Tag','text2');
%update the gui
set(display1,'string',str1);
set(display2,'string',str2);
|
|
|
|
|
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.
|
|