Matlab - EJECUCION CICLICA DE UN SLX

 
Vista:
sin imagen de perfil

EJECUCION CICLICA DE UN SLX

Publicado por Victor (4 intervenciones) el 23/12/2017 05:48:50
Estoy haciendo un programa en Matlab que ejecute ciclicamente un .slx en modo externo(necesito que se ejecute varias veces porque equiero guardar algunos datos del modelo).

Explico como lo estoy haciendo en palabras simples y el problema.:

Cree un .m que que contiene datos iniciales para que funcione el modelo .slx luego uso algunos comandos matlab para mandar a ejecutar el .slx, luego en el slx en StopFcn de Model Properties llamo una funcion llamada guardar al cual entran los datos que necesito guardar(en eso no tengo problema, los guarda). luego esta funcion guardar abre el .m inicial para que vuelva a ejecutatar el modelo(aqui esta el problema, ya que no lo hace)

Alguien me puede ayudar en esto, no he podido detectar el problema. Incluso he comprobado que el programa pasa por las instrucciones para que se vuelva a ejecutar y este no o hace(lo comprobe poniendo un display despues de esas instrucciones).

Dejo el codigo mas abajo de los 2 .m

1) Este se ejecuta primero: automata.m

disp('automata funcionando')

existe = exist('globales.mat');

if(existe==0)
count_sim = 1; % contador de simulaciones
Tm = 0.5; % Tiempo de muestreo
n = 3; % numero de veces que quiero correr el modelo

end

if(existe==2)
load globales
count_sim = count_sim + 1;
end

% guardo variables globales tales como el contador de simulaciones y el Tm
save globales

% Cargo el modelo
archivo = 'CTI_xbee_2'; % este es el nombre del modelo
eval(archivo);

% Configuro y mando a correr simulación
set_param(gcs, 'FixedStep', 'Tm')

set_param(gcs,'SimulationMode','external');

set_param(gcs,'SimulationCommand','start'); % aqui doy run al slx

% mensaje de que simulacion esta haciendo
disp(['Realizando simulación ',num2str(count_sim),'.']);

2) El .slx arranca y cuando para en StopFcn llama a la sguiente funcion:

guardar(datos)

3) guardar.m

function guardar(dd)

disp('Guardando datos ...')


load globales

STR = ['save xb_05_' num2str(count_sim + 5)];
eval(STR);

pause(5)
if(count_sim <= n)
disp('mande a ejecutar automata')
automata % AQUI LLAMA A automata nuevamente para que se ejecute denuevo
else el .slx, pero en automata este no da start nuevamente.
disp('He finalizado mi tarea señor')

end

Espero se entienda y puedan ayudarme.
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