Export to pdf
This commit is contained in:
parent
d88db11821
commit
086b1fc1d4
@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2022-02-15 mar. 14:18 -->
|
<!-- 2022-02-20 dim. 23:36 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>ESRF Double Crystal Monochromator - Feedback Controller</title>
|
<title>ESRF Double Crystal Monochromator - Feedback Controller</title>
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
@ -22,40 +22,40 @@
|
|||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents" role="doc-toc">
|
<div id="text-table-of-contents" role="doc-toc">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orga1bae1c">1. Estimation of Sensitivity Function</a>
|
<li><a href="#org8576b4a">1. Estimation of Sensitivity Function</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org735dcc9">1.1. Load Data</a></li>
|
<li><a href="#orgdf402a0">1.1. Load Data</a></li>
|
||||||
<li><a href="#org3fc079f">1.2. Controller</a></li>
|
<li><a href="#org8107511">1.2. Controller</a></li>
|
||||||
<li><a href="#org5af2b76">1.3. Test</a></li>
|
<li><a href="#org0a01799">1.3. Test</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgbb0d924">2. System Identification</a>
|
<li><a href="#org9a5bd10">2. System Identification</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org6c48b35">2.1. Identification</a></li>
|
<li><a href="#orgaafe900">2.1. Identification</a></li>
|
||||||
<li><a href="#org0b292a4">2.2. Identification - New</a></li>
|
<li><a href="#orga4b6967">2.2. Identification - New</a></li>
|
||||||
<li><a href="#org2e5fa20">2.3. Identification - White noise</a></li>
|
<li><a href="#org3ea3501">2.3. Identification - White noise</a></li>
|
||||||
<li><a href="#org71bfb62">2.4. Test</a></li>
|
<li><a href="#org2f67dfc">2.4. Test</a></li>
|
||||||
<li><a href="#orge135bfd">2.5. New controller - Higher bandwidth</a></li>
|
<li><a href="#org675289a">2.5. New controller - Higher bandwidth</a></li>
|
||||||
<li><a href="#orgced05bb">2.6. Added gain</a></li>
|
<li><a href="#org2f12e07">2.6. Added gain</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org42b6fad">3. Noise Budgeting</a>
|
<li><a href="#orge30c950">3. Noise Budgeting</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgfab07e0">3.1. No Displacement</a></li>
|
<li><a href="#org8aeec43">3.1. No Displacement</a></li>
|
||||||
<li><a href="#org2959e07">3.2. Scans</a></li>
|
<li><a href="#org2e15aa7">3.2. Scans</a></li>
|
||||||
<li><a href="#orge57ff9f">3.3. Noise budgeting - No rotation</a></li>
|
<li><a href="#org26d025b">3.3. Noise budgeting - No rotation</a></li>
|
||||||
<li><a href="#org5c8bbce">3.4. Noise budgeting - Bragg rotation</a></li>
|
<li><a href="#org8945ee2">3.4. Noise budgeting - Bragg rotation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org84729e1">4. Test Mode C</a>
|
<li><a href="#orgc0ab5d1">4. Test Mode C</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org8cc30f1">4.1. Mode B and Mode C</a></li>
|
<li><a href="#org9996dc6">4.1. Mode B and Mode C</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org0d833d1">5. Export numerator and denominator</a>
|
<li><a href="#org1c0791b">5. Export numerator and denominator</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org4532b44">5.1. Export</a></li>
|
<li><a href="#org22487de">5.1. Export</a></li>
|
||||||
<li><a href="#org78d8a99">5.2. Verify</a></li>
|
<li><a href="#org2b8461a">5.2. Verify</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -65,12 +65,12 @@
|
|||||||
<p>This report is also available as a <a href="./dcm-feedback-control.pdf">pdf</a>.</p>
|
<p>This report is also available as a <a href="./dcm-feedback-control.pdf">pdf</a>.</p>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div id="outline-container-orga1bae1c" class="outline-2">
|
<div id="outline-container-org8576b4a" class="outline-2">
|
||||||
<h2 id="orga1bae1c"><span class="section-number-2">1.</span> Estimation of Sensitivity Function</h2>
|
<h2 id="org8576b4a"><span class="section-number-2">1.</span> Estimation of Sensitivity Function</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org735dcc9" class="outline-3">
|
<div id="outline-container-orgdf402a0" class="outline-3">
|
||||||
<h3 id="org735dcc9"><span class="section-number-3">1.1.</span> Load Data</h3>
|
<h3 id="orgdf402a0"><span class="section-number-3">1.1.</span> Load Data</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
Two scans are performed:
|
Two scans are performed:
|
||||||
@ -99,7 +99,7 @@ t = linspace(Ts, Ts<span class="org-builtin">*</span>length(ol_drx), length(ol_d
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
By comparison the frequency content of the crystal orientation errors between mode B and mode C, it is possible to estimate the Sensitivity transfer function (Figure <a href="#org5bf52a1">1</a>).
|
By comparison the frequency content of the crystal orientation errors between mode B and mode C, it is possible to estimate the Sensitivity transfer function (Figure <a href="#orgb0c8317">1</a>).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">win = hanning(ceil(1<span class="org-builtin">/</span>Ts));
|
<pre class="src src-matlab">win = hanning(ceil(1<span class="org-builtin">/</span>Ts));
|
||||||
@ -113,7 +113,7 @@ By comparison the frequency content of the crystal orientation errors between mo
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org5bf52a1" class="figure">
|
<div id="orgb0c8317" class="figure">
|
||||||
<p><img src="figs/sensitivity_function_drx_est.png" alt="sensitivity_function_drx_est.png" />
|
<p><img src="figs/sensitivity_function_drx_est.png" alt="sensitivity_function_drx_est.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Estimation of the sensitivity transfer function magnitude</p>
|
<p><span class="figure-number">Figure 1: </span>Estimation of the sensitivity transfer function magnitude</p>
|
||||||
@ -122,8 +122,8 @@ By comparison the frequency content of the crystal orientation errors between mo
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org3fc079f" class="outline-3">
|
<div id="outline-container-org8107511" class="outline-3">
|
||||||
<h3 id="org3fc079f"><span class="section-number-3">1.2.</span> Controller</h3>
|
<h3 id="org8107511"><span class="section-number-3">1.2.</span> Controller</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'X_tal_cage_PID.mat'</span>, <span class="org-string">'K'</span>);
|
<pre class="src src-matlab">load(<span class="org-string">'X_tal_cage_PID.mat'</span>, <span class="org-string">'K'</span>);
|
||||||
@ -131,7 +131,7 @@ By comparison the frequency content of the crystal orientation errors between mo
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org2e1f293" class="figure">
|
<div id="orgabcb99b" class="figure">
|
||||||
<p><img src="figs/bode_plot_cur_controller.png" alt="bode_plot_cur_controller.png" />
|
<p><img src="figs/bode_plot_cur_controller.png" alt="bode_plot_cur_controller.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Bode Plot of the Controller</p>
|
<p><span class="figure-number">Figure 2: </span>Bode Plot of the Controller</p>
|
||||||
@ -139,8 +139,8 @@ By comparison the frequency content of the crystal orientation errors between mo
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5af2b76" class="outline-3">
|
<div id="outline-container-org0a01799" class="outline-3">
|
||||||
<h3 id="org5af2b76"><span class="section-number-3">1.3.</span> Test</h3>
|
<h3 id="org0a01799"><span class="section-number-3">1.3.</span> Test</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Ts = 5e<span class="org-builtin">-</span>3;
|
<pre class="src src-matlab">Ts = 5e<span class="org-builtin">-</span>3;
|
||||||
@ -170,12 +170,12 @@ t = linspace(Ts, Ts<span class="org-builtin">*</span>length(ol_drx), length(ol_d
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbb0d924" class="outline-2">
|
<div id="outline-container-org9a5bd10" class="outline-2">
|
||||||
<h2 id="orgbb0d924"><span class="section-number-2">2.</span> System Identification</h2>
|
<h2 id="org9a5bd10"><span class="section-number-2">2.</span> System Identification</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org6c48b35" class="outline-3">
|
<div id="outline-container-orgaafe900" class="outline-3">
|
||||||
<h3 id="org6c48b35"><span class="section-number-3">2.1.</span> Identification</h3>
|
<h3 id="orgaafe900"><span class="section-number-3">2.1.</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">ur = load(<span class="org-string">'FJPUR_step.mat'</span>);
|
<pre class="src src-matlab">ur = load(<span class="org-string">'FJPUR_step.mat'</span>);
|
||||||
@ -321,7 +321,7 @@ win = hanning(ceil(5<span class="org-builtin">*</span>Fs));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgb5ed826" class="figure">
|
<div id="org9466993" class="figure">
|
||||||
<p><img src="figs/coherence_id_dcm_dyn.png" alt="coherence_id_dcm_dyn.png" />
|
<p><img src="figs/coherence_id_dcm_dyn.png" alt="coherence_id_dcm_dyn.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Coherence</p>
|
<p><span class="figure-number">Figure 3: </span>Coherence</p>
|
||||||
@ -329,7 +329,7 @@ win = hanning(ceil(5<span class="org-builtin">*</span>Fs));
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="orgeff963e" class="figure">
|
<div id="org6e09695" class="figure">
|
||||||
<p><img src="figs/bode_plot_dcm_dynamics.png" alt="bode_plot_dcm_dynamics.png" />
|
<p><img src="figs/bode_plot_dcm_dynamics.png" alt="bode_plot_dcm_dynamics.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Bode Plot of the DCM dynamics in the frame of the fast jack.</p>
|
<p><span class="figure-number">Figure 4: </span>Bode Plot of the DCM dynamics in the frame of the fast jack.</p>
|
||||||
@ -359,7 +359,7 @@ Kb = eye(3)<span class="org-builtin">*</span>(2<span class="org-builtin">*</span
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgb03f205" class="figure">
|
<div id="org4f0fbea" class="figure">
|
||||||
<p><img src="figs/loop_gain_dcm_contr_simple.png" alt="loop_gain_dcm_contr_simple.png" />
|
<p><img src="figs/loop_gain_dcm_contr_simple.png" alt="loop_gain_dcm_contr_simple.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Loop gain</p>
|
<p><span class="figure-number">Figure 5: </span>Loop gain</p>
|
||||||
@ -367,7 +367,7 @@ Kb = eye(3)<span class="org-builtin">*</span>(2<span class="org-builtin">*</span
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="orgc507071" class="figure">
|
<div id="orgf361fc7" class="figure">
|
||||||
<p><img src="figs/loop_gain_diag_old_new_contr.png" alt="loop_gain_diag_old_new_contr.png" />
|
<p><img src="figs/loop_gain_diag_old_new_contr.png" alt="loop_gain_diag_old_new_contr.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Loop gain</p>
|
<p><span class="figure-number">Figure 6: </span>Loop gain</p>
|
||||||
@ -377,7 +377,7 @@ Kb = eye(3)<span class="org-builtin">*</span>(2<span class="org-builtin">*</span
|
|||||||
Compare Sensitivity functions
|
Compare Sensitivity functions
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="orgd925333" class="figure">
|
<div id="orgb76f72d" class="figure">
|
||||||
<p><img src="figs/sensitivity_comp.png" alt="sensitivity_comp.png" />
|
<p><img src="figs/sensitivity_comp.png" alt="sensitivity_comp.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 7: </span>Comparison of sensitivity functions</p>
|
<p><span class="figure-number">Figure 7: </span>Comparison of sensitivity functions</p>
|
||||||
@ -396,7 +396,7 @@ Lb = zeros(3, 3, length(f));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org18dbc34" class="figure">
|
<div id="orgb0888a7" class="figure">
|
||||||
<p><img src="figs/loci_loop_gain_comp_controllers.png" alt="loci_loop_gain_comp_controllers.png" />
|
<p><img src="figs/loci_loop_gain_comp_controllers.png" alt="loci_loop_gain_comp_controllers.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 8: </span>Root Locus</p>
|
<p><span class="figure-number">Figure 8: </span>Root Locus</p>
|
||||||
@ -405,8 +405,8 @@ Lb = zeros(3, 3, length(f));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org0b292a4" class="outline-3">
|
<div id="outline-container-orga4b6967" class="outline-3">
|
||||||
<h3 id="org0b292a4"><span class="section-number-3">2.2.</span> Identification - New</h3>
|
<h3 id="orga4b6967"><span class="section-number-3">2.2.</span> Identification - New</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">ur = load(<span class="org-string">'FJPUR_step_new.mat'</span>);
|
<pre class="src src-matlab">ur = load(<span class="org-string">'FJPUR_step_new.mat'</span>);
|
||||||
@ -577,7 +577,7 @@ Kb = eye(3)<span class="org-builtin">*</span>(2<span class="org-builtin">*</span
|
|||||||
Compare Sensitivity functions
|
Compare Sensitivity functions
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="orga50e1b0" class="figure">
|
<div id="org61be61a" class="figure">
|
||||||
<p><img src="figs/sensitivity_comp.png" alt="sensitivity_comp.png" />
|
<p><img src="figs/sensitivity_comp.png" alt="sensitivity_comp.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>Comparison of sensitivity functions</p>
|
<p><span class="figure-number">Figure 9: </span>Comparison of sensitivity functions</p>
|
||||||
@ -596,7 +596,7 @@ Lb = zeros(3, 3, length(f));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org8eb0924" class="figure">
|
<div id="org400e20f" class="figure">
|
||||||
<p><img src="figs/loci_loop_gain_comp_controllers.png" alt="loci_loop_gain_comp_controllers.png" />
|
<p><img src="figs/loci_loop_gain_comp_controllers.png" alt="loci_loop_gain_comp_controllers.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 10: </span>Root Locus</p>
|
<p><span class="figure-number">Figure 10: </span>Root Locus</p>
|
||||||
@ -605,8 +605,8 @@ Lb = zeros(3, 3, length(f));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org2e5fa20" class="outline-3">
|
<div id="outline-container-org3ea3501" class="outline-3">
|
||||||
<h3 id="org2e5fa20"><span class="section-number-3">2.3.</span> Identification - White noise</h3>
|
<h3 id="org3ea3501"><span class="section-number-3">2.3.</span> Identification - White noise</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">ur = load(<span class="org-string">'fjpur_white_noise.mat'</span>);
|
<pre class="src src-matlab">ur = load(<span class="org-string">'fjpur_white_noise.mat'</span>);
|
||||||
@ -725,14 +725,14 @@ win = hanning(ceil(0.5<span class="org-builtin">*</span>Fs));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgd142314" class="figure">
|
<div id="org2130cf9" class="figure">
|
||||||
<p><img src="figs/coherence_ident_noise.png" alt="coherence_ident_noise.png" />
|
<p><img src="figs/coherence_ident_noise.png" alt="coherence_ident_noise.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 11: </span>description</p>
|
<p><span class="figure-number">Figure 11: </span>description</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgc5ce01c" class="figure">
|
<div id="org6275987" class="figure">
|
||||||
<p><img src="figs/bode_plot_ident_noise.png" alt="bode_plot_ident_noise.png" />
|
<p><img src="figs/bode_plot_ident_noise.png" alt="bode_plot_ident_noise.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 12: </span>Bode Plot of the DCM dynamics in the frame of the fast jack.</p>
|
<p><span class="figure-number">Figure 12: </span>Bode Plot of the DCM dynamics in the frame of the fast jack.</p>
|
||||||
@ -762,14 +762,14 @@ Kb = eye(3)<span class="org-builtin">*</span>(2<span class="org-builtin">*</span
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org5a9c5a7" class="figure">
|
<div id="orgde5672c" class="figure">
|
||||||
<p><img src="figs/loop_gain_dcm_contr_simple.png" alt="loop_gain_dcm_contr_simple.png" />
|
<p><img src="figs/loop_gain_dcm_contr_simple.png" alt="loop_gain_dcm_contr_simple.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 13: </span>Loop gain</p>
|
<p><span class="figure-number">Figure 13: </span>Loop gain</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org24e16fe" class="figure">
|
<div id="org816756f" class="figure">
|
||||||
<p><img src="figs/loop_gain_diag_old_new_contr.png" alt="loop_gain_diag_old_new_contr.png" />
|
<p><img src="figs/loop_gain_diag_old_new_contr.png" alt="loop_gain_diag_old_new_contr.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 14: </span>Loop gain</p>
|
<p><span class="figure-number">Figure 14: </span>Loop gain</p>
|
||||||
@ -779,7 +779,7 @@ Kb = eye(3)<span class="org-builtin">*</span>(2<span class="org-builtin">*</span
|
|||||||
Compare Sensitivity functions
|
Compare Sensitivity functions
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="orgffa2ebc" class="figure">
|
<div id="org9c6d15d" class="figure">
|
||||||
<p><img src="figs/sensitivity_comp.png" alt="sensitivity_comp.png" />
|
<p><img src="figs/sensitivity_comp.png" alt="sensitivity_comp.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 15: </span>Comparison of sensitivity functions</p>
|
<p><span class="figure-number">Figure 15: </span>Comparison of sensitivity functions</p>
|
||||||
@ -798,7 +798,7 @@ Lb = zeros(3, 3, length(f));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org7a84791" class="figure">
|
<div id="orgcf68c9d" class="figure">
|
||||||
<p><img src="figs/loci_loop_gain_comp_controllers.png" alt="loci_loop_gain_comp_controllers.png" />
|
<p><img src="figs/loci_loop_gain_comp_controllers.png" alt="loci_loop_gain_comp_controllers.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 16: </span>Root Locus</p>
|
<p><span class="figure-number">Figure 16: </span>Root Locus</p>
|
||||||
@ -807,8 +807,8 @@ Lb = zeros(3, 3, length(f));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org71bfb62" class="outline-3">
|
<div id="outline-container-org2f67dfc" class="outline-3">
|
||||||
<h3 id="org71bfb62"><span class="section-number-3">2.4.</span> Test</h3>
|
<h3 id="org2f67dfc"><span class="section-number-3">2.4.</span> Test</h3>
|
||||||
<div class="outline-text-3" id="text-2-4">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Notch</span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Notch</span>
|
||||||
@ -851,8 +851,8 @@ Kb = 0.8<span class="org-builtin">*</span>eye(3)<span class="org-builtin">*</sp
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orge135bfd" class="outline-3">
|
<div id="outline-container-org675289a" class="outline-3">
|
||||||
<h3 id="orge135bfd"><span class="section-number-3">2.5.</span> New controller - Higher bandwidth</h3>
|
<h3 id="org675289a"><span class="section-number-3">2.5.</span> New controller - Higher bandwidth</h3>
|
||||||
<div class="outline-text-3" id="text-2-5">
|
<div class="outline-text-3" id="text-2-5">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Previously used controller</span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Previously used controller</span>
|
||||||
@ -916,7 +916,7 @@ Kb = 0.9<span class="org-builtin">*</span>eye(3)<span class="org-builtin">*</sp
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org0c92a80" class="figure">
|
<div id="org729d6bc" class="figure">
|
||||||
<p><img src="figs/loop_gain_compare.png" alt="loop_gain_compare.png" />
|
<p><img src="figs/loop_gain_compare.png" alt="loop_gain_compare.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 17: </span>description</p>
|
<p><span class="figure-number">Figure 17: </span>description</p>
|
||||||
@ -937,14 +937,14 @@ Lb_new = zeros(3, 3, length(f));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgeff107d" class="figure">
|
<div id="org9b73c58" class="figure">
|
||||||
<p><img src="figs/nyquist_compare.png" alt="nyquist_compare.png" />
|
<p><img src="figs/nyquist_compare.png" alt="nyquist_compare.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 18: </span>n</p>
|
<p><span class="figure-number">Figure 18: </span>n</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orga2251e0" class="figure">
|
<div id="orgd808ef9" class="figure">
|
||||||
<p><img src="figs/sensitivity_function_compare.png" alt="sensitivity_function_compare.png" />
|
<p><img src="figs/sensitivity_function_compare.png" alt="sensitivity_function_compare.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 19: </span>description</p>
|
<p><span class="figure-number">Figure 19: </span>description</p>
|
||||||
@ -954,8 +954,8 @@ Lb_new = zeros(3, 3, length(f));
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-orgced05bb" class="outline-3">
|
<div id="outline-container-org2f12e07" class="outline-3">
|
||||||
<h3 id="orgced05bb"><span class="section-number-3">2.6.</span> Added gain</h3>
|
<h3 id="org2f12e07"><span class="section-number-3">2.6.</span> Added gain</h3>
|
||||||
<div class="outline-text-3" id="text-2-6">
|
<div class="outline-text-3" id="text-2-6">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Notch</span>
|
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Notch</span>
|
||||||
@ -1017,21 +1017,21 @@ Kb_gain = 0.9<span class="org-builtin">*</span>eye(3)<span class="org-builtin">
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org00ceb71" class="figure">
|
<div id="org97a53c6" class="figure">
|
||||||
<p><img src="figs/loop_gain_compare_added_gain.png" alt="loop_gain_compare_added_gain.png" />
|
<p><img src="figs/loop_gain_compare_added_gain.png" alt="loop_gain_compare_added_gain.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 20: </span>description</p>
|
<p><span class="figure-number">Figure 20: </span>description</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org83020b4" class="figure">
|
<div id="org63d3ae0" class="figure">
|
||||||
<p><img src="figs/sensitivity_new_gain_compare.png" alt="sensitivity_new_gain_compare.png" />
|
<p><img src="figs/sensitivity_new_gain_compare.png" alt="sensitivity_new_gain_compare.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 21: </span>description</p>
|
<p><span class="figure-number">Figure 21: </span>description</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org003317c" class="figure">
|
<div id="orgded1447" class="figure">
|
||||||
<p><img src="figs/nyquist_after_gain_frequency.png" alt="nyquist_after_gain_frequency.png" />
|
<p><img src="figs/nyquist_after_gain_frequency.png" alt="nyquist_after_gain_frequency.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 22: </span>nyquist plot</p>
|
<p><span class="figure-number">Figure 22: </span>nyquist plot</p>
|
||||||
@ -1041,12 +1041,12 @@ Kb_gain = 0.9<span class="org-builtin">*</span>eye(3)<span class="org-builtin">
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org42b6fad" class="outline-2">
|
<div id="outline-container-orge30c950" class="outline-2">
|
||||||
<h2 id="org42b6fad"><span class="section-number-2">3.</span> Noise Budgeting</h2>
|
<h2 id="orge30c950"><span class="section-number-2">3.</span> Noise Budgeting</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgfab07e0" class="outline-3">
|
<div id="outline-container-org8aeec43" class="outline-3">
|
||||||
<h3 id="orgfab07e0"><span class="section-number-3">3.1.</span> No Displacement</h3>
|
<h3 id="org8aeec43"><span class="section-number-3">3.1.</span> No Displacement</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||||
|
|
||||||
@ -1275,8 +1275,8 @@ data_70_deg.drx = data_70_deg.allValues(<span class="org-builtin">:</span>,6) <s
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org2959e07" class="outline-3">
|
<div id="outline-container-org2e15aa7" class="outline-3">
|
||||||
<h3 id="org2959e07"><span class="section-number-3">3.2.</span> Scans</h3>
|
<h3 id="org2e15aa7"><span class="section-number-3">3.2.</span> Scans</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||||
|
|
||||||
@ -1437,8 +1437,8 @@ CPS_70_10_d = flip(<span class="org-builtin">-</span>cumtrapz(flip(f), flip(pxx
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge57ff9f" class="outline-3">
|
<div id="outline-container-org26d025b" class="outline-3">
|
||||||
<h3 id="orge57ff9f"><span class="section-number-3">3.3.</span> Noise budgeting - No rotation</h3>
|
<h3 id="org26d025b"><span class="section-number-3">3.3.</span> Noise budgeting - No rotation</h3>
|
||||||
<div class="outline-text-3" id="text-3-3">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
<p>
|
<p>
|
||||||
First, we look at the position errors when the bragg axis is not moving
|
First, we look at the position errors when the bragg axis is not moving
|
||||||
@ -1488,7 +1488,7 @@ win = hanning(ceil(1<span class="org-builtin">/</span>Ts));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org2f9ead0" class="figure">
|
<div id="org7fb6c81" class="figure">
|
||||||
<p><img src="figs/noise_budget_no_mov_asd.png" alt="noise_budget_no_mov_asd.png" />
|
<p><img src="figs/noise_budget_no_mov_asd.png" alt="noise_budget_no_mov_asd.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 23: </span>Amplitude Spectral Density</p>
|
<p><span class="figure-number">Figure 23: </span>Amplitude Spectral Density</p>
|
||||||
@ -1511,7 +1511,7 @@ CPS_dz = cumtrapz(f, pxx_ol_dz);
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgda9f408" class="figure">
|
<div id="org2f67e0e" class="figure">
|
||||||
<p><img src="figs/noise_budget_no_mov_cas.png" alt="noise_budget_no_mov_cas.png" />
|
<p><img src="figs/noise_budget_no_mov_cas.png" alt="noise_budget_no_mov_cas.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 24: </span>Cumulative Amplitude Spectrum</p>
|
<p><span class="figure-number">Figure 24: </span>Cumulative Amplitude Spectrum</p>
|
||||||
@ -1520,17 +1520,17 @@ CPS_dz = cumtrapz(f, pxx_ol_dz);
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org5c8bbce" class="outline-3">
|
<div id="outline-container-org8945ee2" class="outline-3">
|
||||||
<h3 id="org5c8bbce"><span class="section-number-3">3.4.</span> Noise budgeting - Bragg rotation</h3>
|
<h3 id="org8945ee2"><span class="section-number-3">3.4.</span> Noise budgeting - Bragg rotation</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org84729e1" class="outline-2">
|
<div id="outline-container-orgc0ab5d1" class="outline-2">
|
||||||
<h2 id="org84729e1"><span class="section-number-2">4.</span> Test Mode C</h2>
|
<h2 id="orgc0ab5d1"><span class="section-number-2">4.</span> Test Mode C</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org8cc30f1" class="outline-3">
|
<div id="outline-container-org9996dc6" class="outline-3">
|
||||||
<h3 id="org8cc30f1"><span class="section-number-3">4.1.</span> Mode B and Mode C</h3>
|
<h3 id="org9996dc6"><span class="section-number-3">4.1.</span> Mode B and Mode C</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">data_B = extractDatData(sprintf(<span class="org-string">"/home/thomas/mnt/data_id21/22Jan/blc13491/id21/test_regul_220119/%s"</span>,<span class="org-string">"lut_const_fj_vel_19012022_1450.dat"</span>), <span class="org-comment-delimiter">.</span><span class="org-comment">..</span>
|
<pre class="src src-matlab">data_B = extractDatData(sprintf(<span class="org-string">"/home/thomas/mnt/data_id21/22Jan/blc13491/id21/test_regul_220119/%s"</span>,<span class="org-string">"lut_const_fj_vel_19012022_1450.dat"</span>), <span class="org-comment-delimiter">.</span><span class="org-comment">..</span>
|
||||||
@ -1620,12 +1620,12 @@ win = hanning(ceil(1<span class="org-builtin">/</span>Ts));
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0d833d1" class="outline-2">
|
<div id="outline-container-org1c0791b" class="outline-2">
|
||||||
<h2 id="org0d833d1"><span class="section-number-2">5.</span> Export numerator and denominator</h2>
|
<h2 id="org1c0791b"><span class="section-number-2">5.</span> Export numerator and denominator</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org4532b44" class="outline-3">
|
<div id="outline-container-org22487de" class="outline-3">
|
||||||
<h3 id="org4532b44"><span class="section-number-3">5.1.</span> Export</h3>
|
<h3 id="org22487de"><span class="section-number-3">5.1.</span> Export</h3>
|
||||||
<div class="outline-text-3" id="text-5-1">
|
<div class="outline-text-3" id="text-5-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">K_order = 10;
|
<pre class="src src-matlab">K_order = 10;
|
||||||
@ -1673,8 +1673,8 @@ fclose(fileID);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org78d8a99" class="outline-3">
|
<div id="outline-container-org2b8461a" class="outline-3">
|
||||||
<h3 id="org78d8a99"><span class="section-number-3">5.2.</span> Verify</h3>
|
<h3 id="org2b8461a"><span class="section-number-3">5.2.</span> Verify</h3>
|
||||||
<div class="outline-text-3" id="text-5-2">
|
<div class="outline-text-3" id="text-5-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">K_data = importdata(<span class="org-string">'X_tal_cage_PID_20Hz.dat'</span>);
|
<pre class="src src-matlab">K_data = importdata(<span class="org-string">'X_tal_cage_PID_20Hz.dat'</span>);
|
||||||
@ -1687,7 +1687,7 @@ K = tf(K_data(1,<span class="org-builtin">:</span>), K_data(2,<span class="org-b
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2022-02-15 mar. 14:18</p>
|
<p class="date">Created: 2022-02-20 dim. 23:36</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -235,6 +235,125 @@ legend('location', 'northwest');
|
|||||||
<<m-init-other>>
|
<<m-init-other>>
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Identification ID24
|
||||||
|
#+begin_src matlab
|
||||||
|
load('test_id_id24_3.mat')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
t = 1e-4*ones(size(fjpur, 1), 1);
|
||||||
|
|
||||||
|
ur.dz = fjpur(:,1) - mean(fjpur(:,1));
|
||||||
|
ur.dry = fjpur(:,2) - mean(fjpur(:,2));
|
||||||
|
ur.drx = fjpur(:,3) - mean(fjpur(:,3));
|
||||||
|
ur.u = fjpur(:,7) - mean(fjpur(:,7));
|
||||||
|
|
||||||
|
uh.dz = fjpuh(:,1) - mean(fjpuh(:,1));
|
||||||
|
uh.dry = fjpuh(:,2) - mean(fjpuh(:,2));
|
||||||
|
uh.drx = fjpuh(:,3) - mean(fjpuh(:,3));
|
||||||
|
uh.u = fjpuh(:,8) - mean(fjpuh(:,8));
|
||||||
|
|
||||||
|
d.dz = fjpd(:,1) - mean(fjpd(:,1));
|
||||||
|
d.dry = fjpd(:,2) - mean(fjpd(:,2));
|
||||||
|
d.drx = fjpd(:,3) - mean(fjpd(:,3));
|
||||||
|
d.u = fjpd(:,9) - mean(fjpd(:,9));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
J_a_311 = [1, 0.14, -0.0675
|
||||||
|
1, 0.14, 0.1525
|
||||||
|
1, -0.14, 0.0425];
|
||||||
|
|
||||||
|
J_a_111 = [1, 0.14, -0.1525
|
||||||
|
1, 0.14, 0.0675
|
||||||
|
1, -0.14, -0.0425];
|
||||||
|
|
||||||
|
ur.y = [J_a_311 * [-ur.dz, ur.dry,-ur.drx]']';
|
||||||
|
uh.y = [J_a_311 * [-uh.dz, uh.dry,-uh.drx]']';
|
||||||
|
d.y = [J_a_311 * [-d.dz, d.dry, -d.drx]']';
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
%% Sampling Time and Frequency
|
||||||
|
Ts = 1e-4; % [s]
|
||||||
|
Fs = 1/Ts; % [Hz]
|
||||||
|
|
||||||
|
% Hannning Windows
|
||||||
|
win = hanning(ceil(1*Fs));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
%% And we get the frequency vector
|
||||||
|
[G_ur, f] = tfestimate(ur.u, ur.y, win, [], [], 1/Ts);
|
||||||
|
[G_uh, ~] = tfestimate(uh.u, uh.y, win, [], [], 1/Ts);
|
||||||
|
[G_d, ~] = tfestimate(d.u, d.y, win, [], [], 1/Ts);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
[coh_ur, ~] = mscohere(ur.u, ur.y, win, [], [], 1/Ts);
|
||||||
|
[coh_uh, ~] = mscohere(uh.u, uh.y, win, [], [], 1/Ts);
|
||||||
|
[coh_d, ~] = mscohere(d.u, d.y, win, [], [], 1/Ts);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
%% Coherence
|
||||||
|
figure;
|
||||||
|
tiledlayout(1, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||||
|
hold on;
|
||||||
|
plot(f, coh_ur(:,1), 'DisplayName', '$u_r$');
|
||||||
|
plot(f, coh_uh(:,2), 'DisplayName', '$u_h$');
|
||||||
|
plot(f, coh_d( :,3), 'DisplayName', '$u_d$');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Coherence');
|
||||||
|
legend('location', 'southeast');
|
||||||
|
xlim([1, 1e3]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports none
|
||||||
|
%% Bode plot of the DCM dynamics in the frame of the Fast Jacks
|
||||||
|
figure;
|
||||||
|
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||||
|
|
||||||
|
ax1 = nexttile([2,1]);
|
||||||
|
hold on;
|
||||||
|
plot(f, abs(G_ur(:,1)), 'DisplayName', '$u_r$');
|
||||||
|
plot(f, abs(G_uh(:,2)), 'DisplayName', '$u_h$');
|
||||||
|
plot(f, abs(G_d( :,3)), 'DisplayName', '$u_d$');
|
||||||
|
plot(f, abs(G_ur(:,2)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'DisplayName', 'Off Diagonal');
|
||||||
|
plot(f, abs(G_ur(:,3)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
plot(f, abs(G_uh(:,1)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
plot(f, abs(G_uh(:,3)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
plot(f, abs(G_d(:,1)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
plot(f, abs(G_d(:,2)), 'color', [0, 0, 0, 0.2], ...
|
||||||
|
'HandleVisibility', 'off');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
|
||||||
|
ylim([1e-2, 1e2]);
|
||||||
|
legend('location', 'northwest');
|
||||||
|
|
||||||
|
ax2 = nexttile;
|
||||||
|
hold on;
|
||||||
|
plot(f, 180/pi*angle(G_ur(:,1)));
|
||||||
|
plot(f, 180/pi*angle(G_uh(:,2)));
|
||||||
|
plot(f, 180/pi*angle(G_d(:,3)));
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
hold off;
|
||||||
|
yticks(-360:90:360);
|
||||||
|
% ylim([-45, 45]);
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([1, 1e3]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Identification
|
** Identification
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
ur = load('FJPUR_step.mat');
|
ur = load('FJPUR_step.mat');
|
||||||
@ -1364,7 +1483,7 @@ exportFig('figs/nyquist_compare.pdf', 'width', 'wide', 'height', 'tall');
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:nyquist_compare
|
#+name: fig:nyquist_compare
|
||||||
#+caption: n
|
#+caption: Nyquist Plot
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/nyquist_compare.png]]
|
[[file:figs/nyquist_compare.png]]
|
||||||
|
|
||||||
@ -1375,12 +1494,12 @@ tiledlayout(1, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
|||||||
|
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, 1./abs(1 + G_d(:,3).*squeeze(freqresp(K(1,1), f, 'Hz'))), 'DisplayName', 'PID');
|
plot(f, 1./abs(1 + G_d(:,3).*squeeze(freqresp(K(1,1), f, 'Hz'))), 'DisplayName', 'PID');
|
||||||
plot(f, 1./abs(1 + G_d(:,3).*squeeze(freqresp(Kb_old(1,1), f, 'Hz'))), 'DisplayName', 'Double Integrator + Lead');
|
plot(f, 1./abs(1 + G_d(:,3).*squeeze(freqresp(Kb_old(1,1), f, 'Hz'))), 'DisplayName', '$K_{10Hz}$');
|
||||||
plot(f, 1./abs(1 + G_d(:,3).*squeeze(freqresp(Kb(1,1), f, 'Hz'))), 'DisplayName', 'Double Integrator + Lead + Notch');
|
plot(f, 1./abs(1 + G_d(:,3).*squeeze(freqresp(Kb(1,1), f, 'Hz'))), 'DisplayName', '$K_{20Hz}$');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
xlabel('Frequency [Hz]'); ylabel('Sensitivity Magnitude');
|
||||||
ylim([1e-2, 1e1]); xlim([1, 1e3]);
|
ylim([1e-3, 5]); xlim([1, 5e2]);
|
||||||
legend('location', 'southeast');
|
legend('location', 'southeast');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -2257,7 +2376,7 @@ Fs = 1e4; % Sampling Frequency [Hz]
|
|||||||
fir_order = args.fir_order; % Filter's order
|
fir_order = args.fir_order; % Filter's order
|
||||||
delay = fir_order/2; % Delay induced by the filter
|
delay = fir_order/2; % Delay induced by the filter
|
||||||
B_fir = firls(args.fir_order, ... % Filter's order
|
B_fir = firls(args.fir_order, ... % Filter's order
|
||||||
[0 500/(Fs/2) 1e3/(Fs/2) 1], ... % Frequencies [Hz]
|
[0 25/(Fs/2) 34/(Fs/2) 1], ... % Frequencies [Hz]
|
||||||
[1 1 0 0]); % Wanted Magnitudes
|
[1 1 0 0]); % Wanted Magnitudes
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
BIN
dcm-feedback-control.pdf
Normal file
BIN
dcm-feedback-control.pdf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 79 KiB |
BIN
matlab/DCM_RT_control_v09.slx
Executable file
BIN
matlab/DCM_RT_control_v09.slx
Executable file
Binary file not shown.
BIN
matlab/DCM_RT_control_v09.slx.r2019b
Executable file
BIN
matlab/DCM_RT_control_v09.slx.r2019b
Executable file
Binary file not shown.
32
matlab/calc_kinematics.m
Executable file
32
matlab/calc_kinematics.m
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
%% this script computes the transforamtion matrices for piezo to pseudo coordinates
|
||||||
|
|
||||||
|
fjpur_111 = [-140; -67.5; 0]*0.001;
|
||||||
|
fjpuh_111 = [-140; (220-67.5); 0]*0.001;
|
||||||
|
fjpd_111 = [140; (110-67.5); 0]*0.001;
|
||||||
|
|
||||||
|
fjpur_311 = [-140; -(220-67.5); 0]*0.001;
|
||||||
|
fjpuh_311 = [-140; 67.5; 0]*0.001;
|
||||||
|
fjpd_311 = [140; -(110-67.5); 0]*0.001;
|
||||||
|
|
||||||
|
A_p2r_111 = [1 -1*fjpur_111(1) fjpur_111(2); 1 -1*fjpuh_111(1) fjpuh_111(2); 1 -1*fjpd_111(1) fjpd_111(2)];
|
||||||
|
A_p2r_311 = [1 -1*fjpur_311(1) fjpur_311(2); 1 -1*fjpuh_311(1) fjpuh_311(2); 1 -1*fjpd_311(1) fjpd_311(2)];
|
||||||
|
|
||||||
|
A_r2p_111 = inv(A_p2r_111);
|
||||||
|
A_r2p_311 = inv(A_p2r_311);
|
||||||
|
|
||||||
|
A_x2p = [-1 0 0; 0 1 0; 0 0 1];
|
||||||
|
B_x2p = [0 0 0];
|
||||||
|
|
||||||
|
motor_pos2mv = 0.6667; %modified by Ludovic 12/07/2021
|
||||||
|
% % no calibr
|
||||||
|
calibr_fjpur = (1);
|
||||||
|
calibr_fjpuh = (1);
|
||||||
|
calibr_fjpd = (1);
|
||||||
|
|
||||||
|
%calibr
|
||||||
|
% calibr_fjpur = (1-0.016);
|
||||||
|
% calibr_fjpuh = (1+0.052);
|
||||||
|
% calibr_fjpd = (1+0.0065);
|
||||||
|
|
||||||
|
calibr_mat = [calibr_fjpur 0 0;0 calibr_fjpuh 0;0 0 calibr_fjpd];
|
||||||
|
|
1
matlab/figs
Symbolic link
1
matlab/figs
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../figs
|
22
matlab/src/extractDatData.m
Normal file
22
matlab/src/extractDatData.m
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
function [data_struct] = extractDatData(dat_file, names, scale)
|
||||||
|
% extractDatData -
|
||||||
|
%
|
||||||
|
% Syntax: extractDatData(data_file, lut_file, args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - data_file - Where to load the .mat file
|
||||||
|
% - lut_file - Where to save the .dat file
|
||||||
|
|
||||||
|
%% Load Data
|
||||||
|
data_array = importdata(dat_file);
|
||||||
|
|
||||||
|
%% Initialize Struct
|
||||||
|
data_struct = struct();
|
||||||
|
|
||||||
|
%% Populate Struct
|
||||||
|
for i = 1:length(names)
|
||||||
|
data_struct.(names{i}) = scale(i)*data_array(:,i);
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Add Time
|
||||||
|
data_struct.time = 1e-4*[1:1:length(data_struct.(names{1}))];
|
49
matlab/src/processMeasData.m
Normal file
49
matlab/src/processMeasData.m
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
function [data] = processMeasData(data, args)
|
||||||
|
% processMeasData -
|
||||||
|
%
|
||||||
|
% Syntax: processMeasData(data_file, lut_file, args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - data
|
||||||
|
|
||||||
|
arguments
|
||||||
|
data
|
||||||
|
args.fir_order (1,1) double {mustBeNumericOrLogical} = 5000
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Actuator Jacobian
|
||||||
|
J_a_111 = [1, 0.14, -0.0675
|
||||||
|
1, 0.14, 0.1525
|
||||||
|
1, -0.14, 0.0425];
|
||||||
|
|
||||||
|
%% FIR Filter
|
||||||
|
Fs = 1e4; % Sampling Frequency [Hz]
|
||||||
|
fir_order = args.fir_order; % Filter's order
|
||||||
|
delay = fir_order/2; % Delay induced by the filter
|
||||||
|
B_fir = firls(args.fir_order, ... % Filter's order
|
||||||
|
[0 50/(Fs/2) 0.1e3/(Fs/2) 1], ... % Frequencies [Hz]
|
||||||
|
[1 1 0 0]); % Wanted Magnitudes
|
||||||
|
|
||||||
|
data.ddz = 10.5e-3./(2*cos(data.bragg)) - data.dz;
|
||||||
|
|
||||||
|
%% Computation of the position of the FJ as measured by the interferometers
|
||||||
|
error = J_a_111 * [data.ddz, data.dry, data.drx]';
|
||||||
|
|
||||||
|
data.fjur_e = error(1,:)'; % [m]
|
||||||
|
data.fjuh_e = error(2,:)'; % [m]
|
||||||
|
data.fjd_e = error(3,:)'; % [m]
|
||||||
|
|
||||||
|
%% Filtering all measured Fast Jack Position using the FIR filter
|
||||||
|
data.fjur_e_filt = filter(B_fir, 1, data.fjur_e);
|
||||||
|
data.fjuh_e_filt = filter(B_fir, 1, data.fjuh_e);
|
||||||
|
data.fjd_e_filt = filter(B_fir, 1, data.fjd_e);
|
||||||
|
|
||||||
|
%% Compensation of the delay introduced by the FIR filter
|
||||||
|
data.fjur_e_filt(1:end-delay) = data.fjur_e_filt(delay+1:end);
|
||||||
|
data.fjuh_e_filt(1:end-delay) = data.fjuh_e_filt(delay+1:end);
|
||||||
|
data.fjd_e_filt( 1:end-delay) = data.fjd_e_filt( delay+1:end);
|
||||||
|
|
||||||
|
%% Re-sample data to have same data points in FJUR
|
||||||
|
[data.fjur_e_resampl, data.fjur_resampl] = resample(data.fjur_e_filt, data.fjur, 1/100e-9);
|
||||||
|
[data.fjuh_e_resampl, data.fjuh_resampl] = resample(data.fjuh_e_filt, data.fjuh, 1/100e-9);
|
||||||
|
[data.fjd_e_resampl, data.fjd_resampl] = resample(data.fjd_e_filt, data.fjd, 1/100e-9);
|
Loading…
Reference in New Issue
Block a user