Matlab - GUI- Simulink

   
Vista:

GUI- Simulink

Publicado por Esteban (17 intervenciones) el 27/05/2013 15:59:57
Buenas a todos,

Tengo un modelo en el simulink, el cual quiero controlar mediante una gui.

Quiero que en un axes visualizar lo que veo en el scope de simulink, supongo que es posible, pero no se la forma adecuada de hacerlo, si alguien me puede orientar en que comandos debo utilizar.

Debo llevar las variables del modelo de simulink al workspace, con una caja To workspace ??

He visto que si declaro una variable como global en el workspace, luego en la gui la reconoce, pero siempre he de declarar en el workspace esta variable como global ?

Gracias desde ya!!

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

GUI- Simulink

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3439 intervenciones) el 27/05/2013 17:26:36
Desde un archivo simulink con el bloque to worksapce llevas la variable a worksapce y con la función evalin() llevas la variable desde worksapace a un editor de matlab y con la función plot() graficas dentro de un axis en matlab guide.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Esteban (17 intervenciones) el 27/05/2013 18:37:31
Gracias Jose.

No tengo claro como funciona el comando evalin
Tengo un modelo en simulink con las cajas to workspace, y a las variavles les he dado el nombre de entrada y nivel.
La gui consta de un axes, con tag axes1, y un pushbutton con tag graficar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function varargout = axes_graficar(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @axes_graficar_OpeningFcn, ...
                   'gui_OutputFcn',  @axes_graficar_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function axes_graficar_OpeningFcn(hObject, eventdata, handles, varargin)
 
find_system('Name','prueva_axes'); % Comprueva que el programa existe
open_system('prueva_axes');% abre el modelo en simulink
set_param(gcs,'SimulationCommand','start')% play
 
handles.output = hObject;
 
 
guidata(hObject, handles);
 
 
function varargout = axes_graficar_OutputFcn(hObject, eventdata, handles)
 
varargout{1} = handles.output;
 
 
function graficar_Callback(hObject, eventdata, handles)
axes(handles.axes1);
 
x=evalin('base', 'entrada');
y=evalin('base', 'nivel');
plot(x,y);


Lo que quiero es graficar lo que veo en el scope, debería declarar algun vector de tiempo ?
'x' y 'y' con las señales que tengo declaradas en el workspace ?

Desde ya muchas gracias
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO

GUI- Simulink

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3439 intervenciones) el 27/05/2013 19:19:16
He allí el punto.
Te dije que con la función de evalin se hace ese parte y es parte del usuario investigar los comandos que menciono en el foro. De esa manera aprenderás mejor matlab.
porque no digitas en la ventana de matlab, la sentencia: help evalin. luego entras a doc allí podrás ver como funciona ese comando y podrás adaptarlo a tu código.
También puede buscar en el mismo foro el uso de ese comando evalin() digitando en la opción de buscar del foro, el texto evalin, en el foro mismo muchos usuarios ya han usuado ese comando de matlab.


Otra sugerencia mas:
Ejecuta solo tu archivo de simulink, y debe aparecer tus variables en el workspace (y si no aparece quiere decir que tu archivo simulink no esta exportando los variables a workspace, eso quiere decir que el bloque To a workspace no esta bien ubicado dentro del simulink, ese bloque debe ir antes del bloque scope para que pueda exportar las variables), y para ver el tipo de variables y las dimensiones de tus variables que están el workspace, digita en la ventana de comandos la sentencia whos y podrás ver lo que tienes en el workspace.





Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Esteban (17 intervenciones) el 27/05/2013 21:38:24
Gracias Jose, seguiré investigando y les cuento mis avances.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO

GUI- Simulink

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3439 intervenciones) el 27/05/2013 21:50:44
Haber.
digita en la ventana de comandos de matlab la sentencia: clear all

luego ejecuta tu archivo simulink(es decir netamente tu archivo de simulink y no el guide).
luego digita en la ventana de comandos la sentencia: whos
y te va a salir unos datos.
Copia todo lo que sale en la ventana de comandos y pégalo al foro, así podre saber si esta exportando o no tu archivo simulink.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Esteban (17 intervenciones) el 27/05/2013 22:33:05
Creo que si que las guarda correctamente.

>> clear all
Warning: The model 'eliminar3' does not have continuous states, hence Simulink is using the solver 'FixedStepDiscrete' instead of solver 'ode3'. You can
disable this diagnostic by explicitly specifying a discrete solver in the solver tab of the Configuration Parameters dialog, or by setting the 'Automatic
solver parameter selection' diagnostic to 'none' in the Diagnostics tab of the Configuration Parameters dialog.
Warning: Unable to determine a fixed step size based on the sample times in the model 'eliminar3', because the model does not have any discrete sample
times. Picking a fixed step size of (0.2) based on simulation start and stop times. You can disable this diagnostic by explicitly specifying a fixed step
size in the Solver pane of the Configuration Parameters dialog box, or setting the 'Automatic solver parameter selection' diagnostic to 'none' in the
Solver group on the Diagnostics pane of the Configuration Parameters dialog box.
>> whos
Name Size Bytes Class Attributes

entrada 1x1 1926 struct
tout 51x1 408 double

??? Attempt to execute SCRIPT entrada as a function:
G:\masip\interficie grafica_Sonia\interficie grafica_Sonia\entrada.m

Error in ==> ELIMINAR2>graficar_Callback at 81
step = evalin ('base',entrada);

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> ELIMINAR2 at 42
gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)ELIMINAR2('graficar_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback

------------------------

el Pushbutton

function graficar_Callback(hObject, eventdata, handles)
axes(handles.axes1);


step = evalin ('base',entrada);
plot(step);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Esteban (17 intervenciones) el 28/05/2013 16:59:28
function graficar_Callback(hObject, eventdata, handles)
axes(handles.grafica);
clc
temps = (0:0.1:200);
x=evalin('base', 'entrada');
y=evalin('base', 'nivel');

plot(temps,x.signals.values,'r',temps,y.signals.values,'b');

Resuelto!!

Son dos señales que saco del simulink al workspace, con un bloque To Workspace, y luego las grafico juntas en rojo y azul.

Gracias por la ayuda!!
Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Esteban (17 intervenciones) el 28/05/2013 18:57:45
Tengo otra pregunta

Las variables se guardan en el workspace una vez terminado el tiempo simulación ?
Hay alguna manera que las variavles se almacenen en el workspace en tiempo real ? , por ejemplo si el tiempo de simulación es Inf, las variavles se alamcenarían en el workspace?

muchas gracias desde ya!
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Geovany (3 intervenciones) el 10/04/2014 04:35:38
Buen dia.

tengo una pregunta, tengo una modelo de simulink y una interfaz (gui), la idea es cargar la imagen y cambiarla de formato en simulink y volverla a mostrar en la gui, eso ya lo he logrado gracias a este foro que me ha servido de mucho. finalmente mi pregunta es, como puedo lograr q al ejecutar el programa en general en el momento de interactuar con los botones de la gui no me abra en segundo plano el modelo de simulink en el momento q lo llamo, simplemente realice la accion y se vean los resultados en la gui.

tenia en mente q la custion va en la parte q declaro los parametros en el .m de la gui en la cual llamo el modelo y le digo que se ejecute (set_param(gcs,'SimulationCommand','Start');), pero no se como lograr q no me muestre la ventana de simulink esto pensando en comodidad para el usuario fiinal

gracias por su atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Geovany (3 intervenciones) el 14/04/2014 06:13:46
bueno despues de investigar acerca de l problema antes enunciado he encontrado la solucion y se los comprto a continuancion:

tenia un modelo en simulik llamado prueba, lo estaba integrando con la interfaz de la siguiente manera

find_system('Name','prueba');
open_system('prueba');
set_param(gcs,'SimulationCommand','Start');

pero tenia el incoveniente que me mostraba una ventana de simulink que era incomda al usuario, en fin lo que buscaba era que este prceso se realizara internamente, pues se logro utilizando las siguiente lineas

model='prueba';
load_system(model);
sim(model);

y problema resuelto, gracias a todos por su atencion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por victor paul8908@gmail.com (1 intervención) el 01/03/2016 20:25:41
Hola Jose, tengo una pregunta respecto a este tema. Tengo un modelo en simulink utilizando el bloque difuso. Mi pregunta es como programar ese bloque para obtener una salida en la GUI, Soy nuevo en esto de lenguaje matlab y nose mucho sobre este lenguaje.
Muchas Gracias
Te adjunto el modelo.
Simulink-SEDI-ejemplo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Cristian cristianandresariasparra@gmail.com (2 intervenciones) el 18/04/2015 04:59:20
YO QUIERO HACER LO MISMO, EL PROBLEMA QUE TENGO, ES QUE NECESITO PLOTEARLO EN UN AXIS DEL GUIDE, CUANDO EL TIEMPO DE SIMULACION ES INF, PERO NO SE COMO, YA QUE LA VARIABLE EN EL WORKSPACE SE GENERA SOLO CUANDO YA SE TERMINO EL TIEMPO DE SIMULACION DE SIMULINK, COMO HAGO?? MUCHAS GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Jhon jhon.unet33@gmail.com (1 intervención) el 20/11/2015 04:37:55
Saludos...
Pudiste resolver??
yo tambien estoy necesitando exportar e importar datos entre simulink y el workspace cuando el tiempo de simulacion es inf...no se como hacerlo porque los métodos que encuentro solo exportan concluida la simulacion...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GUI- Simulink

Publicado por Cristian Arias (2 intervenciones) el 20/11/2015 19:32:52
Buenas tardes. Jhon
te doy dos opciones, la primera es ir pausando la simulacion durante intervalos, asi en el workspace se actualiza y asi los puede tomar mientras grafica, si en tu situacion puedes hacerlo hazlo. funciona bien.
y la segunda opcion, consigue Matlab 2015, waww es buenoo en simulink, ya tiene incorporado un visualizador y te permite hacer eso!! (y)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar