Piloter Simulink en boucle avec script
Bonjour à tous,
Voilà, j'ai un modèle Simulink qui me permet de rejouer des données acquises par une carte National Instrument (utilisation de look-up table).
J'ai besoin de faire tourner ce modèle en boucle depuis une fonction matlab, sachant que cette fonction incrémente une des valeurs du modèle en fonction de la valeur d'une de ses sorties (je sais c'est compliqué).
Pour la variable qui doit être incrémentée, j'utilise un bloc 'constant'.
Mon problème est que la variable ne semble pas s'incrémenter...
Voici mon code :
Code:
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
| function [crit,reg] = Calibration(pmin,pas,pmax)
size_crit = (pmin + pmax)/pas;
crit = zeros(size_crit,1);
j = 1;
for i = pmin:pas:pmax
Consigne_pression(i); % Entrée consigne
pause(60) % On laisse le temps à la pression pour se stabiliser
Script(i); % chargement des constantes
acquisition; % acquisition de données sur 1500 points
load vitesse.mat
sim('modele_test_reglage');
tmp = find(yout == 1);
while (isempty(tmp) ~= 1)
crit(j) = crit(j) + 1;
sim('modele_test_reglage');
tmp = find(yout == 1);
end % end while
display(crit(j))
j = j + 1;
crit(j) = crit(j-1);
end % end for
reg = polyfit(i,crit,6); % renvoie les coefficients de la régression polynômiale
z = polyval(reg,i);
plot(i,crit,'o',i,z) % trace le résultat
grid
end % End function calibration.m |