Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Trouver une fonction de transfert à partie d'essais



  1. #1
    pierre_63

    Trouver une fonction de transfert à partie d'essais


    ------

    Bonjour à tous!
    Je souhaite trouver la fonction de transfert d'un moteur thermique à l'aide de sa réponse indicielle. J'ai effectué un essai que j'ai transféré dans MATLAB, j'ai donc tous les points nécéssaires. Malheureusement je connais assez mal MATLAB. Mes relevés sont sous forme d'une "structure array". Quelqu'un sait comment trouver une approximation de la fonction de transfert dudit moteur à l'aide de ces points?
    Merci d'avance.

    pierrot

    -----

  2. Publicité
  3. #2
    cyberantoine

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour,

    est ce que tu connais la forme analytique de ta fonction de transfert ? Il serait agréable d'avoir une telle forme : f(cstes,variables).
    Tu peux alors faire une optimisation sur les constantes pour que la courbe colle au mieux sur tes points de mesures. Si tel est le cas,; si ta fonction est non linéaire, tu peux faire appel à la fonction lsqnonlin de Matlab.

    Antoine

  4. #3
    Maxbester

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour,

    J'ai un peu le même problème.
    Je travaille sur un moteur à courant continu. J'ai effectué des mesures, avec un oscillo, que j'ai enregistré au format .bat afin de les traiter sur Matlab.

    J'ai relevé les valeurs de la consigne (signal sinusoïdal 3 à 5V de fréquence 0,3Hz) et de la mesure.

    J'aimerais faire une étude harmonique (Bode ?) mais je ne maîtrise pas assez Matlab pour cela.

    Pourriez-vous m'indiquer des fonctions qui me seraient utiles ?

    Merci de votre aide.

  5. #4
    Madlaber

    Re : Trouver une fonction de transfert à partie d'essais

    Ptit raté de message, je me suis fait jeté par le site ...

    Du coup, pas envie que çà m'arrive une 2ème fois, j'vais faire sans fioritures ...

    Détermination de Diagrammes de Bode (GAIN / PHASE) à partir d'Essais SINUS

    0a) Extraction des données enregistrées
    0b) Interpolation sur une base de temps à pas fixe (peut être utile si les datations d'enregistrement mettent en évidence une dispersion des intervalles d'acquisition) (la théorie dit même de filtrer après une interpolation à 1/(2.dt) ... perso, j'avais pas fait ... A voir si l'estimation finale y est sensible pour le domaine de fréquences qui t'intéresse).

    Diagramme de Bode en GAIN
    1a) Analyse FFT des signaux d'Excitation et de Sortie (en amplitude ou en puissance)
    1b) Identification de la 1ère harmonique (normalement la même, à savoir celle de la fréquence imposée par l'entrée ...)
    1c) Rapport des valeurs de DSA à cette fréquence (ou bien Racine carrée du rapport des DSP) => Obtention d'un point du DdB / GAIN à la fréquence considérée.
    1d) Itérer pour autant de séquences enregistrées (le traitement en batch avec sauvegarde dans un fichier fonctionne bien ... !)
    1d) Concaténation [Fréquence ; Gain ] => DdB / GAIN.

    Diagramme de Bode en PHASE
    2a) Analyse d'intercorrélation Sortie & Entrée
    (Signal Processing Toolbox utile voire nécessaire)
    2b) Identification du maximum de ressemblance
    2c) Calcul du déphasage à partir du décalage temporel identifié
    2d) Itérer ... idem !!!
    2e) Concaténation [Fréquence ; Déphasage] => DdB / PHASE.
    Fonction prewarp utile pour limiter les sauts entre +/- 180°.



    Une fois ces diagrammes de Bode tracés, le vrai travail commence !!!
    Analyse de la FT identifiée, Cohérence avec un modèle théorique ...

    Bon courage Maxbester pour le script,
    Mais çà marche et c'est toujours mieux que la règle et la calculatrice !!!

    A une prochaine.

  6. A voir en vidéo sur Futura
  7. #5
    Maxbester

    Re : Trouver une fonction de transfert à partie d'essais

    Oups, désolé de répondre que maintenant, ton message était passé inaperçu dans ma boîte mail.

    Merci pour ton explication très claire !!

    Mais j'aimerais savoir quelles sont les fonctions Matlab que tu utilises. Par exemple pour l'interpolation 0b) ainsi que pour la concaténation 1d)

    J'avais oublié de préciser que je ne suis pas encore un expert en Matlab

    Merci !!

  8. #6
    phryte

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour.
    Tu peux faire une modélisation ARMA par la méthode de prony (help prony)
    Exemple :
    Code:
    clear
    fe=1000;
    N=50;
    [b,a]=butter(4,400/(fe/2));%Coefficients du filtre passe-bas
    y=ones(1,N)+0.1*(rand(1,N)-0.5);%Signal échelon bruité
    h=filter(b,a,y)';%Réponse du filtre passe-bas
    plot(h,'r')
    grid
    %Y=load('dataimp.dat')
    [b1,a1]=prony(h,5,5);%Coefficient du modèle
    hold on
    impz(b1,a1,N)

  9. Publicité
  10. #7
    Maxbester

    Re : Trouver une fonction de transfert à partie d'essais

    Yes merci beaucoup !

  11. #8
    Madlaber

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour Maxbester, Bonjour Phryte,

    Excellentissime, la méthode de PRONY.
    Je vais me documenter sur cette technique, d'un haut intérêt pour mes activités. Il n'est jamais trop tard !
    Cà me rappelle effectivement des choses ... la détermination des coefficients polynomiaux d'une FT à partir des échantillons de sa réponse indicielle. Additionnée à la puissance de MATLAB pour faire le calcul statistique qui va bien pour bétonner l'estimation.
    Merci beaucoup pour cette piste d'investigations à venir !!!

    Maxbester, ma réponse est tardive, et tu as déjà dû trouver rien qu'à taper les premières lettres dans l'aide (interp1). Pour l'application que j'avais décrite, c'était.
    Signal rééchantillonné = interp1 (Base de temps mesurée, Signal mesuré, Base de temps rééchantillonnée);

    Cordialement,
    Madlaber.

  12. #9
    sala.g

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour messieurs

    Je veux reconstruire ma fonction de transfert a partir des mesures d'entrée- sortie de mon système, et je suis un peut coincé
    sur la manière de procéder, en lisant votre discussion j'ai un peut de mal a vous suivre.
    Merci de bien vouloir m'éclairer sur le sujet
    Bien cordialement

  13. #10
    gg0
    Animateur Mathématiques

    Re : Trouver une fonction de transfert à partie d'essais

    4 ans après ? Bonne chance !!!

  14. #11
    sala.g

    Re : Trouver une fonction de transfert à partie d'essais

    Je suis vraiment bloquée et j'ai pas d'autre piste actuellemnt,

  15. #12
    phryte

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour.
    Tu utilises la modélisation par les moindres carrés et tu as la fonction de transfert en z

  16. Publicité
  17. #13
    sala.g

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour

    J'Essey de reconstruire mon système, soit en fréquentielle, soit en temporelle, par contre je ne vois pas comment je pourrais le faire avec les moindres carée et la transformer en Z.
    Pourriez-vous être un peu plus claire à ce sujet.

    Merci d'avance

  18. #14
    phryte

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour.
    Voici un exemple pour un filtre passe-bas d'ordre deux avec MATLAB:
    clear
    omegac=100;tau=1/omegac;
    ksi=sqrt(2)/2;
    p=tf('p');
    FTP=1/(1+2*ksi*tau*p+tau^2*p^2);%Mod èle de filtre passe-bas ordre deux
    Te=1/omegac;
    z=tf('z',Te);
    FTZ=c2d(FTP,Te);
    numFTZ=FTZ.num{1};
    denFTZ=FTZ.den{1};
    [Y,T,X] = STEP(FTZ);%Réponse à un échelon unité - Y : signal de sortie
    N=length(Y);%Longueur de l'échantillon
    entree=ones(1,N)';%Signal d'entrée
    numFT=2;%Degre du numérateur
    denFT=3;%Degré du dénominateur
    %Formation de la matrice A
    A(1:N,1)=entree(1:N);
    A(2:N,2)=A(1:N-1,1);
    A(2:N,3)=Y(1N-1));
    A(3:N,4)=A(2N-1),3);
    A(4:N,5)=A(3N-1),4);
    %Calcul de la matrice des coefficients par les moindres carrés
    C=inv(A'*A)*A'*Y;
    gain= 1/(sum(C(1:numFT))/(1-sum(C(numFT+1:numFT+denFT))));
    s(1)=Y(1);s(2)=Y(2);s(3)=Y(3);
    s1(1)=Y(1);s1(2)=Y(2);s1(3)=Y( 3);
    %Calcul de l'équation récurente du modèle et du filtre
    for n=4:N
    s(n)=gain*(C(1)*A(n,1)+C(2)*A( n-1,1))+C(3)*s(n-1)+C(4)*s(n-2)+C(5)*s(n-3);
    s1(n)=numFTZ(2)*A(n,1)+numFTZ( 3)*A(n-1,1)-denFTZ(2)*s(n-1)-denFTZ(3)*s(n-2);
    end
    figure(1)
    plot(T,s,'r','LineWidth',3)
    hold on
    plot(T,s1,'g','LineWidth',3)
    plot(T,Y,'k')
    grid

    La FT est définie par les coefficients de la matrice C.

  19. #15
    Bruno

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour,

    Identifier une fonction de transfert par moindres carrés comme fait dans le post précédent donne en général des estimations de mauvaise qualité, surtout dans les basses fréquences. Il vaut mieux utiliser les MC récursifs (voir méthode de Sanathanan dans http://www.sumo.intec.ugent.be/files/2006_07__MTNS.pdf) pour améliorer l'estimation mais l'algo de Gauss-Newton reste plus peformant. Numériquement, inv(A'*A)*A'*y est une catastrophe, il faut toujours utiliser A \ y.

    Sinon il y a dans Matlab une interface graphique si on veut pas s'amuser à recoder ce qui existe déjà: http://www.mathworks.nl/products/sysid/ (taper identify).

  20. #16
    sala.g

    Re : Trouver une fonction de transfert à partie d'essais

    Merci beaucoup

  21. #17
    sala.g

    Re : Trouver une fonction de transfert à partie d'essais

    Bonjour

    Je viens d'exécuter votre programme, mais je n'arrive pas à retrouver les bons parametres (matrice C).
    Ya t'il une autre méthode plus performante.
    Merci D'avance.

Discussions similaires

  1. Etudier une fonction formée de partie entière
    Par _Aravis dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 30/09/2007, 20h27
  2. Relier une alim à une plaque d'essais
    Par wOq dans le forum Électronique
    Réponses: 6
    Dernier message: 01/08/2007, 11h30
  3. Aide pour une fonction de transfert
    Par Mauvais-a-tout dans le forum Physique
    Réponses: 5
    Dernier message: 02/02/2007, 14h04
  4. Réponses: 3
    Dernier message: 10/06/2006, 17h34
  5. Trouver une fonction à partir de quelques points...
    Par B3nJ4m1n dans le forum Mathématiques du supérieur
    Réponses: 19
    Dernier message: 15/08/2005, 23h14