Control package: Difference between revisions

Jump to navigation Jump to search
1,321 bytes removed ,  14 June 2019
→‎Model Interconnection: Strip empty columns.
(→‎Model Interconnection: Strip empty columns.)
(20 intermediate revisions by 7 users not shown)
Line 7: Line 7:
{| class="wikitable"  
{| class="wikitable"  
|-
|-
! Chapter !! Function !! Implemented !! File !! Number of Tests !! Status !! SLICOT functions !! Priority (0-2)
! Chapter !! Function !! Implemented !! File
|-
|-
| rowspan="11" | Basic Models || tf    || style="background: green;" | yes || @tf/tf.m   || || || ||
| rowspan="11" | Basic Models || tf    || style="background: green;" | yes || @tf/tf.m
|-
|-
|                                zpk    || style="background: green;" | yes || zpk.m     || || || ||
|                                zpk    || style="background: green;" | yes || zpk.m
|-
|-
|                                ss    || style="background: green;" | yes || @ss/ss.m   || || || ||
|                                ss    || style="background: green;" | yes || @ss/ss.m
|-
|-
|                                frd    || style="background: green;" | yes || @frd/frd.m || || || ||
|                                frd    || style="background: green;" | yes || @frd/frd.m
|-  
|-  
|                                pid    || style="background: red;"  | no  ||            || || || ||
|                                pid    || style="background: red;"  | no  ||
|-
|-
|                                pidstd || style="background: red;"  | no  ||            || || || ||
|                                pidstd || style="background: red;"  | no  ||
|-
|-
|                                pid2  || style="background: red;"  | no  ||            || || || ||
|                                pid2  || style="background: red;"  | no  ||
|-
|-
|                                dss    || style="background: green;" | yes || @lti/dss.m || || || ||
|                                dss    || style="background: green;" | yes || @lti/dss.m
|-
|-
|                                drss  || style="background: red;"  | no  ||            || || || ||
|                                drss  || style="background: red;"  | no  ||
|-
|-
|                                filt  || style="background: green;" | yes || filt.m     || || || ||
|                                filt  || style="background: green;" | yes || filt.m
|-
|-
|                                rss    || style="background: red;"  | no  ||            || || || ||
|                                rss    || style="background: red;"  | no  ||
|-
|-
| rowspan="24" | Tunable Models || ltiblock.gain      || style="background: red;" | no || || || || ||
| rowspan="24" | Tunable Models || ltiblock.gain      || style="background: red;" | no ||
|-
|-
|                                  ltiblock.pid      || style="background: red;" | no || || || || ||
|                                  ltiblock.pid      || style="background: red;" | no ||
|-
|-
|                                  ltiblock.pid2      || style="background: red;" | no || || || || ||
|                                  ltiblock.pid2      || style="background: red;" | no ||
|-
|-
|                                  ltiblock.ss        || style="background: red;" | no || || || || ||
|                                  ltiblock.ss        || style="background: red;" | no ||
|-
|-
|                                  ltiblock.tf        || style="background: red;" | no || || || || ||
|                                  ltiblock.tf        || style="background: red;" | no ||
|-
|-
|                                  realp              || style="background: red;" | no || || || || ||
|                                  realp              || style="background: red;" | no ||
|-
|-
|                                  AnalysisPoint      || style="background: red;" | no || || || || ||
|                                  AnalysisPoint      || style="background: red;" | no ||
|-
|-
|                                  genss              || style="background: red;" | no || || || || ||
|                                  genss              || style="background: red;" | no ||
|-
|-
|                                  genfrd            || style="background: red;" | no || || || || ||
|                                  genfrd            || style="background: red;" | no ||
|-
|-
|                                  genmat            || style="background: red;" | no || || || || ||
|                                  genmat            || style="background: red;" | no ||
|-
|-
|                                  getLoopTransfer    || style="background: red;" | no || || || || ||
|                                  getLoopTransfer    || style="background: red;" | no ||
|-
|-
|                                  getIOTransfer      || style="background: red;" | no || || || || ||
|                                  getIOTransfer      || style="background: red;" | no ||
|-
|-
|                                  getSensitivity    || style="background: red;" | no || || || || ||
|                                  getSensitivity    || style="background: red;" | no ||
|-
|-
|                                  getCompSensitivity || style="background: red;" | no || || || || ||
|                                  getCompSensitivity || style="background: red;" | no ||
|-
|-
|                                  getPoints          || style="background: red;" | no || || || || ||
|                                  getPoints          || style="background: red;" | no ||
|-
|-
|                                  replaceBlock      || style="background: red;" | no || || || || ||
|                                  replaceBlock      || style="background: red;" | no ||
|-
|-
|                                  getValue          || style="background: red;" | no || || || || ||
|                                  getValue          || style="background: red;" | no ||
|-
|-
|                                  setValue          || style="background: red;" | no || || || || ||
|                                  setValue          || style="background: red;" | no ||
|-
|-
|                                  getBlockValue      || style="background: red;" | no || || || || ||
|                                  getBlockValue      || style="background: red;" | no ||
|-
|-
|                                  setBlockValue      || style="background: red;" | no || || || || ||
|                                  setBlockValue      || style="background: red;" | no ||
|-
|-
|                                  showBlockValue    || style="background: red;" | no || || || || ||
|                                  showBlockValue    || style="background: red;" | no ||
|-
|-
|                                  showTunable        || style="background: red;" | no || || || || ||
|                                  showTunable        || style="background: red;" | no ||
|-
|-
|                                  nblocks            || style="background: red;" | no || || || || ||
|                                  nblocks            || style="background: red;" | no ||
|-
|-
|                                  getLFTModel        || style="background: red;" | no || || || || ||
|                                  getLFTModel        || style="background: red;" | no ||
|-
|-
| rowspan="9" | Model with Time Delays || pade            || style="background: red;"  | no  ||          || || || ||
| rowspan="9" | Model with Time Delays || pade            || style="background: red;"  | no  ||
|-
|-
|                                        absorbDelay      || style="background: red;"  | no  ||          || || || ||
|                                        absorbDelay      || style="background: red;"  | no  ||
|-
|-
|                                        thiran          || style="background: green;" | yes || thiran.m || || || ||
|                                        thiran          || style="background: green;" | yes || thiran.m
|-
|-
|                                        hasdelay        || style="background: red;"  | no  ||          || || || ||
|                                        hasdelay        || style="background: red;"  | no  ||
|-
|-
|                                        hasInternalDelay || style="background: red;"  | no  ||          || || || ||
|                                        hasInternalDelay || style="background: red;"  | no  ||
|-
|-
|                                        totaldelay      || style="background: red;"  | no  ||          || || || ||
|                                        totaldelay      || style="background: red;"  | no  ||
|-
|-
|                                        delayss          || style="background: red;"  | no  ||          || || || ||
|                                        delayss          || style="background: red;"  | no  ||
|-
|-
|                                        setDelayModel    || style="background: red;"  | no  ||          || || || ||
|                                        setDelayModel    || style="background: red;"  | no  ||
|-
|-
|                                        getDelayModel    || style="background: red;"  | no  ||          || || || ||
|                                        getDelayModel    || style="background: red;"  | no  ||
|-
|-
| rowspan="26" | Model Attributes || get          || style="background: green;" | yes || @iddata/get.m     || || || ||
| rowspan="26" | Model Attributes || get          || style="background: green;" | yes || @iddata/get.m
|-
|-
|                                    set          || style="background: green;" | yes || @iddata/set.m     || || || ||
|                                    set          || style="background: green;" | yes || @iddata/set.m
|-
|-
|                                    tfdata      || style="background: green;" | yes || @lti/tfdata.m     || || || ||
|                                    tfdata      || style="background: green;" | yes || @lti/tfdata.m
|-
|-
|                                    zpkdata      || style="background: green;" | yes || @lti/zpkdata.m   || || || ||
|                                    zpkdata      || style="background: green;" | yes || @lti/zpkdata.m
|-
|-
|                                    ssdata      || style="background: green;" | yes || @lti/ssdata.m     || || || ||
|                                    ssdata      || style="background: green;" | yes || @lti/ssdata.m
|-
|-
|                                    frdata      || style="background: green;" | yes || @lti/frdata.m     || || || ||
|                                    frdata      || style="background: green;" | yes || @lti/frdata.m
|-
|-
|                                    piddata      || style="background: red;"  | no  ||                  || || || ||
|                                    piddata      || style="background: red;"  | no  ||
|-
|-
|                                    pidstddata  || style="background: red;"  | no  ||                  || || || ||
|                                    pidstddata  || style="background: red;"  | no  ||
|-
|-
|                                    piddata2    || style="background: red;"  | no  ||                  || || || ||
|                                    piddata2    || style="background: red;"  | no  ||
|-
|-
|                                    pidstddata2  || style="background: red;"  | no  ||                  || || || ||
|                                    pidstddata2  || style="background: red;"  | no  ||
|-
|-
|                                    dssdata      || style="background: green;" | yes || @lti/dssdata.m   || || || ||
|                                    dssdata      || style="background: green;" | yes || @lti/dssdata.m
|-
|-
|                                    chgFreqUnit  || style="background: red;"  | no  ||                  || || || ||
|                                    chgFreqUnit  || style="background: red;"  | no  ||
|-
|-
|                                    chgTimeUnit  || style="background: red;"  | no  ||                  || || || ||
|                                    chgTimeUnit  || style="background: red;"  | no  ||
|-
|-
|                                    isct        || style="background: green;" | yes || @lti/isct.m       || || || ||
|                                    isct        || style="background: green;" | yes || @lti/isct.m
|-
|-
|                                    isdt        || style="background: green;" | yes || @lti/isdt.m       || || || ||
|                                    isdt        || style="background: green;" | yes || @lti/isdt.m
|-
|-
|                                    isempty      || style="background: green;" | yes || built-in function || || || ||
|                                    isempty      || style="background: green;" | yes || built-in function
|-
|-
|                                    isfinite    || style="background: green;" | yes || built-in function || || || ||
|                                    isfinite    || style="background: green;" | yes || built-in function
|-
|-
|                                    isParametric || style="background: red;"  | no  ||                  || || || ||
|                                    isParametric || style="background: red;"  | no  ||
|-
|-
|                                    isproper    || style="background: red;"  | no  ||                  || || || ||
|                                    isproper    || style="background: red;"  | no  ||
|-
|-
|                                    isreal      || style="background: green;" | yes || built-in function || || || ||
|                                    isreal      || style="background: green;" | yes || built-in function
|-
|-
|                                    isiso        || style="background: red;"  | no  ||                  || || || ||
|                                    isiso        || style="background: red;"  | no  ||
|-
|-
|                                    isstable    || style="background: green;" | yes || @lti/isstable.m   || || || ||
|                                    isstable    || style="background: green;" | yes || @lti/isstable.m
|-
|-
|                                    isstatic    || style="background: red;"  | no  ||                  || || || ||
|                                    isstatic    || style="background: red;"  | no  ||
|-
|-
|                                    order        || style="background: red;"  | no  ||                  || || || ||
|                                    order        || style="background: red;"  | no  ||
|-
|-
|                                    ndims        || style="background: green;" | yes || built-in function || || || ||
|                                    ndims        || style="background: green;" | yes || built-in function
|-
|-
|                                    size        || style="background: green;" | yes || built-in function || || || ||
|                                    size        || style="background: green;" | yes || built-in function
|-
|-
| rowspan="5" | Model Arrays || stack  || style="background: red;"  | no  ||                  || || || ||
| rowspan="5" | Model Arrays || stack  || style="background: red;"  | no  ||
|-
|-
|                              nmodels || style="background: red;"  | no  ||                  || || || ||
|                              nmodels || style="background: red;"  | no  ||
|-
|-
|                              permute || style="background: green;" | yes || built-in function || || || ||
|                              permute || style="background: green;" | yes || built-in function
|-
|-
|                              reshape || style="background: green;" | yes || built-in function || || || ||
|                              reshape || style="background: green;" | yes || built-in function
|-
|-
|                              repsys  || style="background: green;" | yes || repsys.m         || || || ||
|                              repsys  || style="background: green;" | yes || repsys.m
|-
|-
|}
|}
Line 165: Line 165:
{| class="wikitable"  
{| class="wikitable"  
|-
|-
! Function !! Implemented !! File !! Number of Tests !! Status !! SLICOT functions !! Priority (0-2)
! Function !! Implemented !! File
|-
|-
| feedback || style="background: green;" | yes || @lti/feedback.m ||  || || ||
| feedback || style="background: green;" | yes || @lti/feedback.m
|-
|-
| connect || style="background: green;" | yes || @lti/connect.m ||  || || ||
| connect || style="background: green;" | yes || @lti/connect.m
|-
|-
| sumblk || style="background: green;" | yes || sumblk.m ||  || || ||
| sumblk || style="background: green;" | yes || sumblk.m
|-
|-
| series || style="background: red;" | no ||  ||  || || ||
| series || style="background: green;" | yes || @lti/series.m
|-
|-
| parallel || style="background: red;" | no ||  ||  || || ||
| parallel || style="background: green;" | yes || @lti/parallel.m
|-
|-
| append || style="background: green;" | yes || append.m ||  || || ||
| append || style="background: green;" | yes || append.m
|-
|-
| blkdiag || style="background: green;" | yes || @lti/blkdiag.m ||  || || ||
| blkdiag || style="background: green;" | yes || @lti/blkdiag.m
|-
|-
| imp2exp || style="background: red;" | no ||  ||  || || ||
| imp2exp || style="background: red;" | no ||
|-
|-
| inv || style="background: green;" | yes || built-in function ||  || || ||
| inv || style="background: green;" | yes || built-in function
|-
|-
| lft || style="background: red;" | no ||  ||  || || ||
| lft || style="background: red;" | no ||
|-
|-
| connectOptions || style="background: red;" | no ||  ||  || || ||
| connectOptions || style="background: red;" | no ||
|-
|-
|}
|}
Line 317: Line 317:
| getPeakGain || style="background: red;" | no ||  ||  || || ||
| getPeakGain || style="background: red;" | no ||  ||  || || ||
|-
|-
| rowspan="10" | Stability Analysis || pole || style="background: green;" | yes || @lti/pole.m ||  || || ||
| rowspan="11" | Stability Analysis || pole || style="background: green;" | yes || @lti/pole.m ||  || || ||
|-
|-
| zero || style="background: green;" | yes || @lti/zero.m ||  || || ||
| zero || style="background: green;" | yes || @lti/zero.m ||  || || ||
|-
|-
| damp || style="background: red;" | no || ||  || || ||
| damp || style="background: green;" | yes || damp.m ||  || || ||
|-
|-
| dsort || style="background: red;" | no || ||  || || ||
| dsort || style="background: green;" | yes || dsort.m ||  || || ||
|-
|-
| esort || style="background: red;" | no || ||  || || ||
| esort || style="background: green;" | yes || esort.m ||  || || ||
|-
|-
| tzero || style="background: red;" | no ||  ||  || || ||
| tzero || style="background: red;" | no ||  ||  || || ||
|-
| pzmap || style="background: green;" | yes || pzmap.m ||  || || ||
|-
|-
| pzplot || style="background: red;" | no ||  ||  || || ||
| pzplot || style="background: red;" | no ||  ||  || || ||
Line 373: Line 375:
| pidtuneOptions || style="background: red;" | no ||  ||  || || ||
| pidtuneOptions || style="background: red;" | no ||  ||  || || ||
|-
|-
| rowspan="4" | SISO Feedback Loops || rlocus || style="background: green;" | yes || rlocus.m  ||  || || ||
| rowspan="5" | SISO Feedback Loops || rlocus || style="background: green;" | yes || rlocus.m ||  || || ||
|-
| sgrid || style="background: red;" | no || ||  || || ||
|-
|-
| rlocusplot || style="background: red;" | no ||  ||  || || ||
| rlocusplot || style="background: red;" | no ||  ||  || || ||
Line 503: Line 507:
   ymajorgrids,  
   ymajorgrids,  
   enlarge x limits=false,
   enlarge x limits=false,
  xmode=log,
]  
]  
   \nextgroupplot[
   \nextgroupplot[
     title={Bode Diagram of $P$},
     title={Bode Diagram of $P$},
    xmode=log,
     ylabel={Magnitude / \si{\decibel}},
     ylabel={Magnitude / \si{\decibel}},
   ]
   ]
   \addplot[blue,line width=1pt] table[x index=0,y index=1]{\datatable};  
   \addplot[blue,line width=1pt] table[x index=0,y index=1]{\datatable};  
   \nextgroupplot[
   \nextgroupplot[
    xmode=log,
     xlabel={Frequency / \si{\radian\per\second}},
     xlabel={Frequency / \si{\radian\per\second}},
     ylabel={Phase / \si{\degree}},
     ylabel={Phase / \si{\degree}},
Line 528: Line 531:


=== Inverted Pendulum ===
=== Inverted Pendulum ===
==== Model ====


A nonlinear model of the inverted pendulum can be derived by
A nonlinear model of the inverted pendulum can be derived by
Line 584: Line 589:
</math>
</math>


and by dividing the state variables by the input one obtains the transfer functions
==== Transfer functions ====
 
By dividing the state variables by the input one obtains the transfer functions


<math>
<math>
Line 639: Line 646:
</syntaxhighlight>}}
</syntaxhighlight>}}


one obtains the Bode plots of the two transfer functions.
one obtains the bode diagrams of the two transfer functions.
 
<gallery mode="nolines">
File:bode_g1.png|Bode diagram of the cart movement transfer function.
File:bode_g2.png|Bode diagram of the pendulums rotation transfer function.
</gallery>
 
==References==
<references />


<div><ul>
<li style="display: inline-block;"> [[File:bode_g1.png|frame|Bode diagram of the cart movement transfer function.]] </li>
<li style="display: inline-block;"> [[File:bode_g2.png|frame|Bode diagram of the pendulums rotation transfer function.]] </li>
</ul></div>


[[Category:Octave-Forge]]
[[Category:Octave Forge]]

Navigation menu