Check the principle of reciprocity

This commit is contained in:
Thomas Dehaeze 2019-07-11 16:42:51 +02:00
parent 563e827d01
commit 9ff0883a21
3 changed files with 83 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

View File

@ -138,21 +138,24 @@ All the stages are moved to their zero position (Ty, Ry, Rz, Slip-Ring, Hexapod)
All other elements have been remove from the granite such as another heavy positioning system.
** Test Planing
The goal is to identify the full $N \times N$ FRF matrix (where $N$ is the number of degree of freedom of the system).
The goal is to identify the full $N \times N$ FRF matrix $H$ (where $N$ is the number of degree of freedom of the system):
\begin{equation}
H_{jk} = \frac{X_j}{F_k}
\end{equation}
However, the principle of reciprocity states that:
\[ H_{jk} = \frac{X_j}{F_k} = H_{kj} = \frac{X_k}{F_j} \]
Thus, only one column or one line of the matrix has to be identified.
However, from only one column or one line of the matrix, we can compute the other terms thanks to the principle of reciprocity.
Either we choose to identify $\frac{X_k}{F_i}$ or $\frac{X_i}{F_k}$ for any chosen $k$ and for $i = 1,\ ...,\ N$.
We here choose to identify $\frac{X_i}{F_k}$ for practical reasons:
- it is easier to glue the accelerometers on some stages than to excite this particular stage with the Hammer
- it is easier to glue the accelerometers on all the stages and excite only a one particular point than doing the opposite
The measurement thus consists of:
- always excite the structure at the same location with the Hammer
- Move the accelerometers to measure all the DOF of the structure
We will measured 3 columns (3 impacts location) in order to have some redundancy.
** Location of the Accelerometers
4 tri-axis accelerometers are used for each solid body.
@ -561,7 +564,7 @@ The coherence associated is shown on figure [[fig:frf_result_example]].
plot(meas1.FFT1_AvSpc_2_RMS_X_Val, meas1.FFT1_AvXSpc_2_1_RMS_Y_Mod);
set(gca, 'Yscale', 'log');
set(gca, 'XTickLabel',[]);
ylabel('Magnitude');
ylabel('Magnitude [$\frac{m/s^2}{N}$]');
ax2 = subplot(2, 1, 2);
plot(meas1.FFT1_AvSpc_2_RMS_X_Val, meas1.FFT1_AvXSpc_2_1_RMS_Y_Phas);
@ -606,7 +609,7 @@ The frequency response matrix is an $n \times p \times q$:
- $q$ is the number of frequency points $\omega_i$
Thus, the FRF matrix is an $69 \times 3 \times 801$ matrix.
We do the same thing for the coherence matrix.
#+begin_important
For each frequency point $\omega_i$, we obtain a 2D matrix:
@ -672,6 +675,7 @@ And we save the obtained FRF matrix and Coherence matrix in a =.mat= file.
#+begin_src matlab
save('./mat/frf_coh_matrices.mat', 'FRFs', 'COHs', 'freqs');
#+end_src
* Plot showing the coherence of all the measurements
Now that we have defined a Coherence matrix, we can plot each of its elements to have an idea of the overall coherence and thus, quality of the measurement.
The result is shown on figure [[fig:all_coherence]].
@ -755,8 +759,8 @@ This is illustrated on figure [[fig:aligned_accelerometers]].
\coordinate[] (p1) at (-1.5, 1.5);
\coordinate[] (p2) at ( 1.5, 1.5);
\draw[->] (p1)node[]{$\bullet$}node[above]{$p_1$} -- ++(1, 0)node[above]{$v_{x1}$};
\draw[->] (p2)node[]{$\bullet$}node[above]{$p_2$} -- ++(1, 0)node[above]{$v_{x2}$};
\draw[->] (p1)node[]{$\bullet$}node[above]{$p_1$} -- ++(1, 0)node[above]{$\delta p_{x1}$};
\draw[->] (p2)node[]{$\bullet$}node[above]{$p_2$} -- ++(1, 0)node[above]{$\delta p_{x2}$};
\draw[dashed] ($(p1)+(-1, 0)$) -- ($(p2)+(2, 0)$);
\end{tikzpicture}
@ -767,23 +771,23 @@ This is illustrated on figure [[fig:aligned_accelerometers]].
#+RESULTS:
[[file:figs/aligned_accelerometers.png]]
The motion of the rigid body of figure [[fig:aligned_accelerometers]] is defined by the velocity $\vec{v}$ and rotation $\vec{\Omega}$ with respect to the reference frame $\{O\}$.
The motion of the rigid body of figure [[fig:aligned_accelerometers]] is defined by its displacement $\delta p$ and rotation $\vec{\Omega}$ with respect to the reference frame $\{O\}$.
The motions at points $1$ and $2$ are:
\begin{align*}
v_1 &= v + \Omega \times p_1 \\
v_2 &= v + \Omega \times p_2
\delta p_1 &= \delta p + \Omega \times p_1 \\
\delta p_2 &= \delta p + \Omega \times p_2
\end{align*}
Taking only the $x$ direction:
\begin{align*}
v_{x1} &= v + \Omega_y p_{z1} - \Omega_z p_{y1} \\
v_{x2} &= v + \Omega_y p_{z2} - \Omega_z p_{y2}
\delta p_{x1} &= \delta p_x + \Omega_y p_{z1} - \Omega_z p_{y1} \\
\delta p_{x2} &= \delta p_x + \Omega_y p_{z2} - \Omega_z p_{y2}
\end{align*}
However, we have $p_{1y} = p_{2y}$ and $p_{1z} = p_{2z}$ because of the co-linearity of the two sensors in the $x$ direction, and thus we obtain
\begin{equation}
v_{x1} = v_{x2}
\delta p_{x1} = \delta p_{x2}
\end{equation}
#+begin_important
@ -825,7 +829,7 @@ Comparison of such measurements in the X direction is shown on figure [[fig:comp
end
if rem(i, 3) == 1
ylabel('Amplitude');
ylabel('Amplitude [$\frac{m/s^2}{N}$]');
end
xlim([1, 200]);
title(sprintf('Acc %i and %i - X', acc_i(i, 1), acc_i(i, 2)));
@ -871,7 +875,7 @@ Comparison of such measurements in the X direction is shown on figure [[fig:comp
end
if rem(i, 3) == 1
ylabel('Amplitude');
ylabel('Amplitude [$\frac{m/s^2}{N}$]');
end
xlim([1, 200]);
title(sprintf('Acc %i and %i - Y', acc_i(i, 1), acc_i(i, 2)));
@ -890,3 +894,65 @@ Comparison of such measurements in the X direction is shown on figure [[fig:comp
#+begin_important
From the two figures above, we are more confident about the rigid body assumption in the frequency band of interest.
#+end_important
* Verification of the principle of reciprocity
Because we expect our system to follow the principle of reciprocity.
That is to say the response $X_j$ at some degree of freedom $j$ due to a force $F_k$ applied on DOF $k$ should be the same as the response $X_k$ due to a force $F_j$:
\[ H_{jk} = \frac{X_j}{F_k} = \frac{X_k}{F_j} = H_{kj} \]
This comes from the fact that we expect to have symmetric mass, stiffness and damping matrices.
In order to access the quality of the data and the validity of the measured FRF, we then check that the reciprocity between $H_{jk}$ and $H_{kj}$ is of an acceptable level.
We can verify this reciprocity using 3 different pairs of response/force.
#+begin_src matlab :exports none
dir_names = {'X', 'Y', 'Z'};
figure;
for i = 1:3
subplot(3, 1, i)
a = mod(i, 3)+1;
b = mod(i-2, 3)+1;
hold on;
plot(freqs, abs(squeeze(FRFs(3*(11-1)+a, b, :))), 'DisplayName', sprintf('$\\frac{F_%s}{D_%s}$', dir_names{a}, dir_names{b}));
plot(freqs, abs(squeeze(FRFs(3*(11-1)+b, a, :))), 'DisplayName', sprintf('$\\frac{F_%s}{D_%s}$', dir_names{b}, dir_names{a}));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
if i == 3
xlabel('Frequency [Hz]');
else
set(gca, 'XTickLabel',[]);
end
if i == 2
ylabel('Amplitude [$\frac{m/s^2}{N}$]');
end
xlim([1, 200]);
legend('location', 'northwest');
end
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/principle_reciprocity.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:principle_reciprocity
#+CAPTION: Verification of the principle of reciprocity
[[file:figs/principle_reciprocity.png]]
From figure [[fig:principle_reciprocity]], it seems that the principle of reciprocity is valid from 50Hz to 100Hz.
Above that, the difference between the two could be due to:
- rotational DOFs? Local flexibility?
Below, it could be due to:
- not exciting and measuring the same DOF
#+begin_important
One should note here that the excitation is not applied on the same DOF as the measured response.
This could be seen on figures [[fig:hammer_x]], [[fig:hammer_y]] and [[fig:hammer_z]] that show the excitation points, and on figure [[fig:accelerometers_ty_overview]] where the accelerometer on the bottom left shows the one used for the principle of reciprocity validation above.
Thus, technically we cannot verify the principle of reciprocity here.
#+end_important
#+begin_warning
As it is usually very important to measure point response $\frac{X_j}{F_j}$, that is to say exciting and measuring the *same* DOF, should the measurements be redone?
On the modal software that is used to extract modal parameters, it is suppose that we are exciting the *exact* same DOF as the one measured by the accelerometer 11. As is it not the case in practice, could this induce large errors in the modal model?
#+end_warning