Check the principle of reciprocity
This commit is contained in:
parent
563e827d01
commit
9ff0883a21
BIN
modal-analysis/figs/principle_reciprocity.png
Normal file
BIN
modal-analysis/figs/principle_reciprocity.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 136 KiB |
Binary file not shown.
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user