Bonjour, à tous,
J'essaie de dimensionner un correcteur pour piloter un système dans la fonction de transfert Gid présente un zéro instable. Le système représente une alimentation à découpage.
Je vous joint le fichier simulink et une photo du schéma bloc
Avec :
J'aimerai trouver un correcteur Kz(z) tel que le transfert Kz.Gid soit le plus rapide possible. Je fixerai ensuite la dynamique d'asservissement avec la fonction de transfert Gz.
Si Gid possédait un zéro stable, on choisirait Kz(z) tel que :
Sauf qu'ainsi on compenserait le zéro instable et conduirait à de l'instabilité sur la commande.
Donc d'après mes cours, on choisit le correcteur tel que :
C'est à dire :
J'aimerai implémenter ça sur Matlab et là commence les soucis. La simulation sur Simulink diverge et crash. Il me semble avoir fait ça pourtant correctement...
Voici mon script :
schemaBloc.jpgCode:E = 350; %alimentation R = E^2 / 1000; %charge L = 10e-6; C = 2*10e-6; % Ts = pi * sqrt(L*C) / 3 Ts = 15e-6 %période d'échantillonnage Gid = 2*E/R * tf([R*C 1], [L*C L/R 1]) %fonction de transfert courant inductance / rapport cyclique Gvi = tf(R, [R*C 1]) %fonction de transfert tension de sortie / courant inductance %% on s'occupe de la première boucle interne pour le courant %discrétisation du processus Gid_z = c2d(Gid, Ts) Gid_z.Variable = 'z^-1' [Bz, Az] = tfdata(Gid_z,'v') %transfert le plus rapide pour un processus avec zéro instable Kz = Az / polyval(Bz, 1) %comportement en BF tau = 15*Ts; Gp = tf(1, [tau 1]) Gz = c2d(Gp, Ts) [Bm, Am] = tfdata(Gz,'v');
Je vous joint le fichier simulink en version 2014
Pouvez-vous m'aider à trouver où j'ai fauté ?
Je vous remercie pour votre aide
-----