Analyze all struts measurements

This commit is contained in:
Thomas Dehaeze 2021-06-04 12:01:28 +02:00
parent 23035845f9
commit 757e429aac
13 changed files with 61 additions and 61 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

View File

@ -135,6 +135,10 @@ The received APA are shown in Figure [[fig:received_apa]].
<<matlab-init>>
#+end_src
#+begin_src matlab
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
addpath('./matlab/mat/');
addpath('./matlab/');
@ -275,6 +279,10 @@ Here are the documentation of the equipment used for this test bench:
<<matlab-init>>
#+end_src
#+begin_src matlab
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
addpath('./matlab/mat/');
addpath('./matlab/');
@ -543,6 +551,10 @@ In this section, we try to find the resonance frequency of these modes when one
<<matlab-init>>
#+end_src
#+begin_src matlab
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
addpath('matlab/');
addpath('matlab/mat/');
@ -842,6 +854,10 @@ This section is structured as follows:
<<matlab-init>>
#+end_src
#+begin_src matlab
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
addpath('./matlab/src/');
addpath('./matlab/');
@ -1116,7 +1132,7 @@ Once the measurement procedure is validated, it is performed on all the other AP
#+end_src
#+begin_src matlab
colors = get(gca,'colororder');
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
@ -1712,7 +1728,7 @@ The same measurements that was performed in Section [[sec:meas_one_apa]] are now
#+end_src
#+begin_src matlab
colors = get(gca,'colororder');
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
@ -2060,8 +2076,6 @@ end
#+end_src
#+begin_src matlab :exports none
colors = get(gca,'colororder');
figure;
hold on;
plot(f, coh_noise_hf(:, 1), 'color', [colors(1, :), 0.5], 'DisplayName', 'HF Noise');
@ -2189,7 +2203,7 @@ Measurements are first performed on the strut 1 that contains:
#+end_src
#+begin_src matlab
colors = get(gca,'colororder');
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
@ -2330,8 +2344,6 @@ It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the ex
#+end_src
#+begin_src matlab :exports none
colors = get(gca,'colororder');
figure;
hold on;
plot(f, coh_noise_hf, 'DisplayName', 'HF Noise');
@ -2413,8 +2425,6 @@ We compute the coherence for 2nd and 3rd identification:
#+end_src
#+begin_src matlab :exports none
colors = get(gca,'colororder');
figure;
hold on;
plot(f, coh_enc_noise_hf(:, 1), 'color', colors(1, :), ...
@ -2625,8 +2635,6 @@ It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the ex
#+end_src
#+begin_src matlab :exports none
colors = get(gca,'colororder');
figure;
hold on;
plot(f, coh_enc_noise_hf, 'color', colors(1, :), 'DisplayName', 'HF Noise');
@ -2742,7 +2750,9 @@ We can see that the IFF does not change whether of not the encoder are fixed to
#+end_important
** Comparison of all the Struts
<<sec:meas_all_struts>>
*** Introduction :ignore:
Now all struts are measured using the same procedure and test bench.
*** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
@ -2754,7 +2764,7 @@ We can see that the IFF does not change whether of not the encoder are fixed to
#+end_src
#+begin_src matlab
colors = get(gca,'colororder');
colors = colororder;
#+end_src
#+begin_src matlab :tangle no
@ -2769,22 +2779,20 @@ addpath('./src/');
#+end_src
*** FRF Identification - Setup
The identification is performed in three steps:
The identification is performed in two steps:
1. White noise excitation with small amplitude.
This is used to determine the main resonance of the system.
2. Noise sine excitation with the amplitude lowered around the resonance.
The noise sine is from 10Hz to 400Hz.
3. High frequency noise.
This is used to estimate the low frequency dynamics.
2. High frequency noise.
The noise is band-passed between 300Hz and 2kHz.
Then, the result of the second identification is used between 10Hz and 350Hz and the result of the third identification if used between 350Hz and 2kHz.
Then, the result of the first identification is used between 10Hz and 350Hz and the result of the second identification if used between 350Hz and 2kHz.
Here are the LEG numbers that have been measured.
#+begin_src matlab
leg_nums = [1 2 3 4 5];
#+end_src
The data are loaded for both the second and third identification:
The data are loaded for both the first and second identification:
#+begin_src matlab
%% Second identification
leg_noise = {};
@ -2839,12 +2847,10 @@ for i = 1:length(leg_nums)
end
#+end_src
The coherence is shown in Figure [[fig:frf_dvf_plant_coh]].
The coherence is shown in Figure [[fig:struts_frf_dvf_plant_coh]].
It is clear that the Noise sine gives good coherence up to 400Hz and that the high frequency noise excitation signal helps increasing a little bit the coherence at high frequency.
#+begin_src matlab :exports none
colors = get(gca,'colororder');
figure;
hold on;
plot(f, coh_noise_hf(:, 1), 'color', [colors(1, :), 0.5], ...
@ -2865,13 +2871,13 @@ legend('location', 'southeast');
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
exportFig('figs/struts_frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:frf_dvf_plant_coh
#+name: fig:struts_frf_dvf_plant_coh
#+caption: Obtained coherence for the plant from $V_a$ to $d_e$
#+RESULTS:
[[file:figs/frf_dvf_plant_coh.png]]
[[file:figs/struts_frf_dvf_plant_coh.png]]
Then, the transfer function from the DAC output voltage $V_a$ to the measured displacement by the encoders is computed:
@ -2890,15 +2896,14 @@ for i = 1:length(leg_nums)
end
#+end_src
The obtained transfer functions are shown in Figure [[fig:frf_dvf_plant_tf]].
The obtained transfer functions are shown in Figure [[fig:struts_frf_dvf_plant_tf]].
They are all superimposed except for the LEG7.
#+begin_src matlab :exports none
figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile;
ax1 = nexttile([2,1]);
hold on;
for i = 1:length(leg_nums)
plot(f(f> 350), abs(dvf_noise_hf(f> 350, i)), 'color', colors(i, :), ...
@ -2923,27 +2928,27 @@ hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
yticks(-360:90:360);
yticks(-360:90:360); ylim([-180, 180]);
linkaxes([ax1,ax2],'x');
xlim([10, 2e3]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
exportFig('figs/struts_frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:frf_dvf_plant_tf
#+name: fig:struts_frf_dvf_plant_tf
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$)
#+RESULTS:
[[file:figs/frf_dvf_plant_tf.png]]
[[file:figs/struts_frf_dvf_plant_tf.png]]
*** FRF Identification - DVF with interferometer
In this section, the dynamics from $V_a$ to $d_a$ is identified.
We compute the coherence for 2nd and 3rd identification:
We compute the coherence.
#+begin_src matlab
%% Coherence computation
coh_noise = zeros(length(f), length(leg_nums));
@ -2959,12 +2964,9 @@ for i = 1:length(leg_nums)
end
#+end_src
The coherence is shown in Figure [[fig:frf_dvf_plant_coh]].
The coherence is shown in Figure [[fig:struts_frf_int_plant_coh]].
It is clear that the Noise sine gives good coherence up to 400Hz and that the high frequency noise excitation signal helps increasing a little bit the coherence at high frequency.
#+begin_src matlab :exports none
colors = get(gca,'colororder');
figure;
hold on;
plot(f, coh_noise_hf(:, 1), 'color', [colors(1, :), 0.5], ...
@ -2985,13 +2987,13 @@ legend('location', 'southeast');
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/frf_dvf_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
exportFig('figs/struts_frf_int_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:frf_dvf_plant_coh
#+name: fig:struts_frf_int_plant_coh
#+caption: Obtained coherence for the plant from $V_a$ to $d_e$
#+RESULTS:
[[file:figs/frf_dvf_plant_coh.png]]
[[file:figs/struts_frf_int_plant_coh.png]]
Then, the transfer function from the DAC output voltage $V_a$ to the measured displacement by the Attocube is computed:
#+begin_src matlab
@ -3009,15 +3011,15 @@ for i = 1:length(leg_nums)
end
#+end_src
The obtained transfer functions are shown in Figure [[fig:frf_dvf_a_plant_tf]].
The obtained transfer functions are shown in Figure [[fig:struts_frf_int_plant_tf]].
They are all superimposed except for the LEG7.
#+begin_src matlab :exports none
figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile;
ax1 = nexttile([2,1]);
hold on;
for i = 1:length(leg_nums)
plot(f(f> 350), abs(dvf_a_noise_hf(f> 350, i)), 'color', colors(i, :), ...
@ -3042,25 +3044,25 @@ hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
yticks(-360:90:360);
yticks(-360:90:360); ylim([-180 180]);
linkaxes([ax1,ax2],'x');
xlim([10, 2e3]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/frf_dvf_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
exportFig('figs/struts_frf_int_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:frf_dvf_plant_tf
#+name: fig:struts_frf_int_plant_tf
#+caption: Estimated FRF for the DVF plant (transfer function from $V_a$ to the encoder $d_e$)
#+RESULTS:
[[file:figs/frf_dvf_plant_tf.png]]
[[file:figs/struts_frf_int_plant_tf.png]]
*** FRF Identification - IFF
In this section, the dynamics from $V_a$ to $V_s$ is identified.
First the coherence is computed and shown in Figure [[fig:frf_iff_plant_coh]].
First the coherence is computed and shown in Figure [[fig:struts_frf_iff_plant_coh]].
The coherence is very nice from 10Hz to 2kHz.
It is only dropping near a zeros at 40Hz, and near the resonance at 95Hz (the excitation amplitude being lowered).
@ -3080,8 +3082,6 @@ end
#+end_src
#+begin_src matlab :exports none
colors = get(gca,'colororder');
figure;
hold on;
plot(f, coh_noise_hf(:, 1), 'color', [colors(1, :), 0.5], 'DisplayName', 'HF Noise');
@ -3100,15 +3100,15 @@ legend('location', 'southeast');
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
exportFig('figs/struts_frf_iff_plant_coh.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:frf_iff_plant_coh
#+name: fig:struts_frf_iff_plant_coh
#+caption: Obtained coherence for the IFF plant
#+RESULTS:
[[file:figs/frf_iff_plant_coh.png]]
[[file:figs/struts_frf_iff_plant_coh.png]]
Then the FRF are estimated and shown in Figure [[fig:frf_iff_plant_tf]]
Then the FRF are estimated and shown in Figure [[fig:struts_frf_iff_plant_tf]]
#+begin_src matlab
%% FRF estimation of the transfer function from Va to Vs
iff_noise = zeros(length(f), length(leg_nums));
@ -3126,9 +3126,9 @@ end
#+begin_src matlab :exports none
figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile;
ax1 = nexttile([2,1]);
hold on;
for i = 1:length(leg_nums)
plot(f(f> 350), abs(iff_noise_hf(f> 350, i)), 'color', colors(i, :), ...
@ -3153,20 +3153,20 @@ hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
yticks(-360:90:360);
yticks(-360:90:360); ylim([-180 180]);
linkaxes([ax1,ax2],'x');
xlim([10, 2e3]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
exportFig('figs/struts_frf_iff_plant_tf.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:frf_iff_plant_tf
#+name: fig:struts_frf_iff_plant_tf
#+caption:Identified IFF Plant
#+RESULTS:
[[file:figs/frf_iff_plant_tf.png]]
[[file:figs/struts_frf_iff_plant_tf.png]]
* TODO Compare with the FEM/Simscape Model :noexport:
:PROPERTIES: