Editing Control package
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 7: | Line 7: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Chapter !! Function !! Implemented !! File | ! Chapter !! Function !! Implemented !! File !! Number of Tests !! Status !! SLICOT functions !! Priority (0-2) | ||
|- | |- | ||
| 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: | | pid || style="background: red;" | no || || || || || | ||
|- | |- | ||
| pidstd || style="background: | | 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 | ! Function !! Implemented !! File !! Number of Tests !! Status !! SLICOT functions !! Priority (0-2) | ||
|- | |- | ||
| 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: | | series || style="background: red;" | no || || || || || | ||
|- | |- | ||
| parallel || style="background: | | parallel || style="background: red;" | no || || || || || | ||
|- | |- | ||
| 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=" | | rowspan="10" | 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: | | damp || style="background: red;" | no || || || || || | ||
|- | |- | ||
| dsort || style="background: | | dsort || style="background: red;" | no || || || || || | ||
|- | |- | ||
| esort || style="background: | | esort || style="background: red;" | no || || || || || | ||
|- | |- | ||
| tzero || style="background: red;" | no || || || || || | | tzero || style="background: red;" | no || || || || || | ||
|- | |- | ||
| pzplot || style="background: red;" | no || || || || || | | pzplot || style="background: red;" | no || || || || || | ||
Line 375: | Line 373: | ||
| pidtuneOptions || style="background: red;" | no || || || || || | | pidtuneOptions || style="background: red;" | no || || || || || | ||
|- | |- | ||
| rowspan=" | | rowspan="4" | SISO Feedback Loops || rlocus || style="background: green;" | yes || rlocus.m || || || || | ||
|- | |- | ||
| rlocusplot || style="background: red;" | no || || || || || | | rlocusplot || style="background: red;" | no || || || || || | ||
Line 409: | Line 405: | ||
| norm || style="background: green;" | yes || @lti/norm.m || || || || | | norm || style="background: green;" | yes || @lti/norm.m || || || || | ||
|- | |- | ||
| rowspan=" | | rowspan="3" | Pole Placement || estim || style="background: green;" | yes || estim.m || || || || | ||
|- | |- | ||
| place || style="background: green;" | yes || place.m || || || || | | place || style="background: green;" | yes || place.m || || || || | ||
|- | |- | ||
| reg || style="background: red;" | no || || || || || | |||
| reg || style="background: red;" | no || || || || | |||
|- | |- | ||
|} | |} | ||
Line 440: | Line 434: | ||
|- | |- | ||
| gdare || style="background: red;" | no || || || || || | | gdare || style="background: red;" | no || || || || || | ||
|- | |- | ||
| ctrb || style="background: green;" | yes || ctrb.m || || || || | | ctrb || style="background: green;" | yes || ctrb.m || || || || | ||
Line 471: | Line 461: | ||
#add some common markers like the tangent line at the origin, which crosses lim(n->inf) f(t) at t=T1 | #add some common markers like the tangent line at the origin, which crosses lim(n->inf) f(t) at t=T1 | ||
hold on | hold on | ||
plot ([0 T1], [0 1], " | plot ([0 T1], [0 1], "g") | ||
plot ([T1 T1], [0 1], " | plot ([T1 T1], [0 1], "k") | ||
plot ([0 T1], [1-1/e 1-1/e], "m") | |||
hold off | hold off | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
Line 512: | Line 503: | ||
ymajorgrids, | ymajorgrids, | ||
enlarge x limits=false, | enlarge x limits=false, | ||
] | ] | ||
\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 536: | Line 528: | ||
=== Inverted Pendulum === | === Inverted Pendulum === | ||
A nonlinear model of the inverted pendulum can be derived by | A nonlinear model of the inverted pendulum can be derived by | ||
Line 594: | Line 584: | ||
</math> | </math> | ||
and by dividing the state variables by the input one obtains the transfer functions | |||
<math> | <math> | ||
Line 651: | Line 639: | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
one obtains the | one obtains the Bode plots 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 /> | |||
[[Category:Octave Forge]] | [[Category:Octave-Forge]] |