Add Relative Active Damping study

This commit is contained in:
Thomas Dehaeze 2021-11-30 11:45:05 +01:00
parent e3e90873d9
commit 23125d2abc
10 changed files with 1757 additions and 116 deletions

View File

@ -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>
<!-- 2021-11-30 mar. 11:26 --> <!-- 2021-11-30 mar. 11:44 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>DCM - Dynamical Multi-Body Model</title> <title>DCM - Dynamical Multi-Body Model</title>
<meta name="author" content="Dehaeze Thomas" /> <meta name="author" content="Dehaeze Thomas" />
@ -39,39 +39,41 @@
<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="#orgeeaccd1">1. System Kinematics</a> <li><a href="#orgcb7822a">1. System Kinematics</a>
<ul> <ul>
<li><a href="#org82f10d2">1.1. Bragg Angle</a></li> <li><a href="#orgc4b429c">1.1. Bragg Angle</a></li>
<li><a href="#orgea96012">1.2. Kinematics (111 Crystal)</a> <li><a href="#orga30e667">1.2. Kinematics (111 Crystal)</a>
<ul> <ul>
<li><a href="#org1ea22c7">1.2.1. Interferometers - 111 Crystal</a></li> <li><a href="#org390c6c1">1.2.1. Interferometers - 111 Crystal</a></li>
<li><a href="#orgdcb38e9">1.2.2. Piezo - 111 Crystal</a></li> <li><a href="#org4c00d94">1.2.2. Piezo - 111 Crystal</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org7beb5f6">1.3. Save Kinematics</a></li> <li><a href="#org82434d5">1.3. Save Kinematics</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgc562e49">2. Open Loop System Identification</a> <li><a href="#orgd95f56d">2. Open Loop System Identification</a>
<ul> <ul>
<li><a href="#org461a35a">2.1. Identification</a></li> <li><a href="#org49ca34a">2.1. Identification</a></li>
<li><a href="#org32530ab">2.2. Plant in the frame of the fastjacks</a></li> <li><a href="#org170173c">2.2. Plant in the frame of the fastjacks</a></li>
<li><a href="#org831ac4a">2.3. Plant in the frame of the crystal</a></li> <li><a href="#orge372095">2.3. Plant in the frame of the crystal</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org6a67c7c">3. Active Damping Plant (Strain gauges)</a> <li><a href="#org00855cb">3. Active Damping Plant (Strain gauges)</a>
<ul> <ul>
<li><a href="#org59bf8d2">3.1. Identification</a></li> <li><a href="#org6886aa9">3.1. Identification</a></li>
<li><a href="#orgd1754c8">3.2. Relative Active Damping</a></li>
<li><a href="#orgf6e5d1c">3.3. Damped Plant</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org98018d6">4. Active Damping Plant (Force Sensors)</a> <li><a href="#org3953e07">4. Active Damping Plant (Force Sensors)</a>
<ul> <ul>
<li><a href="#orgf3d05f6">4.1. Identification</a></li> <li><a href="#org243bdc3">4.1. Identification</a></li>
<li><a href="#org2c7747a">4.2. Controller - Root Locus</a></li> <li><a href="#orga2bc3f0">4.2. Controller - Root Locus</a></li>
<li><a href="#org44eaa41">4.3. Damped Plant</a></li> <li><a href="#org63d6a74">4.3. Damped Plant</a></li>
<li><a href="#orgd9ea17f">4.4. Save</a></li> <li><a href="#org8c22e6e">4.4. Save</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org93a00ff">5. HAC-LAC (IFF) architecture</a></li> <li><a href="#org053c75c">5. HAC-LAC (IFF) architecture</a></li>
</ul> </ul>
</div> </div>
</div> </div>
@ -87,22 +89,22 @@ In this document, a Simscape (.e.g. multi-body) model of the ESRF Double Crystal
It is structured as follow: It is structured as follow:
</p> </p>
<ul class="org-ul"> <ul class="org-ul">
<li>Section <a href="#org2e89cff">1</a>: the kinematics of the DCM is presented, and Jacobian matrices which are used to solve the inverse and forward kinematics are computed.</li> <li>Section <a href="#org0fd3e9f">1</a>: the kinematics of the DCM is presented, and Jacobian matrices which are used to solve the inverse and forward kinematics are computed.</li>
<li>Section <a href="#orgdd4a98d">2</a>: the system dynamics is identified in the absence of control.</li> <li>Section <a href="#orgd4eb6dd">2</a>: the system dynamics is identified in the absence of control.</li>
<li>Section <a href="#orgdeb64e7">3</a>: it is studied whether if the strain gauges fixed to the piezoelectric actuators can be used to actively damp the plant.</li> <li>Section <a href="#orgdb80cfb">3</a>: it is studied whether if the strain gauges fixed to the piezoelectric actuators can be used to actively damp the plant.</li>
<li>Section <a href="#org624796e">4</a>: piezoelectric force sensors are added in series with the piezoelectric actuators and are used to actively damp the plant using the Integral Force Feedback (IFF) control strategy.</li> <li>Section <a href="#org8e736b1">4</a>: piezoelectric force sensors are added in series with the piezoelectric actuators and are used to actively damp the plant using the Integral Force Feedback (IFF) control strategy.</li>
<li>Section <a href="#orga8f0b23">5</a>: the High Authority Control - Low Authority Control (HAC-LAC) strategy is tested on the Simscape model.</li> <li>Section <a href="#orga68bafc">5</a>: the High Authority Control - Low Authority Control (HAC-LAC) strategy is tested on the Simscape model.</li>
</ul> </ul>
<div id="outline-container-orgeeaccd1" class="outline-2"> <div id="outline-container-orgcb7822a" class="outline-2">
<h2 id="orgeeaccd1"><span class="section-number-2">1.</span> System Kinematics</h2> <h2 id="orgcb7822a"><span class="section-number-2">1.</span> System Kinematics</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
<a id="org2e89cff"></a> <a id="org0fd3e9f"></a>
</p> </p>
</div> </div>
<div id="outline-container-org82f10d2" class="outline-3"> <div id="outline-container-orgc4b429c" class="outline-3">
<h3 id="org82f10d2"><span class="section-number-3">1.1.</span> Bragg Angle</h3> <h3 id="orgc4b429c"><span class="section-number-3">1.1.</span> Bragg Angle</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-1-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Tested bragg angles</span> <pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Tested bragg angles</span>
@ -118,7 +120,7 @@ dz = d_off<span class="org-builtin">./</span>(2<span class="org-builtin">*</span
</div> </div>
<div id="org41541e2" class="figure"> <div id="org122820c" class="figure">
<p><img src="figs/jack_motion_bragg_angle.png" alt="jack_motion_bragg_angle.png" /> <p><img src="figs/jack_motion_bragg_angle.png" alt="jack_motion_bragg_angle.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Jack motion as a function of Bragg angle</p> <p><span class="figure-number">Figure 1: </span>Jack motion as a function of Bragg angle</p>
@ -136,34 +138,34 @@ dz = d_off<span class="org-builtin">./</span>(2<span class="org-builtin">*</span
</div> </div>
</div> </div>
<div id="outline-container-orgea96012" class="outline-3"> <div id="outline-container-orga30e667" class="outline-3">
<h3 id="orgea96012"><span class="section-number-3">1.2.</span> Kinematics (111 Crystal)</h3> <h3 id="orga30e667"><span class="section-number-3">1.2.</span> Kinematics (111 Crystal)</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-1-2">
<p> <p>
The reference frame is taken at the center of the 111 second crystal. The reference frame is taken at the center of the 111 second crystal.
</p> </p>
</div> </div>
<div id="outline-container-org1ea22c7" class="outline-4"> <div id="outline-container-org390c6c1" class="outline-4">
<h4 id="org1ea22c7"><span class="section-number-4">1.2.1.</span> Interferometers - 111 Crystal</h4> <h4 id="org390c6c1"><span class="section-number-4">1.2.1.</span> Interferometers - 111 Crystal</h4>
<div class="outline-text-4" id="text-1-2-1"> <div class="outline-text-4" id="text-1-2-1">
<p> <p>
Three interferometers are pointed to the bottom surface of the 111 crystal. Three interferometers are pointed to the bottom surface of the 111 crystal.
</p> </p>
<p> <p>
The position of the measurement points are shown in Figure <a href="#org2ba7ed7">2</a> as well as the origin where the motion of the crystal is computed. The position of the measurement points are shown in Figure <a href="#org7147d17">2</a> as well as the origin where the motion of the crystal is computed.
</p> </p>
<div id="org2ba7ed7" class="figure"> <div id="org7147d17" class="figure">
<p><img src="figs/sensor_111_crystal_points.png" alt="sensor_111_crystal_points.png" /> <p><img src="figs/sensor_111_crystal_points.png" alt="sensor_111_crystal_points.png" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Bottom view of the second crystal 111. Position of the measurement points.</p> <p><span class="figure-number">Figure 2: </span>Bottom view of the second crystal 111. Position of the measurement points.</p>
</div> </div>
<p> <p>
The inverse kinematics consisting of deriving the interferometer measurements from the motion of the crystal (see Figure <a href="#orga898030">3</a>): The inverse kinematics consisting of deriving the interferometer measurements from the motion of the crystal (see Figure <a href="#org8e47ad4">3</a>):
</p> </p>
\begin{equation} \begin{equation}
\begin{bmatrix} \begin{bmatrix}
@ -177,7 +179,7 @@ d_z \\ r_y \\ r_x
\end{equation} \end{equation}
<div id="orga898030" class="figure"> <div id="org8e47ad4" class="figure">
<p><img src="figs/schematic_sensor_jacobian_inverse_kinematics.png" alt="schematic_sensor_jacobian_inverse_kinematics.png" /> <p><img src="figs/schematic_sensor_jacobian_inverse_kinematics.png" alt="schematic_sensor_jacobian_inverse_kinematics.png" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Inverse Kinematics - Interferometers</p> <p><span class="figure-number">Figure 3: </span>Inverse Kinematics - Interferometers</p>
@ -185,7 +187,7 @@ d_z \\ r_y \\ r_x
<p> <p>
From the Figure <a href="#org2ba7ed7">2</a>, the inverse kinematics can be solved as follow (for small motion): From the Figure <a href="#org7147d17">2</a>, the inverse kinematics can be solved as follow (for small motion):
</p> </p>
\begin{equation} \begin{equation}
\bm{J}_{s,111} \bm{J}_{s,111}
@ -205,7 +207,7 @@ J_s_111 = [1, 0.07, <span class="org-builtin">-</span>0.015
</pre> </pre>
</div> </div>
<table id="org798edde" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table id="org8c13b9a" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Sensor Jacobian \(\bm{J}_{s,111}\)</caption> <caption class="t-above"><span class="table-number">Table 1:</span> Sensor Jacobian \(\bm{J}_{s,111}\)</caption>
<colgroup> <colgroup>
@ -237,7 +239,7 @@ J_s_111 = [1, 0.07, <span class="org-builtin">-</span>0.015
</table> </table>
<p> <p>
The forward kinematics is solved by inverting the Jacobian matrix (see Figure <a href="#org1633a04">4</a>). The forward kinematics is solved by inverting the Jacobian matrix (see Figure <a href="#org700c4d4">4</a>).
</p> </p>
\begin{equation} \begin{equation}
\begin{bmatrix} \begin{bmatrix}
@ -251,13 +253,13 @@ x_1 \\ x_2 \\ x_3
\end{equation} \end{equation}
<div id="org1633a04" class="figure"> <div id="org700c4d4" class="figure">
<p><img src="figs/schematic_sensor_jacobian_forward_kinematics.png" alt="schematic_sensor_jacobian_forward_kinematics.png" /> <p><img src="figs/schematic_sensor_jacobian_forward_kinematics.png" alt="schematic_sensor_jacobian_forward_kinematics.png" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Forward Kinematics - Interferometers</p> <p><span class="figure-number">Figure 4: </span>Forward Kinematics - Interferometers</p>
</div> </div>
<table id="org1bb9156" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table id="org65d7338" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> Inverse of the sensor Jacobian \(\bm{J}_{s,111}^{-1}\)</caption> <caption class="t-above"><span class="table-number">Table 2:</span> Inverse of the sensor Jacobian \(\bm{J}_{s,111}^{-1}\)</caption>
<colgroup> <colgroup>
@ -290,15 +292,15 @@ x_1 \\ x_2 \\ x_3
</div> </div>
</div> </div>
<div id="outline-container-orgdcb38e9" class="outline-4"> <div id="outline-container-org4c00d94" class="outline-4">
<h4 id="orgdcb38e9"><span class="section-number-4">1.2.2.</span> Piezo - 111 Crystal</h4> <h4 id="org4c00d94"><span class="section-number-4">1.2.2.</span> Piezo - 111 Crystal</h4>
<div class="outline-text-4" id="text-1-2-2"> <div class="outline-text-4" id="text-1-2-2">
<p> <p>
The location of the actuators with respect with the center of the 111 second crystal are shown in Figure <a href="#org67c7fa3">5</a>. The location of the actuators with respect with the center of the 111 second crystal are shown in Figure <a href="#orgd329873">5</a>.
</p> </p>
<div id="org67c7fa3" class="figure"> <div id="orgd329873" class="figure">
<p><img src="figs/actuator_jacobian_111_points.png" alt="actuator_jacobian_111_points.png" /> <p><img src="figs/actuator_jacobian_111_points.png" alt="actuator_jacobian_111_points.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Location of actuators with respect to the center of the 111 second crystal (bottom view)</p> <p><span class="figure-number">Figure 5: </span>Location of actuators with respect to the center of the 111 second crystal (bottom view)</p>
@ -319,14 +321,14 @@ d_z \\ r_y \\ r_x
\end{equation} \end{equation}
<div id="org6dc1eec" class="figure"> <div id="orga74633d" class="figure">
<p><img src="figs/schematic_actuator_jacobian_inverse_kinematics.png" alt="schematic_actuator_jacobian_inverse_kinematics.png" /> <p><img src="figs/schematic_actuator_jacobian_inverse_kinematics.png" alt="schematic_actuator_jacobian_inverse_kinematics.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Inverse Kinematics - Actuators</p> <p><span class="figure-number">Figure 6: </span>Inverse Kinematics - Actuators</p>
</div> </div>
<p> <p>
Based on the geometry in Figure <a href="#org67c7fa3">5</a>, we obtain: Based on the geometry in Figure <a href="#orgd329873">5</a>, we obtain:
</p> </p>
\begin{equation} \begin{equation}
\bm{J}_{a,111} \bm{J}_{a,111}
@ -346,7 +348,7 @@ J_a_111 = [1, 0.14, <span class="org-builtin">-</span>0.1525
</pre> </pre>
</div> </div>
<table id="org987e530" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table id="org363311b" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 3:</span> Actuator Jacobian \(\bm{J}_{a,111}\)</caption> <caption class="t-above"><span class="table-number">Table 3:</span> Actuator Jacobian \(\bm{J}_{a,111}\)</caption>
<colgroup> <colgroup>
@ -392,13 +394,13 @@ d_{u_r} \\ d_{u_h} \\ d_{d}
\end{equation} \end{equation}
<div id="orga69da79" class="figure"> <div id="orgeeec18d" class="figure">
<p><img src="figs/schematic_actuator_jacobian_forward_kinematics.png" alt="schematic_actuator_jacobian_forward_kinematics.png" /> <p><img src="figs/schematic_actuator_jacobian_forward_kinematics.png" alt="schematic_actuator_jacobian_forward_kinematics.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Forward Kinematics - Actuators for 111 crystal</p> <p><span class="figure-number">Figure 7: </span>Forward Kinematics - Actuators for 111 crystal</p>
</div> </div>
<table id="orgb6769cb" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table id="org19c3313" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 4:</span> Inverse of the actuator Jacobian \(\bm{J}_{a,111}^{-1}\)</caption> <caption class="t-above"><span class="table-number">Table 4:</span> Inverse of the actuator Jacobian \(\bm{J}_{a,111}^{-1}\)</caption>
<colgroup> <colgroup>
@ -432,8 +434,8 @@ d_{u_r} \\ d_{u_h} \\ d_{d}
</div> </div>
</div> </div>
<div id="outline-container-org7beb5f6" class="outline-3"> <div id="outline-container-org82434d5" class="outline-3">
<h3 id="org7beb5f6"><span class="section-number-3">1.3.</span> Save Kinematics</h3> <h3 id="org82434d5"><span class="section-number-3">1.3.</span> Save Kinematics</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">save(<span class="org-string">'mat/dcm_kinematics.mat'</span>, <span class="org-string">'J_a_111'</span>, <span class="org-string">'J_s_111'</span>) <pre class="src src-matlab">save(<span class="org-string">'mat/dcm_kinematics.mat'</span>, <span class="org-string">'J_a_111'</span>, <span class="org-string">'J_s_111'</span>)
@ -443,15 +445,15 @@ d_{u_r} \\ d_{u_h} \\ d_{d}
</div> </div>
</div> </div>
<div id="outline-container-orgc562e49" class="outline-2"> <div id="outline-container-orgd95f56d" class="outline-2">
<h2 id="orgc562e49"><span class="section-number-2">2.</span> Open Loop System Identification</h2> <h2 id="orgd95f56d"><span class="section-number-2">2.</span> Open Loop System Identification</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
<a id="orgdd4a98d"></a> <a id="orgd4eb6dd"></a>
</p> </p>
</div> </div>
<div id="outline-container-org461a35a" class="outline-3"> <div id="outline-container-org49ca34a" class="outline-3">
<h3 id="org461a35a"><span class="section-number-3">2.1.</span> Identification</h3> <h3 id="org49ca34a"><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">
<p> <p>
Let&rsquo;s considered the system \(\bm{G}(s)\) with: Let&rsquo;s considered the system \(\bm{G}(s)\) with:
@ -462,11 +464,11 @@ Let&rsquo;s considered the system \(\bm{G}(s)\) with:
</ul> </ul>
<p> <p>
It is schematically shown in Figure <a href="#org7c50fa9">8</a>. It is schematically shown in Figure <a href="#org52a4b7c">8</a>.
</p> </p>
<div id="org7c50fa9" class="figure"> <div id="org52a4b7c" class="figure">
<p><img src="figs/schematic_system_inputs_outputs.png" alt="schematic_system_inputs_outputs.png" /> <p><img src="figs/schematic_system_inputs_outputs.png" alt="schematic_system_inputs_outputs.png" />
</p> </p>
<p><span class="figure-number">Figure 8: </span>Dynamical system with inputs and outputs</p> <p><span class="figure-number">Figure 8: </span>Dynamical system with inputs and outputs</p>
@ -508,8 +510,8 @@ State-space model with 3 outputs, 3 inputs, and 24 states.
</div> </div>
</div> </div>
<div id="outline-container-org32530ab" class="outline-3"> <div id="outline-container-org170173c" class="outline-3">
<h3 id="org32530ab"><span class="section-number-3">2.2.</span> Plant in the frame of the fastjacks</h3> <h3 id="org170173c"><span class="section-number-3">2.2.</span> Plant in the frame of the fastjacks</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">load(<span class="org-string">'mat/dcm_kinematics.mat'</span>); <pre class="src src-matlab">load(<span class="org-string">'mat/dcm_kinematics.mat'</span>);
@ -517,11 +519,11 @@ State-space model with 3 outputs, 3 inputs, and 24 states.
</div> </div>
<p> <p>
Using the forward and inverse kinematics, we can computed the dynamics from piezo forces to axial motion of the 3 fastjacks (see Figure <a href="#orga3837b0">9</a>). Using the forward and inverse kinematics, we can computed the dynamics from piezo forces to axial motion of the 3 fastjacks (see Figure <a href="#orgf9b4903">9</a>).
</p> </p>
<div id="orga3837b0" class="figure"> <div id="orgf9b4903" class="figure">
<p><img src="figs/schematic_jacobian_frame_fastjack.png" alt="schematic_jacobian_frame_fastjack.png" /> <p><img src="figs/schematic_jacobian_frame_fastjack.png" alt="schematic_jacobian_frame_fastjack.png" />
</p> </p>
<p><span class="figure-number">Figure 9: </span>Use of Jacobian matrices to obtain the system in the frame of the fastjacks</p> <p><span class="figure-number">Figure 9: </span>Use of Jacobian matrices to obtain the system in the frame of the fastjacks</p>
@ -542,7 +544,7 @@ The DC gain of the new system shows that the system is well decoupled at low fre
</pre> </pre>
</div> </div>
<table id="org06bdfa0" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table id="org19e4a7e" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 5:</span> DC gain of the plant in the frame of the fast jacks \(\bm{G}_{\text{fj}}\)</caption> <caption class="t-above"><span class="table-number">Table 5:</span> DC gain of the plant in the frame of the fast jacks \(\bm{G}_{\text{fj}}\)</caption>
<colgroup> <colgroup>
@ -574,17 +576,17 @@ The DC gain of the new system shows that the system is well decoupled at low fre
</table> </table>
<p> <p>
The bode plot of \(\bm{G}_{\text{fj}}(s)\) is shown in Figure <a href="#org4e62924">10</a>. The bode plot of \(\bm{G}_{\text{fj}}(s)\) is shown in Figure <a href="#org6777e66">10</a>.
</p> </p>
<div id="org4e62924" class="figure"> <div id="org6777e66" class="figure">
<p><img src="figs/bode_plot_plant_fj.png" alt="bode_plot_plant_fj.png" /> <p><img src="figs/bode_plot_plant_fj.png" alt="bode_plot_plant_fj.png" />
</p> </p>
<p><span class="figure-number">Figure 10: </span>Bode plot of the diagonal and off-diagonal elements of the plant in the frame of the fast jacks</p> <p><span class="figure-number">Figure 10: </span>Bode plot of the diagonal and off-diagonal elements of the plant in the frame of the fast jacks</p>
</div> </div>
<div class="important" id="org3ded063"> <div class="important" id="orgcdf2cc1">
<p> <p>
Computing the system in the frame of the fastjack gives good decoupling at low frequency (until the first resonance of the system). Computing the system in the frame of the fastjack gives good decoupling at low frequency (until the first resonance of the system).
</p> </p>
@ -593,11 +595,11 @@ Computing the system in the frame of the fastjack gives good decoupling at low f
</div> </div>
</div> </div>
<div id="outline-container-org831ac4a" class="outline-3"> <div id="outline-container-orge372095" class="outline-3">
<h3 id="org831ac4a"><span class="section-number-3">2.3.</span> Plant in the frame of the crystal</h3> <h3 id="orge372095"><span class="section-number-3">2.3.</span> Plant in the frame of the crystal</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<div id="org3adfc9a" class="figure"> <div id="org4377a93" class="figure">
<p><img src="figs/schematic_jacobian_frame_crystal.png" alt="schematic_jacobian_frame_crystal.png" /> <p><img src="figs/schematic_jacobian_frame_crystal.png" alt="schematic_jacobian_frame_crystal.png" />
</p> </p>
<p><span class="figure-number">Figure 11: </span>Use of Jacobian matrices to obtain the system in the frame of the crystal</p> <p><span class="figure-number">Figure 11: </span>Use of Jacobian matrices to obtain the system in the frame of the crystal</p>
@ -652,18 +654,18 @@ The main reason is that, as we map forces to the center of the 111 crystal and n
</div> </div>
</div> </div>
<div id="outline-container-org6a67c7c" class="outline-2"> <div id="outline-container-org00855cb" class="outline-2">
<h2 id="org6a67c7c"><span class="section-number-2">3.</span> Active Damping Plant (Strain gauges)</h2> <h2 id="org00855cb"><span class="section-number-2">3.</span> Active Damping Plant (Strain gauges)</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p> <p>
<a id="orgdeb64e7"></a> <a id="orgdb80cfb"></a>
</p> </p>
<p> <p>
In this section, we wish to see whether if strain gauges fixed to the piezoelectric actuator can be used for active damping. In this section, we wish to see whether if strain gauges fixed to the piezoelectric actuator can be used for active damping.
</p> </p>
</div> </div>
<div id="outline-container-org59bf8d2" class="outline-3"> <div id="outline-container-org6886aa9" class="outline-3">
<h3 id="org59bf8d2"><span class="section-number-3">3.1.</span> Identification</h3> <h3 id="org6886aa9"><span class="section-number-3">3.1.</span> Identification</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-3-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Input/Output definition</span> <pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Input/Output definition</span>
@ -671,13 +673,11 @@ clear io; io_i = 1;
<span class="org-matlab-cellbreak">%% Inputs</span> <span class="org-matlab-cellbreak">%% Inputs</span>
<span class="org-comment-delimiter">% </span><span class="org-comment">Control Input {3x1} [N]</span> <span class="org-comment-delimiter">% </span><span class="org-comment">Control Input {3x1} [N]</span>
io(io_i) = linio([mdl, <span class="org-string">'/u'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-builtin">+</span> 1; io(io_i) = linio([mdl, <span class="org-string">'/control_system'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-builtin">+</span> 1;
<span class="org-comment-delimiter">% </span><span class="org-comment">% Stepper Displacement {3x1} [m]</span>
<span class="org-comment-delimiter">% </span><span class="org-comment">io(io_i) = linio([mdl, '/d'], 1, 'openinput'); io_i = io_i + 1;</span>
<span class="org-matlab-cellbreak">%% Outputs</span> <span class="org-matlab-cellbreak">%% Outputs</span>
<span class="org-comment-delimiter">% </span><span class="org-comment">Strain Gauges {3x1} [m]</span> <span class="org-comment-delimiter">% </span><span class="org-comment">Strain Gauges {3x1} [m]</span>
io(io_i) = linio([mdl, <span class="org-string">'/sg'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-builtin">+</span> 1; io(io_i) = linio([mdl, <span class="org-string">'/DCM'</span>], 2, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-builtin">+</span> 1;
</pre> </pre>
</div> </div>
@ -704,33 +704,128 @@ G_sg = linearize(mdl, io);
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<td class="org-right">-1.4113e-13</td> <td class="org-right">4.4443e-09</td>
<td class="org-right">1.0339e-13</td> <td class="org-right">1.0339e-13</td>
<td class="org-right">3.774e-14</td> <td class="org-right">3.774e-14</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">1.0339e-13</td> <td class="org-right">1.0339e-13</td>
<td class="org-right">-1.4113e-13</td> <td class="org-right">4.4443e-09</td>
<td class="org-right">3.774e-14</td> <td class="org-right">3.774e-14</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">3.7792e-14</td> <td class="org-right">3.7792e-14</td>
<td class="org-right">3.7792e-14</td> <td class="org-right">3.7792e-14</td>
<td class="org-right">-7.5585e-14</td> <td class="org-right">4.4444e-09</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div id="org72b48ee" class="figure">
<p><img src="figs/strain_gauge_plant_bode_plot.png" alt="strain_gauge_plant_bode_plot.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Bode Plot of the transfer functions from piezoelectric forces to strain gauges measuremed displacements</p>
</div>
<div class="important" id="org070666c">
<p>
As the distance between the poles and zeros in Figure <a href="#org16f0105">15</a> is very small, little damping can be actively added using the strain gauges.
This will be confirmed using a Root Locus plot.
</p>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org98018d6" class="outline-2"> <div id="outline-container-orgd1754c8" class="outline-3">
<h2 id="org98018d6"><span class="section-number-2">4.</span> Active Damping Plant (Force Sensors)</h2> <h3 id="orgd1754c8"><span class="section-number-3">3.2.</span> Relative Active Damping</h3>
<div class="outline-text-3" id="text-3-2">
<div class="org-src-container">
<pre class="src src-matlab">Krad_g1 = eye(3)<span class="org-builtin">*</span>s<span class="org-builtin">/</span>(s<span class="org-builtin">^</span>2<span class="org-builtin">/</span>(2<span class="org-builtin">*</span><span class="org-matlab-math">pi</span><span class="org-builtin">*</span>500)<span class="org-builtin">^</span>2 <span class="org-builtin">+</span> 2<span class="org-builtin">*</span>s<span class="org-builtin">/</span>(2<span class="org-builtin">*</span><span class="org-matlab-math">pi</span><span class="org-builtin">*</span>500) <span class="org-builtin">+</span> 1);
</pre>
</div>
<p>
As can be seen in Figure <a href="#org16a4fc0">13</a>, very little damping can be added using relative damping strategy using strain gauges.
</p>
<div id="org16a4fc0" class="figure">
<p><img src="figs/relative_damping_root_locus.png" alt="relative_damping_root_locus.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Root Locus for the relative damping control</p>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Krad = <span class="org-builtin">-</span>g<span class="org-builtin">*</span>Krad_g1;
</pre>
</div>
</div>
</div>
<div id="outline-container-orgf6e5d1c" class="outline-3">
<h3 id="orgf6e5d1c"><span class="section-number-3">3.3.</span> Damped Plant</h3>
<div class="outline-text-3" id="text-3-3">
<p>
The controller is implemented on Simscape, and the damped plant is identified.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Input/Output definition</span>
clear io; io_i = 1;
<span class="org-matlab-cellbreak">%% Inputs</span>
<span class="org-comment-delimiter">% </span><span class="org-comment">Control Input {3x1} [N]</span>
io(io_i) = linio([mdl, <span class="org-string">'/control_system'</span>], 1, <span class="org-string">'input'</span>); io_i = io_i <span class="org-builtin">+</span> 1;
<span class="org-matlab-cellbreak">%% Outputs</span>
<span class="org-comment-delimiter">% </span><span class="org-comment">Force Sensor {3x1} [m]</span>
io(io_i) = linio([mdl, <span class="org-string">'/DCM'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-builtin">+</span> 1;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% DCM Kinematics</span>
load(<span class="org-string">'mat/dcm_kinematics.mat'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Identification of the Open Loop plant</span>
controller.type = 0; <span class="org-comment-delimiter">% </span><span class="org-comment">Open Loop</span>
G_ol = J_a_111<span class="org-builtin">*</span>inv(J_s_111)<span class="org-builtin">*</span>linearize(mdl, io);
G_ol.InputName = {<span class="org-string">'u_ur'</span>, <span class="org-string">'u_uh'</span>, <span class="org-string">'u_d'</span>};
G_ol.OutputName = {<span class="org-string">'d_ur'</span>, <span class="org-string">'d_uh'</span>, <span class="org-string">'d_d'</span>};
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Identification of the damped plant with Relative Active Damping</span>
controller.type = 2; <span class="org-comment-delimiter">% </span><span class="org-comment">RAD</span>
G_dp = J_a_111<span class="org-builtin">*</span>inv(J_s_111)<span class="org-builtin">*</span>linearize(mdl, io);
G_dp.InputName = {<span class="org-string">'u_ur'</span>, <span class="org-string">'u_uh'</span>, <span class="org-string">'u_d'</span>};
G_dp.OutputName = {<span class="org-string">'d_ur'</span>, <span class="org-string">'d_uh'</span>, <span class="org-string">'d_d'</span>};
</pre>
</div>
<div id="org908c24c" class="figure">
<p><img src="figs/comp_damp_undamped_plant_rad_bode_plot.png" alt="comp_damp_undamped_plant_rad_bode_plot.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Bode plot of both the open-loop plant and the damped plant using relative active damping</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org3953e07" class="outline-2">
<h2 id="org3953e07"><span class="section-number-2">4.</span> Active Damping Plant (Force Sensors)</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-4">
<p> <p>
<a id="org624796e"></a> <a id="org8e736b1"></a>
</p> </p>
<p> <p>
Force sensors are added above the piezoelectric actuators. Force sensors are added above the piezoelectric actuators.
@ -738,8 +833,8 @@ They can consists of a simple piezoelectric ceramic stack.
See for instance <a href="fleming10_integ_strain_force_feedb_high">fleming10_integ_strain_force_feedb_high</a>. See for instance <a href="fleming10_integ_strain_force_feedb_high">fleming10_integ_strain_force_feedb_high</a>.
</p> </p>
</div> </div>
<div id="outline-container-orgf3d05f6" class="outline-3"> <div id="outline-container-org243bdc3" class="outline-3">
<h3 id="orgf3d05f6"><span class="section-number-3">4.1.</span> Identification</h3> <h3 id="org243bdc3"><span class="section-number-3">4.1.</span> Identification</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"><span class="org-matlab-cellbreak">%% Input/Output definition</span> <pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Input/Output definition</span>
@ -798,16 +893,16 @@ G_fs = linearize(mdl, io);
</table> </table>
<div id="org2468af2" class="figure"> <div id="org16f0105" class="figure">
<p><img src="figs/iff_plant_bode_plot.png" alt="iff_plant_bode_plot.png" /> <p><img src="figs/iff_plant_bode_plot.png" alt="iff_plant_bode_plot.png" />
</p> </p>
<p><span class="figure-number">Figure 12: </span>Bode plot of IFF Plant</p> <p><span class="figure-number">Figure 15: </span>Bode plot of IFF Plant</p>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org2c7747a" class="outline-3"> <div id="outline-container-orga2bc3f0" class="outline-3">
<h3 id="org2c7747a"><span class="section-number-3">4.2.</span> Controller - Root Locus</h3> <h3 id="orga2bc3f0"><span class="section-number-3">4.2.</span> Controller - Root Locus</h3>
<div class="outline-text-3" id="text-4-2"> <div class="outline-text-3" id="text-4-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">Kiff_g1 = eye(3)<span class="org-builtin">*</span>1<span class="org-builtin">/</span>(1 <span class="org-builtin">+</span> s<span class="org-builtin">/</span>2<span class="org-builtin">/</span><span class="org-matlab-math">pi</span><span class="org-builtin">/</span>20); <pre class="src src-matlab">Kiff_g1 = eye(3)<span class="org-builtin">*</span>1<span class="org-builtin">/</span>(1 <span class="org-builtin">+</span> s<span class="org-builtin">/</span>2<span class="org-builtin">/</span><span class="org-matlab-math">pi</span><span class="org-builtin">/</span>20);
@ -815,10 +910,10 @@ G_fs = linearize(mdl, io);
</div> </div>
<div id="orgac1f06c" class="figure"> <div id="org4041645" class="figure">
<p><img src="figs/iff_root_locus.png" alt="iff_root_locus.png" /> <p><img src="figs/iff_root_locus.png" alt="iff_root_locus.png" />
</p> </p>
<p><span class="figure-number">Figure 13: </span>Root Locus plot for the IFF Control strategy</p> <p><span class="figure-number">Figure 16: </span>Root Locus plot for the IFF Control strategy</p>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
@ -829,8 +924,8 @@ Kiff = g<span class="org-builtin">*</span>Kiff_g1;
</div> </div>
</div> </div>
<div id="outline-container-org44eaa41" class="outline-3"> <div id="outline-container-org63d6a74" class="outline-3">
<h3 id="org44eaa41"><span class="section-number-3">4.3.</span> Damped Plant</h3> <h3 id="org63d6a74"><span class="section-number-3">4.3.</span> Damped Plant</h3>
<div class="outline-text-3" id="text-4-3"> <div class="outline-text-3" id="text-4-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Input/Output definition</span> <pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Input/Output definition</span>
@ -871,13 +966,13 @@ G_dp.OutputName = {<span class="org-string">'d_ur'</span>, <span class="org-str
</div> </div>
<div id="orge31be94" class="figure"> <div id="org8455151" class="figure">
<p><img src="figs/comp_damped_undamped_plant_iff_bode_plot.png" alt="comp_damped_undamped_plant_iff_bode_plot.png" /> <p><img src="figs/comp_damped_undamped_plant_iff_bode_plot.png" alt="comp_damped_undamped_plant_iff_bode_plot.png" />
</p> </p>
<p><span class="figure-number">Figure 14: </span>Bode plot of both the open-loop plant and the damped plant using IFF</p> <p><span class="figure-number">Figure 17: </span>Bode plot of both the open-loop plant and the damped plant using IFF</p>
</div> </div>
<div class="important" id="org4a8fc3e"> <div class="important" id="orgebe4b09">
<p> <p>
The Integral Force Feedback control strategy is very effective in damping the suspension modes of the DCM. The Integral Force Feedback control strategy is very effective in damping the suspension modes of the DCM.
</p> </p>
@ -886,8 +981,8 @@ The Integral Force Feedback control strategy is very effective in damping the su
</div> </div>
</div> </div>
<div id="outline-container-orgd9ea17f" class="outline-3"> <div id="outline-container-org8c22e6e" class="outline-3">
<h3 id="orgd9ea17f"><span class="section-number-3">4.4.</span> Save</h3> <h3 id="org8c22e6e"><span class="section-number-3">4.4.</span> Save</h3>
<div class="outline-text-3" id="text-4-4"> <div class="outline-text-3" id="text-4-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'mat/Kiff.mat'</span>, <span class="org-string">'Kiff'</span>); <pre class="src src-matlab">save(<span class="org-string">'mat/Kiff.mat'</span>, <span class="org-string">'Kiff'</span>);
@ -897,18 +992,18 @@ The Integral Force Feedback control strategy is very effective in damping the su
</div> </div>
</div> </div>
<div id="outline-container-org93a00ff" class="outline-2"> <div id="outline-container-org053c75c" class="outline-2">
<h2 id="org93a00ff"><span class="section-number-2">5.</span> HAC-LAC (IFF) architecture</h2> <h2 id="org053c75c"><span class="section-number-2">5.</span> HAC-LAC (IFF) architecture</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-5">
<p> <p>
<a id="orga8f0b23"></a> <a id="orga68bafc"></a>
</p> </p>
</div> </div>
</div> </div>
</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: 2021-11-30 mar. 11:26</p> <p class="date">Created: 2021-11-30 mar. 11:44</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -738,13 +738,11 @@ clear io; io_i = 1;
%% Inputs %% Inputs
% Control Input {3x1} [N] % Control Input {3x1} [N]
io(io_i) = linio([mdl, '/u'], 1, 'openinput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/control_system'], 1, 'openinput'); io_i = io_i + 1;
% % Stepper Displacement {3x1} [m]
% io(io_i) = linio([mdl, '/d'], 1, 'openinput'); io_i = io_i + 1;
%% Outputs %% Outputs
% Strain Gauges {3x1} [m] % Strain Gauges {3x1} [m]
io(io_i) = linio([mdl, '/sg'], 1, 'openoutput'); io_i = io_i + 1; io(io_i) = linio([mdl, '/DCM'], 2, 'openoutput'); io_i = io_i + 1;
#+end_src #+end_src
#+begin_src matlab #+begin_src matlab
@ -762,12 +760,12 @@ dcgain(G_sg)
#+end_src #+end_src
#+RESULTS: #+RESULTS:
| -1.4113e-13 | 1.0339e-13 | 3.774e-14 | | 4.4443e-09 | 1.0339e-13 | 3.774e-14 |
| 1.0339e-13 | -1.4113e-13 | 3.774e-14 | | 1.0339e-13 | 4.4443e-09 | 3.774e-14 |
| 3.7792e-14 | 3.7792e-14 | -7.5585e-14 | | 3.7792e-14 | 3.7792e-14 | 4.4444e-09 |
#+begin_src matlab :exports none #+begin_src matlab :exports none
%% Bode plot for the plant %% Bode plot for the plant (strain gauge output)
figure; figure;
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None'); tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
@ -788,7 +786,8 @@ end
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 2); legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
ylim([1e-14, 1e-7]);
ax2 = nexttile; ax2 = nexttile;
hold on; hold on;
@ -800,12 +799,173 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off; hold off;
yticks(-360:90:360); yticks(-360:90:360);
ylim([-180, 180]); ylim([-180, 0]);
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); xlim([freqs(1), freqs(end)]);
#+end_src #+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/strain_gauge_plant_bode_plot.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:strain_gauge_plant_bode_plot
#+caption: Bode Plot of the transfer functions from piezoelectric forces to strain gauges measuremed displacements
#+RESULTS:
[[file:figs/strain_gauge_plant_bode_plot.png]]
#+begin_important
As the distance between the poles and zeros in Figure [[fig:iff_plant_bode_plot]] is very small, little damping can be actively added using the strain gauges.
This will be confirmed using a Root Locus plot.
#+end_important
** Relative Active Damping
#+begin_src matlab
Krad_g1 = eye(3)*s/(s^2/(2*pi*500)^2 + 2*s/(2*pi*500) + 1);
#+end_src
As can be seen in Figure [[fig:relative_damping_root_locus]], very little damping can be added using relative damping strategy using strain gauges.
#+begin_src matlab :exports none
%% Root Locus for IFF
gains = logspace(3, 8, 200);
figure;
hold on;
plot(real(pole(G_sg)), imag(pole(G_sg)), 'x', 'color', colors(1,:), ...
'DisplayName', '$g = 0$');
plot(real(tzero(G_sg)), imag(tzero(G_sg)), 'o', 'color', colors(1,:), ...
'HandleVisibility', 'off');
for g = gains
clpoles = pole(feedback(G_sg, g*Krad_g1, -1));
plot(real(clpoles), imag(clpoles), '.', 'color', colors(1,:), ...
'HandleVisibility', 'off');
end
% Optimal gain
g = 2e5;
clpoles = pole(feedback(G_sg, g*Krad_g1, -1));
plot(real(clpoles), imag(clpoles), 'x', 'color', colors(2,:), ...
'DisplayName', sprintf('$g=%.0e$', g));
hold off;
xlim([-6, 0]); ylim([0, 2700]);
xlabel('Real Part'); ylabel('Imaginary Part');
legend('location', 'northwest');
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/relative_damping_root_locus.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:relative_damping_root_locus
#+caption: Root Locus for the relative damping control
#+RESULTS:
[[file:figs/relative_damping_root_locus.png]]
#+begin_src matlab
Krad = -g*Krad_g1;
#+end_src
** Damped Plant
The controller is implemented on Simscape, and the damped plant is identified.
#+begin_src matlab
%% Input/Output definition
clear io; io_i = 1;
%% Inputs
% Control Input {3x1} [N]
io(io_i) = linio([mdl, '/control_system'], 1, 'input'); io_i = io_i + 1;
%% Outputs
% Force Sensor {3x1} [m]
io(io_i) = linio([mdl, '/DCM'], 1, 'openoutput'); io_i = io_i + 1;
#+end_src
#+begin_src matlab
%% DCM Kinematics
load('mat/dcm_kinematics.mat');
#+end_src
#+begin_src matlab
%% Identification of the Open Loop plant
controller.type = 0; % Open Loop
G_ol = J_a_111*inv(J_s_111)*linearize(mdl, io);
G_ol.InputName = {'u_ur', 'u_uh', 'u_d'};
G_ol.OutputName = {'d_ur', 'd_uh', 'd_d'};
#+end_src
#+begin_src matlab
%% Identification of the damped plant with Relative Active Damping
controller.type = 2; % RAD
G_dp = J_a_111*inv(J_s_111)*linearize(mdl, io);
G_dp.InputName = {'u_ur', 'u_uh', 'u_d'};
G_dp.OutputName = {'d_ur', 'd_uh', 'd_d'};
#+end_src
#+begin_src matlab :exports none
%% Comparison of the damped and undamped plant
figure;
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
ax1 = nexttile([2,1]);
hold on;
plot(freqs, abs(squeeze(freqresp(G_ol(1,1), freqs, 'Hz'))), ...
'DisplayName', 'd - OL');
plot(freqs, abs(squeeze(freqresp(G_ol(2,2), freqs, 'Hz'))), ...
'DisplayName', 'uh - OL');
plot(freqs, abs(squeeze(freqresp(G_ol(3,3), freqs, 'Hz'))), ...
'DisplayName', 'ur - OL');
set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(G_dp(1,1), freqs, 'Hz'))), '--', ...
'DisplayName', 'd - IFF');
plot(freqs, abs(squeeze(freqresp(G_dp(2,2), freqs, 'Hz'))), '--', ...
'DisplayName', 'uh - IFF');
plot(freqs, abs(squeeze(freqresp(G_dp(3,3), freqs, 'Hz'))), '--', ...
'DisplayName', 'ur - IFF');
for i = 1:2
for j = i+1:3
plot(freqs, abs(squeeze(freqresp(G_dp(i,j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2], ...
'HandleVisibility', 'off');
end
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
ylim([1e-12, 1e-6]);
ax2 = nexttile;
hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G_ol(1,1), freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(G_ol(2,2), freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(G_ol(3,3), freqs, 'Hz'))));
set(gca,'ColorOrderIndex',1)
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dp(1,1), freqs, 'Hz'))), '--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dp(2,2), freqs, 'Hz'))), '--');
plot(freqs, 180/pi*angle(squeeze(freqresp(G_dp(3,3), freqs, 'Hz'))), '--');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
yticks(-360:90:360);
ylim([-180, 0]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/comp_damp_undamped_plant_rad_bode_plot.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:comp_damp_undamped_plant_rad_bode_plot
#+caption: Bode plot of both the open-loop plant and the damped plant using relative active damping
#+RESULTS:
[[file:figs/comp_damp_undamped_plant_rad_bode_plot.png]]
* Active Damping Plant (Force Sensors) * Active Damping Plant (Force Sensors)
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle matlab/dcm_active_damping_iff.m :header-args:matlab+: :tangle matlab/dcm_active_damping_iff.m

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.