190 lines
No EOL
8 KiB
TeX
Executable file
190 lines
No EOL
8 KiB
TeX
Executable file
\documentclass{article}
|
|
|
|
\input{../../preambule/preambule}
|
|
|
|
\newcommand{\nomTD}{TP3 : Asservissement numériques de position}
|
|
\renewcommand{\nomentete}{UE421 - \nomTD}
|
|
\renewcommand{\auteur}{A. Arnould, T. Colinot, C.Colonna}
|
|
\newcommand{\z}{z^{-1}}
|
|
|
|
|
|
\begin{document}
|
|
|
|
\titre{TP3 : Identification et asservissement numériques de position d'un bras à liaisons flexibles}
|
|
|
|
\section{Introduction}
|
|
|
|
On s'intéresse dans ce TP à la commande d'un montage disposant d'un bras entrainé par un moteur en liaison pivot élastique avec un chassis également en liaison pivot élastique avec le bâti.
|
|
|
|
\subsection*{Préparation 1}
|
|
|
|
\begin{itemize}
|
|
\item En utilisant la documentation fournie en annexe on trouve la constante de temps mécanique de la MCC : $\tau_m = 17 ms$. On peut également déduire des valeurs de résistance et d'inductance fournie un ordre de grandeur de la constante de temps électrique de la machine : \[\tau_{el} = \frac{L}{R} \approx 80 \mu s << \tau_m\]
|
|
|
|
\item Comme la constante de temps mécanique est très grande devant la constante de temps électrique, on peut simplifier l'équation électrique donnée. \[u(t) = Ri(t) + \Phi\omega_m\]
|
|
|
|
\item En analysant les ordres de dérivation maximum atteignables par combinaison des équations électriques et mécaniques fournies, on trouve : \begin{itemize}
|
|
\item Pour $\theta$ : on arrive jusqu'à $\ddot{\ddot{\theta}}$, ce qui explique le degré 4 au dénominateur. Comme les expressions ne comportent que $\dot{\theta}$, on obtient un $(1-\z)$ en facteur.
|
|
\item Pour $\psi$ : on atteint $\dot{\ddot{\psi}}$, ce qui explique l'ordre 3 pour $V_\psi$.
|
|
\item Pour $U$ : on sait que le système est causal, ce qui impose les degrés des polynômes aux numérateurs.
|
|
\end{itemize}
|
|
|
|
\end{itemize}
|
|
|
|
\subsection*{Manipulation 1}
|
|
|
|
On injecte en entrée du système un créneau d'amplitude 2V crête-à-crête. On relève les signaux en sortie des capteurs de vitesse angulaire $\omega$ et de position angulaire du bras $\psi$. On obtient la courbe suivante :
|
|
|
|
\begin{figure}[h!]
|
|
\begin{center}
|
|
\includegraphics[width=0.7\textwidth]{tau.png}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
On relève le temps de montée du système approximé à un premier ordre, ce qui nous donne la bande passante du système. On trouve $\tau = 16 ms$ donc $F_max = 9.9Hz$. Une fréquence d'échantillonnage de 25ms est donc adaptée : elle conduit à une fréquence d'échantillonnage $F_e = 40Hz$ qui respecte la condition de Shannon : \[F_e > 2F_{max}\]
|
|
|
|
On peut approximer le système par un premier ordre, car la dérivée à l'origine de la réponse indicielle n'est pas nulle. Le comportement observé est donc uniquement dû à l'aspect mécanique du système. Cela prouve que la constante de temps électrique est négligeable, et justifie la simplification de l'équation électrique.
|
|
|
|
Pour une entrée sinusoïdale de fréquence 1Hz, on observe les angles $\theta$ et $\psi$ du système grâce à la carte Dspace et Simulink.
|
|
|
|
\begin{figure}
|
|
\begin{center}
|
|
\includegraphics[width=0.7\textwidth]{CAN.png}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
\section{Identification}
|
|
\subsection*{Préparation 2}
|
|
|
|
\begin{itemize}
|
|
|
|
\item D'après l'équation (6) on trouve l'équation de récurrence : \[\gamma[k] + (a_1-1)\gamma[k-1] + (a_2-a_1)\gamma[k-2] + (a_3-a_2)\gamma[k-3] + (a_3-a_4)\gamma(k-4) = \Sigma_{i=1..4}b_iu[k-i]\]
|
|
|
|
\item On peut poser $\hat{\gamma}$ tel que $\hat{\gamma}[k] = \gamma[k] - \gamma[k-1]$.
|
|
|
|
\item On exprime $\hat{\gamma}[k]$ en fonction des termes précédents de $\hat{\gamma}$ et de $u$ :
|
|
\[\hat{\gamma}[k] = -\Sigma_{i=1..3}a_i\hat{\gamma}[k-i] + \Sigma_{i=1..4}b_iu[k-i]\]
|
|
d'où l'expression matricielle :
|
|
\[\hat{\gamma}[k] = \left[ -\hat{\gamma}_{k-1} \quad -\hat{\gamma}_{k-2} \quad -\hat{\gamma}_{k-3} \quad -\hat{\gamma}_{k-4} \quad u_{k-1} \quad u_{k-2} \quad u_{k-3}\right] \left[a_1 \quad a_2 \quad a_3 \quad b_1 \quad b_2 \quad b_3 \quad b_4\right]^{T} \]
|
|
|
|
\item D'après l'annexe 7 on obtient une expression de d[k] : \[d[k] = \left[-\hat{\gamma}[k-1] -\hat{\gamma}[k-2] ... -\hat{\gamma}[k-n] u[k-1] u[k-2] ... u[k-m]\right] \]
|
|
tel que $d[k]v = \hat{\gamma}\*[k,v]$
|
|
|
|
\item Par définition du SBPA, la grille fréquentielle est de $\frac{1}{NT_e}$. Pour $N=127$ et $T_e = 25ms$ on obtient 0.31Hz.
|
|
|
|
\end{itemize}
|
|
|
|
\subsection*{Manipulation 2}
|
|
|
|
On génère une séquence de bruit pseudo-aléatoire de longueur 7. On utilise pour ceci un registre à décalage, que l'on peut mettre en oeuvre sous Simulink comme suit :
|
|
|
|
\begin{figure}
|
|
\begin{center}
|
|
\includegraphics[width=0.7\textwidth]{SBPA.PNG}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
La transformée de Fourier du SBPA est :
|
|
|
|
\begin{figure}
|
|
\begin{center}
|
|
\includegraphics[width=0.5\textwidth]{spectroutroum.PNG}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
L'enveloppe de la densité spectrale de puissance a la forme d'un sinus cardinal périodisé. On vérifie que la grille fréquentielle est suffisamment fine pour caractériser le système.
|
|
|
|
On mesure les variations de l'angle du bras au cours du temps. On s'intéresse particulièrement au comportement fréquentiel de ce paramètre. La réponse en fréquence est donnée ci-dessous.
|
|
|
|
|
|
\begin{figure}[h!]
|
|
\begin{center}
|
|
\includegraphics[width=0.5\textwidth]{FFTBG.png}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
Il existe des résonances matérialisées par des pics dans la réponse en fréquence. La plus importante se trouve à $F_{res} = 4.1Hz$. En excitant le système au GBF, avec un sinus de fréquence 4.1Hz, on remarque que cette résonance correspond à la fréquence où le bras oscille sans la plate-forme.
|
|
|
|
On veut identifier le système à partir de la forme choisie. Pour ce faire on met en oeuvre un critère des moindres carrés portant sur les paramètres du système.
|
|
|
|
Le code matlab est donné ci-dessous :
|
|
\begin{lstlisting}
|
|
%kth=10/(2*pi);
|
|
%kpsi = 25/(2*pi);
|
|
|
|
mlibini
|
|
|
|
var_names={'Model Root/theta/Out1';'Model Root/psi/Out1';'Model Root/Alpha7/Out1'};
|
|
var=mlib('GetTrcVar',var_names);
|
|
mlib('Set','Trigger','off', 'TraceVars',var, 'StepSize',0.025, 'Start',0.0, 'Stop',5);
|
|
|
|
mlib('StartCapture');
|
|
while mlib('CaptureState')~=0,end
|
|
out_data=mlib('FetchData');
|
|
|
|
Te=0.025;
|
|
theta = out_data(1,:)-mean(out_data(1,:));
|
|
psi = out_data(2,:)-mean(out_data(2,:));
|
|
u = out_data(3,:)-mean(out_data(3,:));
|
|
gamma = psi+theta;
|
|
|
|
|
|
t=0:(length(out_data)-1);
|
|
t=t*Te;
|
|
|
|
hat_gamma = gamma - [0 gamma(1:end-1)];
|
|
hat_gamma_1 = [0 hat_gamma(:,1:end-1)];
|
|
hat_gamma_2 = [0 hat_gamma_1(:,1:end-1)];
|
|
hat_gamma_3 = [0 hat_gamma_2(:,1:end-1)];
|
|
hat_gamma_4 = [0 hat_gamma_3(:,1:end-1)];
|
|
|
|
u_1 = [0 u(:,1:end-1)];
|
|
u_2 = [0 u_1(:,1:end-1)];
|
|
u_3 = [0 u_2(:,1:end-1)];
|
|
|
|
d = [[-hat_gamma_1]; [-hat_gamma_2]; [-hat_gamma_3]; [-hat_gamma_4]; [u_1]; [u_2]; [u_3]];
|
|
d = d';
|
|
d = d(4:end,:);
|
|
|
|
v_opt = inv(d'*d)*d'*gamma(4:end)';
|
|
|
|
\end{lstlisting}
|
|
|
|
Les valeurs optimales sont \[v_{opt} = \vect{a_1 \\ a_2 \\ a_3 \\ a_4 \\ b_1 \\ b_2 \\ b_3} = \vect{-0,284 \\
|
|
-0,540 \\
|
|
-0,718 \\
|
|
-0,525 \\
|
|
-0,066 \\
|
|
0,007 \\
|
|
0,038}\]
|
|
|
|
\section{Asservissement de position}
|
|
|
|
\subsection*{Préparation 3}
|
|
|
|
\begin{itemize}
|
|
|
|
\item Le polynôme caractéristique monique s'exprime sous la forme \[\Pi_d(p) = 1+\frac{2m}{\omega_0}p + \frac{p^2}{w_0^2}
|
|
\]
|
|
Si on pose $p=\frac{1-z}{T_e}$ on trouve \[\Pi_d(z) = 1+\frac{2m}{\omega_0}\frac{1-z}{T_e} + \frac{(\frac{1-z}{T_e})^2}{w_0^2}\]
|
|
\[=1+\frac{2m}{\omega_0T_e}+\frac{1}{\omega_0^2T_e^2} + z(-\frac{2m}{ \omega_0T_e} - \frac{2}{\omega_0^2T_e^2}) + z^2(\frac{1}{\omega_0^2T_e^2})\]
|
|
|
|
\item Pour $e(z) = 0$ et $p(z) = cste$ on a \[lim_{n\rightarrow+\infty}(\epsilon[n]) = lim_{z\rightarrow1}(\epsilon(z)) = lim_{z\rightarrow1}(R(z)*(...))\]
|
|
donc si $R(z) = (z-1)\tilde{R}(z)$ on a bien : \[lim_{n\rightarrow+\infty}(\epsilon[n]) = 0\] ce qui correspond à une erreur statique nulle pour une perturbation constante.
|
|
|
|
\item L'équation diophantienne prend la forme : \[A(z)R(z) - B(z)R(z) = \Pi_d(z)A_0(z) \]
|
|
Par égalité des degrés :
|
|
|
|
\item On prend $\omega = 100$.
|
|
|
|
\end{itemize}
|
|
|
|
\section*{Conclusion}
|
|
|
|
Si la forme de la fonction de transfert en z supposée est la bonne alors cette identification de système représente exactement la réalité.
|
|
|
|
On a utilisé un bruit blanc en entrée afin d'obtenir tous
|
|
|
|
|
|
|
|
\end{document} |