find Stateflow Test Points in Simulink model

3 visualizaciones (últimos 30 días)
Andy
Andy el 26 de Jun. de 2015
Comentada: Andy el 15 de Jul. de 2015
I need to find all of the Stateflow Test Points in all charts of a SImulink model. In my experience, find_system can only be used to find Test Points in native Simulink, but not Stateflow. I am lost; please help.

Respuesta aceptada

Debarati Banerjee
Debarati Banerjee el 7 de Jul. de 2015
Editada: Debarati Banerjee el 7 de Jul. de 2015
The following piece of code will list the names of all the states in a model ('model_name.slx') with 'Test Point' enabled.
rt = sfroot;
m = rt.find('-isa', 'Simulink.BlockDiagram','-and','Name', 'model_name');
allStates = m.find('-isa','Stateflow.State','TestPoint',1);
p=get(allStates,'Name')
You can refer to this link for more information on Stateflow API.
  1 comentario
Andy
Andy el 15 de Jul. de 2015
I still have not gotten around to comparing this answer to the one I came up with while in a holding pattern, but I like it as it looks really similar, and looks like it will catch more Test Points if I ever put one on a state. Here is the essence of what worked for me; at this time, I don't know if Stateflow.State is a subset or different from Stateflow.Data.
MySF = sfroot;
M_atj = find(MySF,'-isa','Simulink.BlockDiagram');
m_sf_atj = M_atj.find('-isa','Stateflow.Chart');
d_sf_atj = m_sf_atj.find('-isa','Stateflow.Data');
TP_sf = d_sf_atj.find('TestPoint', true);
TP_sfPath = get(TP_sf,'Path');
TP_sfName = get(TP_sf,'Name');
for ii=1:length(TP_sf)
TP_list{ii} = [TP_sfPath{ii}, ' ', TP_sfName{ii}];
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Stateflow Programmatic Interface en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by