Lot of works on simscape, IFF and DVF
This commit is contained in:
		
							
								
								
									
										1
									
								
								matlab/figs-tikz
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								matlab/figs-tikz
									
									
									
									
									
										Symbolic link
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
../tikz/figs
 | 
			
		||||
@@ -1,229 +1,27 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 | 
			
		||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
<!-- 2020-03-16 lun. 10:52 -->
 | 
			
		||||
<!-- 2020-06-10 mer. 10:17 -->
 | 
			
		||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 | 
			
		||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
 | 
			
		||||
<title>Matlab Computation</title>
 | 
			
		||||
<meta name="generator" content="Org mode" />
 | 
			
		||||
<meta name="author" content="Dehaeze Thomas" />
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
 <!--/*--><![CDATA[/*><!--*/
 | 
			
		||||
  .title  { text-align: center;
 | 
			
		||||
             margin-bottom: .2em; }
 | 
			
		||||
  .subtitle { text-align: center;
 | 
			
		||||
              font-size: medium;
 | 
			
		||||
              font-weight: bold;
 | 
			
		||||
              margin-top:0; }
 | 
			
		||||
  .todo   { font-family: monospace; color: red; }
 | 
			
		||||
  .done   { font-family: monospace; color: green; }
 | 
			
		||||
  .priority { font-family: monospace; color: orange; }
 | 
			
		||||
  .tag    { background-color: #eee; font-family: monospace;
 | 
			
		||||
            padding: 2px; font-size: 80%; font-weight: normal; }
 | 
			
		||||
  .timestamp { color: #bebebe; }
 | 
			
		||||
  .timestamp-kwd { color: #5f9ea0; }
 | 
			
		||||
  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
 | 
			
		||||
  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
 | 
			
		||||
  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
 | 
			
		||||
  .underline { text-decoration: underline; }
 | 
			
		||||
  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
 | 
			
		||||
  p.verse { margin-left: 3%; }
 | 
			
		||||
  pre {
 | 
			
		||||
    border: 1px solid #ccc;
 | 
			
		||||
    box-shadow: 3px 3px 3px #eee;
 | 
			
		||||
    padding: 8pt;
 | 
			
		||||
    font-family: monospace;
 | 
			
		||||
    overflow: auto;
 | 
			
		||||
    margin: 1.2em;
 | 
			
		||||
  }
 | 
			
		||||
  pre.src {
 | 
			
		||||
    position: relative;
 | 
			
		||||
    overflow: visible;
 | 
			
		||||
    padding-top: 1.2em;
 | 
			
		||||
  }
 | 
			
		||||
  pre.src:before {
 | 
			
		||||
    display: none;
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    background-color: white;
 | 
			
		||||
    top: -10px;
 | 
			
		||||
    right: 10px;
 | 
			
		||||
    padding: 3px;
 | 
			
		||||
    border: 1px solid black;
 | 
			
		||||
  }
 | 
			
		||||
  pre.src:hover:before { display: inline;}
 | 
			
		||||
  /* Languages per Org manual */
 | 
			
		||||
  pre.src-asymptote:before { content: 'Asymptote'; }
 | 
			
		||||
  pre.src-awk:before { content: 'Awk'; }
 | 
			
		||||
  pre.src-C:before { content: 'C'; }
 | 
			
		||||
  /* pre.src-C++ doesn't work in CSS */
 | 
			
		||||
  pre.src-clojure:before { content: 'Clojure'; }
 | 
			
		||||
  pre.src-css:before { content: 'CSS'; }
 | 
			
		||||
  pre.src-D:before { content: 'D'; }
 | 
			
		||||
  pre.src-ditaa:before { content: 'ditaa'; }
 | 
			
		||||
  pre.src-dot:before { content: 'Graphviz'; }
 | 
			
		||||
  pre.src-calc:before { content: 'Emacs Calc'; }
 | 
			
		||||
  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
 | 
			
		||||
  pre.src-fortran:before { content: 'Fortran'; }
 | 
			
		||||
  pre.src-gnuplot:before { content: 'gnuplot'; }
 | 
			
		||||
  pre.src-haskell:before { content: 'Haskell'; }
 | 
			
		||||
  pre.src-hledger:before { content: 'hledger'; }
 | 
			
		||||
  pre.src-java:before { content: 'Java'; }
 | 
			
		||||
  pre.src-js:before { content: 'Javascript'; }
 | 
			
		||||
  pre.src-latex:before { content: 'LaTeX'; }
 | 
			
		||||
  pre.src-ledger:before { content: 'Ledger'; }
 | 
			
		||||
  pre.src-lisp:before { content: 'Lisp'; }
 | 
			
		||||
  pre.src-lilypond:before { content: 'Lilypond'; }
 | 
			
		||||
  pre.src-lua:before { content: 'Lua'; }
 | 
			
		||||
  pre.src-matlab:before { content: 'MATLAB'; }
 | 
			
		||||
  pre.src-mscgen:before { content: 'Mscgen'; }
 | 
			
		||||
  pre.src-ocaml:before { content: 'Objective Caml'; }
 | 
			
		||||
  pre.src-octave:before { content: 'Octave'; }
 | 
			
		||||
  pre.src-org:before { content: 'Org mode'; }
 | 
			
		||||
  pre.src-oz:before { content: 'OZ'; }
 | 
			
		||||
  pre.src-plantuml:before { content: 'Plantuml'; }
 | 
			
		||||
  pre.src-processing:before { content: 'Processing.js'; }
 | 
			
		||||
  pre.src-python:before { content: 'Python'; }
 | 
			
		||||
  pre.src-R:before { content: 'R'; }
 | 
			
		||||
  pre.src-ruby:before { content: 'Ruby'; }
 | 
			
		||||
  pre.src-sass:before { content: 'Sass'; }
 | 
			
		||||
  pre.src-scheme:before { content: 'Scheme'; }
 | 
			
		||||
  pre.src-screen:before { content: 'Gnu Screen'; }
 | 
			
		||||
  pre.src-sed:before { content: 'Sed'; }
 | 
			
		||||
  pre.src-sh:before { content: 'shell'; }
 | 
			
		||||
  pre.src-sql:before { content: 'SQL'; }
 | 
			
		||||
  pre.src-sqlite:before { content: 'SQLite'; }
 | 
			
		||||
  /* additional languages in org.el's org-babel-load-languages alist */
 | 
			
		||||
  pre.src-forth:before { content: 'Forth'; }
 | 
			
		||||
  pre.src-io:before { content: 'IO'; }
 | 
			
		||||
  pre.src-J:before { content: 'J'; }
 | 
			
		||||
  pre.src-makefile:before { content: 'Makefile'; }
 | 
			
		||||
  pre.src-maxima:before { content: 'Maxima'; }
 | 
			
		||||
  pre.src-perl:before { content: 'Perl'; }
 | 
			
		||||
  pre.src-picolisp:before { content: 'Pico Lisp'; }
 | 
			
		||||
  pre.src-scala:before { content: 'Scala'; }
 | 
			
		||||
  pre.src-shell:before { content: 'Shell Script'; }
 | 
			
		||||
  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
 | 
			
		||||
  /* additional language identifiers per "defun org-babel-execute"
 | 
			
		||||
       in ob-*.el */
 | 
			
		||||
  pre.src-cpp:before  { content: 'C++'; }
 | 
			
		||||
  pre.src-abc:before  { content: 'ABC'; }
 | 
			
		||||
  pre.src-coq:before  { content: 'Coq'; }
 | 
			
		||||
  pre.src-groovy:before  { content: 'Groovy'; }
 | 
			
		||||
  /* additional language identifiers from org-babel-shell-names in
 | 
			
		||||
     ob-shell.el: ob-shell is the only babel language using a lambda to put
 | 
			
		||||
     the execution function name together. */
 | 
			
		||||
  pre.src-bash:before  { content: 'bash'; }
 | 
			
		||||
  pre.src-csh:before  { content: 'csh'; }
 | 
			
		||||
  pre.src-ash:before  { content: 'ash'; }
 | 
			
		||||
  pre.src-dash:before  { content: 'dash'; }
 | 
			
		||||
  pre.src-ksh:before  { content: 'ksh'; }
 | 
			
		||||
  pre.src-mksh:before  { content: 'mksh'; }
 | 
			
		||||
  pre.src-posh:before  { content: 'posh'; }
 | 
			
		||||
  /* Additional Emacs modes also supported by the LaTeX listings package */
 | 
			
		||||
  pre.src-ada:before { content: 'Ada'; }
 | 
			
		||||
  pre.src-asm:before { content: 'Assembler'; }
 | 
			
		||||
  pre.src-caml:before { content: 'Caml'; }
 | 
			
		||||
  pre.src-delphi:before { content: 'Delphi'; }
 | 
			
		||||
  pre.src-html:before { content: 'HTML'; }
 | 
			
		||||
  pre.src-idl:before { content: 'IDL'; }
 | 
			
		||||
  pre.src-mercury:before { content: 'Mercury'; }
 | 
			
		||||
  pre.src-metapost:before { content: 'MetaPost'; }
 | 
			
		||||
  pre.src-modula-2:before { content: 'Modula-2'; }
 | 
			
		||||
  pre.src-pascal:before { content: 'Pascal'; }
 | 
			
		||||
  pre.src-ps:before { content: 'PostScript'; }
 | 
			
		||||
  pre.src-prolog:before { content: 'Prolog'; }
 | 
			
		||||
  pre.src-simula:before { content: 'Simula'; }
 | 
			
		||||
  pre.src-tcl:before { content: 'tcl'; }
 | 
			
		||||
  pre.src-tex:before { content: 'TeX'; }
 | 
			
		||||
  pre.src-plain-tex:before { content: 'Plain TeX'; }
 | 
			
		||||
  pre.src-verilog:before { content: 'Verilog'; }
 | 
			
		||||
  pre.src-vhdl:before { content: 'VHDL'; }
 | 
			
		||||
  pre.src-xml:before { content: 'XML'; }
 | 
			
		||||
  pre.src-nxml:before { content: 'XML'; }
 | 
			
		||||
  /* add a generic configuration mode; LaTeX export needs an additional
 | 
			
		||||
     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
 | 
			
		||||
  pre.src-conf:before { content: 'Configuration File'; }
 | 
			
		||||
 | 
			
		||||
  table { border-collapse:collapse; }
 | 
			
		||||
  caption.t-above { caption-side: top; }
 | 
			
		||||
  caption.t-bottom { caption-side: bottom; }
 | 
			
		||||
  td, th { vertical-align:top;  }
 | 
			
		||||
  th.org-right  { text-align: center;  }
 | 
			
		||||
  th.org-left   { text-align: center;   }
 | 
			
		||||
  th.org-center { text-align: center; }
 | 
			
		||||
  td.org-right  { text-align: right;  }
 | 
			
		||||
  td.org-left   { text-align: left;   }
 | 
			
		||||
  td.org-center { text-align: center; }
 | 
			
		||||
  dt { font-weight: bold; }
 | 
			
		||||
  .footpara { display: inline; }
 | 
			
		||||
  .footdef  { margin-bottom: 1em; }
 | 
			
		||||
  .figure { padding: 1em; }
 | 
			
		||||
  .figure p { text-align: center; }
 | 
			
		||||
  .equation-container {
 | 
			
		||||
    display: table;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
  }
 | 
			
		||||
  .equation {
 | 
			
		||||
    vertical-align: middle;
 | 
			
		||||
  }
 | 
			
		||||
  .equation-label {
 | 
			
		||||
    display: table-cell;
 | 
			
		||||
    text-align: right;
 | 
			
		||||
    vertical-align: middle;
 | 
			
		||||
  }
 | 
			
		||||
  .inlinetask {
 | 
			
		||||
    padding: 10px;
 | 
			
		||||
    border: 2px solid gray;
 | 
			
		||||
    margin: 10px;
 | 
			
		||||
    background: #ffffcc;
 | 
			
		||||
  }
 | 
			
		||||
  #org-div-home-and-up
 | 
			
		||||
   { text-align: right; font-size: 70%; white-space: nowrap; }
 | 
			
		||||
  textarea { overflow-x: auto; }
 | 
			
		||||
  .linenr { font-size: smaller }
 | 
			
		||||
  .code-highlighted { background-color: #ffff00; }
 | 
			
		||||
  .org-info-js_info-navigation { border-style: none; }
 | 
			
		||||
  #org-info-js_console-label
 | 
			
		||||
    { font-size: 10px; font-weight: bold; white-space: nowrap; }
 | 
			
		||||
  .org-info-js_search-highlight
 | 
			
		||||
    { background-color: #ffff00; color: #000000; font-weight: bold; }
 | 
			
		||||
  .org-svg { width: 90%; }
 | 
			
		||||
  /*]]>*/-->
 | 
			
		||||
</style>
 | 
			
		||||
<meta name="author" content="Thomas Dehaeze" />
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
 | 
			
		||||
<script src="../js/jquery.min.js"></script>
 | 
			
		||||
<script src="../js/bootstrap.min.js"></script>
 | 
			
		||||
<script src="../js/jquery.stickytableheaders.min.js"></script>
 | 
			
		||||
<script src="../js/readtheorg.js"></script>
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
 | 
			
		||||
<!--/*--><![CDATA[/*><!--*/
 | 
			
		||||
     function CodeHighlightOn(elem, id)
 | 
			
		||||
     {
 | 
			
		||||
       var target = document.getElementById(id);
 | 
			
		||||
       if(null != target) {
 | 
			
		||||
         elem.cacheClassElem = elem.className;
 | 
			
		||||
         elem.cacheClassTarget = target.className;
 | 
			
		||||
         target.className = "code-highlighted";
 | 
			
		||||
         elem.className   = "code-highlighted";
 | 
			
		||||
       }
 | 
			
		||||
     }
 | 
			
		||||
     function CodeHighlightOff(elem, id)
 | 
			
		||||
     {
 | 
			
		||||
       var target = document.getElementById(id);
 | 
			
		||||
       if(elem.cacheClassElem)
 | 
			
		||||
         elem.className = elem.cacheClassElem;
 | 
			
		||||
       if(elem.cacheClassTarget)
 | 
			
		||||
         target.className = elem.cacheClassTarget;
 | 
			
		||||
     }
 | 
			
		||||
    /*]]>*///-->
 | 
			
		||||
// @license-end
 | 
			
		||||
</script>
 | 
			
		||||
<script>MathJax = {
 | 
			
		||||
          tex: {
 | 
			
		||||
            tags: 'ams',
 | 
			
		||||
            macros: {bm: ["\\boldsymbol{#1}",1],}
 | 
			
		||||
            }
 | 
			
		||||
          };
 | 
			
		||||
          </script>
 | 
			
		||||
          <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<div id="org-div-home-and-up">
 | 
			
		||||
@@ -232,11 +30,599 @@
 | 
			
		||||
 <a accesskey="H" href="../index.html"> HOME </a>
 | 
			
		||||
</div><div id="content">
 | 
			
		||||
<h1 class="title">Matlab Computation</h1>
 | 
			
		||||
<div id="table-of-contents">
 | 
			
		||||
<h2>Table of Contents</h2>
 | 
			
		||||
<div id="text-table-of-contents">
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#org2941be5">1. System Description and Analysis</a>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#org4222b45">1.1. System description</a></li>
 | 
			
		||||
<li><a href="#org80f8141">1.2. Equations</a></li>
 | 
			
		||||
<li><a href="#orgbb90994">1.3. Numerical Values</a></li>
 | 
			
		||||
<li><a href="#org3d04be0">1.4. Campbell Diagram</a></li>
 | 
			
		||||
<li><a href="#org8144360">1.5. Simscape Model</a></li>
 | 
			
		||||
<li><a href="#orga371e09">1.6. Comparison with the model</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><a href="#org912df6c">2. Integral Force Feedback</a>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#orge201c80">2.1. Numerical Values</a></li>
 | 
			
		||||
<li><a href="#orgbc26950">2.2. Equations</a></li>
 | 
			
		||||
<li><a href="#org92d4b18">2.3. Poles and Zeros</a></li>
 | 
			
		||||
<li><a href="#orgbb768e3">2.4. Simscape Model</a></li>
 | 
			
		||||
<li><a href="#orgdf8d677">2.5. IFF Plant</a></li>
 | 
			
		||||
<li><a href="#org3f264f4">2.6. Loop Gain</a></li>
 | 
			
		||||
<li><a href="#org7c25fbe">2.7. Root Locus</a></li>
 | 
			
		||||
<li><a href="#org82271cf">2.8. Modified IFF</a>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#org60bb927">2.8.1. Control Law</a></li>
 | 
			
		||||
<li><a href="#org6850379">2.8.2. Loop Gain</a></li>
 | 
			
		||||
<li><a href="#org7314eea">2.8.3. Root Locus</a></li>
 | 
			
		||||
<li><a href="#orgb4641d2">2.8.4. Optimal Gain</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><a href="#orgbdc5c77">3. Direct Velocity Feedback</a>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#org3f7448e">3.1. Equations</a></li>
 | 
			
		||||
<li><a href="#org84263dc">3.2. Numerical Values</a></li>
 | 
			
		||||
<li><a href="#orgbdad8de">3.3. Simscape Model</a></li>
 | 
			
		||||
<li><a href="#orge253615">3.4. DVF Plant</a></li>
 | 
			
		||||
<li><a href="#orgd61ece4">3.5. Loop Gain</a></li>
 | 
			
		||||
<li><a href="#orgce2b090">3.6. Root Locus</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Notations:
 | 
			
		||||
</p>
 | 
			
		||||
<ul class="org-ul">
 | 
			
		||||
<li>\(k\): Actuator’s Stiffness [N/m]</li>
 | 
			
		||||
<li>\(c\): Actuator’s Damping [N/(m/s)]</li>
 | 
			
		||||
<li>\(m\): Payload’s mass [kg]</li>
 | 
			
		||||
<li>\(\omega_0 = \sqrt{\frac{k}{m}}\): Resonance of the (non-rotating) mass-spring system [rad/s]</li>
 | 
			
		||||
<li>\(\Omega = \dot{\theta}\): rotation speed [rad/s]</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<colgroup>
 | 
			
		||||
<col  class="org-left" />
 | 
			
		||||
 | 
			
		||||
<col  class="org-left" />
 | 
			
		||||
 | 
			
		||||
<col  class="org-left" />
 | 
			
		||||
 | 
			
		||||
<col  class="org-left" />
 | 
			
		||||
</colgroup>
 | 
			
		||||
<thead>
 | 
			
		||||
<tr>
 | 
			
		||||
<th scope="col" class="org-left"> </th>
 | 
			
		||||
<th scope="col" class="org-left">Mathematical Notation</th>
 | 
			
		||||
<th scope="col" class="org-left">Matlab</th>
 | 
			
		||||
<th scope="col" class="org-left">Unit</th>
 | 
			
		||||
</tr>
 | 
			
		||||
</thead>
 | 
			
		||||
<tbody>
 | 
			
		||||
<tr>
 | 
			
		||||
<td class="org-left">Actuator Stiffness</td>
 | 
			
		||||
<td class="org-left">\(k\)</td>
 | 
			
		||||
<td class="org-left"><code>k</code></td>
 | 
			
		||||
<td class="org-left">N/m</td>
 | 
			
		||||
</tr>
 | 
			
		||||
 | 
			
		||||
<tr>
 | 
			
		||||
<td class="org-left">Actuator Damping</td>
 | 
			
		||||
<td class="org-left">\(c\)</td>
 | 
			
		||||
<td class="org-left"><code>c</code></td>
 | 
			
		||||
<td class="org-left">N/(m/s)</td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org2941be5" class="outline-2">
 | 
			
		||||
<h2 id="org2941be5"><span class="section-number-2">1</span> System Description and Analysis</h2>
 | 
			
		||||
<div class="outline-text-2" id="text-1">
 | 
			
		||||
<p>
 | 
			
		||||
<a id="org72741bf"></a>
 | 
			
		||||
</p>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org4222b45" class="outline-3">
 | 
			
		||||
<h3 id="org4222b45"><span class="section-number-3">1.1</span> System description</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-1-1">
 | 
			
		||||
<p>
 | 
			
		||||
The system consists of one 2 degree of freedom translation stage on top of a spindle (figure <a href="#org3ee83a5">1</a>).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="figs/rotating_xy_platform.pdf">figs/rotating_xy_platform.pdf</a>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The control inputs are the forces applied by the actuators of the translation stage (\(F_u\) and \(F_v\)).
 | 
			
		||||
As the translation stage is rotating around the Z axis due to the spindle, the forces are applied along \(u\) and \(v\).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The measurement is either the \(x-y\) displacement of the object located on top of the translation stage or the \(u-v\) displacement of the sample with respect to a fixed reference frame.
 | 
			
		||||
</p>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org80f8141" class="outline-3">
 | 
			
		||||
<h3 id="org80f8141"><span class="section-number-3">1.2</span> Equations</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-1-2">
 | 
			
		||||
<p>
 | 
			
		||||
Based on the Figure <a href="#org3ee83a5">1</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
\begin{equation}
 | 
			
		||||
\begin{bmatrix} d_u \\ d_v \end{bmatrix} =
 | 
			
		||||
\frac{\frac{1}{k}}{\left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2}
 | 
			
		||||
\begin{bmatrix}
 | 
			
		||||
  \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} & 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \\
 | 
			
		||||
  -2 \frac{\Omega}{\omega_0}\frac{s}{\omega_0}          & \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \\
 | 
			
		||||
\end{bmatrix}
 | 
			
		||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
 | 
			
		||||
\end{equation}
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgbb90994" class="outline-3">
 | 
			
		||||
<h3 id="orgbb90994"><span class="section-number-3">1.3</span> Numerical Values</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-1-3">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">k = 2;
 | 
			
		||||
m = 1;
 | 
			
		||||
c = 0.05;
 | 
			
		||||
xi = c/(2*sqrt(k*m));
 | 
			
		||||
 | 
			
		||||
w0 = sqrt(k/m);
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org3d04be0" class="outline-3">
 | 
			
		||||
<h3 id="org3d04be0"><span class="section-number-3">1.4</span> Campbell Diagram</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-1-4">
 | 
			
		||||
<p>
 | 
			
		||||
Compute the poles
 | 
			
		||||
</p>
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">wrs = linspace(0, 2, 51); % [rad/s]
 | 
			
		||||
 | 
			
		||||
polesvc = zeros(4, length(wrs));
 | 
			
		||||
 | 
			
		||||
for i = 1:length(wrs)
 | 
			
		||||
    wr = wrs(i);
 | 
			
		||||
    polei = pole(1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wrs(i)^2)/(w0^2))^2 + (2*wrs(i)*s/(w0^2))^2));
 | 
			
		||||
    [~, i_sort] = sort(imag(polei));
 | 
			
		||||
    polesvc(:, i) = polei(i_sort);
 | 
			
		||||
end
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org8144360" class="outline-3">
 | 
			
		||||
<h3 id="org8144360"><span class="section-number-3">1.5</span> Simscape Model</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-1-5">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">open('rotating_frame.slx');
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">k = 2;
 | 
			
		||||
m = 1;
 | 
			
		||||
c = 0.05;
 | 
			
		||||
xi = c/(2*sqrt(k*m));
 | 
			
		||||
 | 
			
		||||
w0 = sqrt(k/m);
 | 
			
		||||
wr = 0.1;
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">%% Name of the Simulink File
 | 
			
		||||
mdl = 'rotating_frame';
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
clear io; io_i = 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Fu'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Fv'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Tuv'], 1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Tuv'], 2, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">G = linearize(mdl, io, 0);
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
G.InputName  = {'Fu', 'Fv'};
 | 
			
		||||
G.OutputName = {'du', 'dv'};
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orga371e09" class="outline-3">
 | 
			
		||||
<h3 id="orga371e09"><span class="section-number-3">1.6</span> Comparison with the model</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-1-6">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">Ga = (1/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
 | 
			
		||||
     [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2), 2*wr*s/(w0^2) ; ...
 | 
			
		||||
      -2*wr*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)];
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">figure; bode(G, 'k-', Ga, 'r--')
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org912df6c" class="outline-2">
 | 
			
		||||
<h2 id="org912df6c"><span class="section-number-2">2</span> Integral Force Feedback</h2>
 | 
			
		||||
<div class="outline-text-2" id="text-2">
 | 
			
		||||
</div>
 | 
			
		||||
<div id="outline-container-orge201c80" class="outline-3">
 | 
			
		||||
<h3 id="orge201c80"><span class="section-number-3">2.1</span> Numerical Values</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-2-1">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">k = 1;
 | 
			
		||||
m = 1;
 | 
			
		||||
xi = 0.01;
 | 
			
		||||
c = 2*xi*sqrt(k*m);
 | 
			
		||||
w0 = sqrt(k/m);
 | 
			
		||||
wr = 0.1*w0;
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgbc26950" class="outline-3">
 | 
			
		||||
<h3 id="orgbc26950"><span class="section-number-3">2.2</span> Equations</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-2-2">
 | 
			
		||||
<p>
 | 
			
		||||
The sensed forces are equal to:
 | 
			
		||||
</p>
 | 
			
		||||
\begin{equation}
 | 
			
		||||
\begin{bmatrix} F_{um} \\ F_{vm} \end{bmatrix} =
 | 
			
		||||
\begin{bmatrix}
 | 
			
		||||
  1 & 0 \\
 | 
			
		||||
  0 & 1
 | 
			
		||||
\end{bmatrix}
 | 
			
		||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix} - (c s + k)
 | 
			
		||||
\begin{bmatrix} d_u \\ d_v \end{bmatrix}
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
<div class="important">
 | 
			
		||||
\begin{equation}
 | 
			
		||||
\begin{bmatrix} F_{um} \\ F_{vm} \end{bmatrix} =
 | 
			
		||||
\frac{1}{\left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2}
 | 
			
		||||
\begin{bmatrix}
 | 
			
		||||
  (\frac{s^2}{{\omega_0}^2} - \frac{\Omega^2}{{\omega_0}^2}) (\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2}) + (2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0})^2 & - (2 \xi \frac{s}{\omega_0} + 1) 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \\
 | 
			
		||||
  (2 \xi \frac{s}{\omega_0} + 1) 2 \frac{\Omega}{\omega_0}\frac{s}{\omega_0}          & (\frac{s^2}{{\omega_0}^2} - \frac{\Omega^2}{{\omega_0}^2}) (\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2}) + (2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0})^2 \\
 | 
			
		||||
\end{bmatrix}
 | 
			
		||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">Giffa = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
 | 
			
		||||
       [(s^2/w0^2 - wr^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)) + (2*wr*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*wr*s/(w0^2) ; ...
 | 
			
		||||
        (2*xi*s/w0 + 1)*2*wr*s/(w0^2), (s^2/w0^2 - wr^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))+ (2*wr*s/(w0^2))^2];
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org92d4b18" class="outline-3">
 | 
			
		||||
<h3 id="org92d4b18"><span class="section-number-3">2.3</span> Poles and Zeros</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-2-3">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">syms wr w0 xi positive
 | 
			
		||||
assumealso(w0 > wr)
 | 
			
		||||
syms x
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">z = (x^2/w0^2 - wr^2/w0^2)*((x^2)/(w0^2) + 1 - (wr^2)/(w0^2)) + (2*wr*x/(w0^2))^2 == 0
 | 
			
		||||
p = ((x^2)/(w0^2) + 1 - (wr^2)/(w0^2))^2 + (2*wr*x/(w0^2))^2 == 0
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">solve(p, x)
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">solve(z, x)
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The zeros are the roots of:
 | 
			
		||||
</p>
 | 
			
		||||
\begin{equation}
 | 
			
		||||
  \left( \frac{s^2}{{\omega_0}^2} - \frac{\Omega^2}{{\omega_0}^2} \right) \left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right) + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2 = 0
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Poles (without damping)
 | 
			
		||||
</p>
 | 
			
		||||
\begin{equation}
 | 
			
		||||
  \left(\begin{array}{c} -w_{0}\,1{}\mathrm{i}-\mathrm{wr}\,1{}\mathrm{i}\\ -w_{0}\,1{}\mathrm{i}+\mathrm{wr}\,1{}\mathrm{i}\\ w_{0}\,1{}\mathrm{i}-\mathrm{wr}\,1{}\mathrm{i}\\ w_{0}\,1{}\mathrm{i}+\mathrm{wr}\,1{}\mathrm{i} \end{array}\right)
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Zeros (without damping)
 | 
			
		||||
</p>
 | 
			
		||||
\begin{equation}
 | 
			
		||||
  \left(\begin{array}{c} -\sqrt{-\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2}\\ -\sqrt{\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2}\\ \sqrt{-\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2}\\ \sqrt{\frac{w_{0}\,\sqrt{{w_{0}}^2+8\,{\mathrm{wr}}^2}}{2}-\frac{{w_{0}}^2}{2}-{\mathrm{wr}}^2} \end{array}\right)
 | 
			
		||||
\end{equation}
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgbb768e3" class="outline-3">
 | 
			
		||||
<h3 id="orgbb768e3"><span class="section-number-3">2.4</span> Simscape Model</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-2-4">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">%% Name of the Simulink File
 | 
			
		||||
mdl = 'rotating_frame';
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
clear io; io_i = 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Fu'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Fv'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Tuv'], 5, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Tuv'], 6, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">Giff = linearize(mdl, io, 0);
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
Giff.InputName  = {'Fu', 'Fv'};
 | 
			
		||||
Giff.OutputName = {'Fmu', 'Fmv'};
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">figure; bode(Giff, Giffa)
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgdf8d677" class="outline-3">
 | 
			
		||||
<h3 id="orgdf8d677"><span class="section-number-3">2.5</span> IFF Plant</h3>
 | 
			
		||||
</div>
 | 
			
		||||
<div id="outline-container-org3f264f4" class="outline-3">
 | 
			
		||||
<h3 id="org3f264f4"><span class="section-number-3">2.6</span> Loop Gain</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-2-6">
 | 
			
		||||
<p>
 | 
			
		||||
Let’s take \(\Omega = \frac{\omega_0}{10}\).
 | 
			
		||||
</p>
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">ws = 0.1*w0;
 | 
			
		||||
G_iff = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))^2 + (2*ws*s/(w0^2))^2) * ...
 | 
			
		||||
        [(s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2)) + (2*ws*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*ws*s/(w0^2) ; ...
 | 
			
		||||
         (2*xi*s/w0 + 1)*2*ws*s/(w0^2), (s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))+ (2*ws*s/(w0^2))^2];
 | 
			
		||||
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org7c25fbe" class="outline-3">
 | 
			
		||||
<h3 id="org7c25fbe"><span class="section-number-3">2.7</span> Root Locus</h3>
 | 
			
		||||
</div>
 | 
			
		||||
<div id="outline-container-org82271cf" class="outline-3">
 | 
			
		||||
<h3 id="org82271cf"><span class="section-number-3">2.8</span> Modified IFF</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-2-8">
 | 
			
		||||
</div>
 | 
			
		||||
<div id="outline-container-org60bb927" class="outline-4">
 | 
			
		||||
<h4 id="org60bb927"><span class="section-number-4">2.8.1</span> Control Law</h4>
 | 
			
		||||
<div class="outline-text-4" id="text-2-8-1">
 | 
			
		||||
<p>
 | 
			
		||||
Let’s take the integral feedback controller as a low pass filter (pseudo integrator):
 | 
			
		||||
</p>
 | 
			
		||||
\begin{equation}
 | 
			
		||||
  K_{\text{IFF}} = \begin{bmatrix}
 | 
			
		||||
  g\frac{\omega_i}{\omega_i + s} & 0 \\
 | 
			
		||||
  0 & g\frac{\omega_i}{\omega_i + s}
 | 
			
		||||
\end{bmatrix}
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">xi = 0.005;
 | 
			
		||||
w0 = 1;
 | 
			
		||||
ws = 0.1*w0;
 | 
			
		||||
 | 
			
		||||
G_iff = 1/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))^2 + (2*ws*s/(w0^2))^2) * ...
 | 
			
		||||
        [(s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2)) + (2*ws*s/(w0^2))^2, - (2*xi*s/w0 + 1)*2*ws*s/(w0^2) ; ...
 | 
			
		||||
         (2*xi*s/w0 + 1)*2*ws*s/(w0^2), (s^2/w0^2 - ws^2/w0^2)*((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (ws^2)/(w0^2))+ (2*ws*s/(w0^2))^2];
 | 
			
		||||
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">g = 100;
 | 
			
		||||
wi = ws;
 | 
			
		||||
 | 
			
		||||
K_iff = (g/(1+s/wi))*eye(2);
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org6850379" class="outline-4">
 | 
			
		||||
<h4 id="org6850379"><span class="section-number-4">2.8.2</span> Loop Gain</h4>
 | 
			
		||||
</div>
 | 
			
		||||
<div id="outline-container-org7314eea" class="outline-4">
 | 
			
		||||
<h4 id="org7314eea"><span class="section-number-4">2.8.3</span> Root Locus</h4>
 | 
			
		||||
</div>
 | 
			
		||||
<div id="outline-container-orgb4641d2" class="outline-4">
 | 
			
		||||
<h4 id="orgb4641d2"><span class="section-number-4">2.8.4</span> Optimal Gain</h4>
 | 
			
		||||
<div class="outline-text-4" id="text-2-8-4">
 | 
			
		||||
<p>
 | 
			
		||||
The DC gain for Giff is (for \(\Omega < \omega_0\)):
 | 
			
		||||
</p>
 | 
			
		||||
\begin{equation}
 | 
			
		||||
  G_{\text{IFF}}(\omega = 0) = \frac{1}{1 - \frac{{\omega_0}^2}{\Omega^2}} \begin{bmatrix}
 | 
			
		||||
    1 & 0 \\
 | 
			
		||||
    0 & 1
 | 
			
		||||
  \end{bmatrix}
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The maximum gain where is system is still stable is
 | 
			
		||||
</p>
 | 
			
		||||
\begin{equation}
 | 
			
		||||
  g_\text{max} = \frac{{\omega_0}^2}{\Omega^2} - 1
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Let’s find the gain that maximize the simultaneous damping of the two modes.
 | 
			
		||||
</p>
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">K_opt = (opt_gain/(1+s/wi))*eye(2);
 | 
			
		||||
 | 
			
		||||
G_cl = feedback(G_iff, K_opt);
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgbdc5c77" class="outline-2">
 | 
			
		||||
<h2 id="orgbdc5c77"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
 | 
			
		||||
<div class="outline-text-2" id="text-3">
 | 
			
		||||
</div>
 | 
			
		||||
<div id="outline-container-org3f7448e" class="outline-3">
 | 
			
		||||
<h3 id="org3f7448e"><span class="section-number-3">3.1</span> Equations</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-3-1">
 | 
			
		||||
<p>
 | 
			
		||||
The sensed relative velocity are equal to:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<div class="important">
 | 
			
		||||
\begin{equation}
 | 
			
		||||
\begin{bmatrix} \dot{d}_u \\ \dot{d}_v \end{bmatrix} =
 | 
			
		||||
\frac{s \frac{1}{k}}{\left( \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \right)^2 + \left( 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \right)^2}
 | 
			
		||||
\begin{bmatrix}
 | 
			
		||||
  \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} & 2 \frac{\Omega}{\omega_0} \frac{s}{\omega_0} \\
 | 
			
		||||
  -2 \frac{\Omega}{\omega_0}\frac{s}{\omega_0}          & \frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1 - \frac{{\Omega}^2}{{\omega_0}^2} \\
 | 
			
		||||
\end{bmatrix}
 | 
			
		||||
\begin{bmatrix} F_u \\ F_v \end{bmatrix}
 | 
			
		||||
\end{equation}
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-org84263dc" class="outline-3">
 | 
			
		||||
<h3 id="org84263dc"><span class="section-number-3">3.2</span> Numerical Values</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-3-2">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">k = 1;
 | 
			
		||||
m = 1;
 | 
			
		||||
c = 0.05;
 | 
			
		||||
xi = c/(2*sqrt(k*m));
 | 
			
		||||
 | 
			
		||||
w0 = sqrt(k/m);
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">Ga = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
 | 
			
		||||
     [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2), 2*wr*s/(w0^2) ; ...
 | 
			
		||||
      -2*wr*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)];
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgbdad8de" class="outline-3">
 | 
			
		||||
<h3 id="orgbdad8de"><span class="section-number-3">3.3</span> Simscape Model</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-3-3">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">%% Name of the Simulink File
 | 
			
		||||
mdl = 'rotating_frame';
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
clear io; io_i = 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Fu'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Fv'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Tuv'], 3, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
io(io_i) = linio([mdl, '/Tuv'], 4, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">G = linearize(mdl, io, 0);
 | 
			
		||||
 | 
			
		||||
%% Input/Output definition
 | 
			
		||||
G.InputName  = {'Fu', 'Fv'};
 | 
			
		||||
G.OutputName = {'Vu', 'Vv'};
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orge253615" class="outline-3">
 | 
			
		||||
<h3 id="orge253615"><span class="section-number-3">3.4</span> DVF Plant</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-3-4">
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">figure; bode(G, Ga)
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgd61ece4" class="outline-3">
 | 
			
		||||
<h3 id="orgd61ece4"><span class="section-number-3">3.5</span> Loop Gain</h3>
 | 
			
		||||
<div class="outline-text-3" id="text-3-5">
 | 
			
		||||
<p>
 | 
			
		||||
Let’s take \(\Omega = \frac{\omega_0}{10}\).
 | 
			
		||||
</p>
 | 
			
		||||
<div class="org-src-container">
 | 
			
		||||
<pre class="src src-matlab">ws = 0.1*w0;
 | 
			
		||||
G_dvf = (s/k)/(((s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2))^2 + (2*wr*s/(w0^2))^2) * ...
 | 
			
		||||
     [(s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2), 2*wr*s/(w0^2) ; ...
 | 
			
		||||
      -2*wr*s/(w0^2), (s^2)/(w0^2) + 2*xi*s/w0 + 1 - (wr^2)/(w0^2)];
 | 
			
		||||
 | 
			
		||||
</pre>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div id="outline-container-orgce2b090" class="outline-3">
 | 
			
		||||
<h3 id="orgce2b090"><span class="section-number-3">3.6</span> Root Locus</h3>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
<div id="postamble" class="status">
 | 
			
		||||
<p class="author">Author: Dehaeze Thomas</p>
 | 
			
		||||
<p class="date">Created: 2020-03-16 lun. 10:52</p>
 | 
			
		||||
<p class="author">Author: Thomas Dehaeze</p>
 | 
			
		||||
<p class="date">Created: 2020-06-10 mer. 10:17</p>
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1545
									
								
								matlab/index.org
									
									
									
									
									
								
							
							
						
						
									
										1545
									
								
								matlab/index.org
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								matlab/matlab/rotating_frame.slx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/matlab/rotating_frame.slx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								matlab/rotating_frame.slxc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/rotating_frame.slxc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								matlab/slprj/sim/varcache/rotating_frame/checksumOfCache.mat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/slprj/sim/varcache/rotating_frame/checksumOfCache.mat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<MF0 version="1.1" packageUris="http://schema.mathworks.com/mf0/SlCache/19700101">
 | 
			
		||||
  <slcache.FileAttributes type="slcache.FileAttributes" uuid="15bc2eb6-a155-4074-be73-5774ec44e8b6">
 | 
			
		||||
    <checksum>VGJCKM9/+mTYcitIBBt14A==</checksum>
 | 
			
		||||
  </slcache.FileAttributes>
 | 
			
		||||
</MF0>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								matlab/slprj/sim/varcache/rotating_frame/varInfo.mat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								matlab/slprj/sim/varcache/rotating_frame/varInfo.mat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user