find Stateflow Test Points in Simulink model

3 vues (au cours des 30 derniers jours)
Andy
Andy le 26 Juin 2015
Commenté : Andy le 15 Juil 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.

Réponse acceptée

Debarati Banerjee
Debarati Banerjee le 7 Juil 2015
Modifié(e) : Debarati Banerjee le 7 Juil 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 commentaire
Andy
Andy le 15 Juil 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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Complex Logic dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by