changeset 9361:e8ba2542117e octave-forge

control-devel: touch up example
author paramaniac
date Fri, 20 Jan 2012 15:42:58 +0000
parents 8a461ce54ed3
children 07e770fd6f84
files extra/control-devel/devel/madievski.m
diffstat 1 files changed, 58 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- a/extra/control-devel/devel/madievski.m	Thu Jan 19 18:14:57 2012 +0000
+++ b/extra/control-devel/devel/madievski.m	Fri Jan 20 15:42:58 2012 +0000
@@ -1,5 +1,19 @@
-%clear all, close all, clc;
+%% -*- texinfo -*-
+%% Frequency-weighted controller reduction.
 
+% ===============================================================================
+% Frequency Weighted Controller Reduction       Lukas Reichlin      December 2011
+% ===============================================================================
+% Reference: Madievski, A.G. and Anderson, B.D.O.
+%            Sampled-Data Controller Reduction Procedure
+%            IEEE Transactions of Automatic Control
+%            Vol. 40, No. 11, November 1995
+% ===============================================================================
+
+% Tabula Rasa
+clear all, close all, clc
+
+% Plant
 Ap1 = [  0.0         1.0
          0.0         0.0     ];
 
@@ -29,7 +43,7 @@
 
 P = ss (Ap, Bp, Cp, Dp);
 
-
+% Controller
 Ac = [  -0.4077      0.9741      0.1073      0.0131      0.0023     -0.0186     -0.0003     -0.0098
         -0.0977     -0.1750      0.0215     -0.0896     -0.0260      0.0057      0.0109     -0.0105
          0.0011      0.0218     -0.0148      0.7769      0.0034     -0.0013     -0.0014      0.0011
@@ -54,89 +68,59 @@
 
 K = ss (Ac, Bc, Cc, Dc);
 
-Kr = btaconred (P, K, 4, 'feedback', '-')
-
-
-tau = 0.1;
-Kd = c2d (K, tau);
-Pd = c2d (P, tau);
+% Controller Reduction
+Kr4 = spaconred (P, K, 4, 'feedback', '-')
+Kr2 = spaconred (P, K, 2, 'feedback', '-')
 
-s = tf ('s');
-F = 5 / (s + 5);
-
+% Open Loop
 L = P * K;
-%Ld = Pd * Kd;
-Lr = P * Kr;
+Lr4 = P * Kr4;
+Lr2 = P * Kr2;
 
+% Closed Loop
 T = feedback (L);
-%Td = feedback (Ld);
-Tr = feedback (Lr);
+Tr4 = feedback (Lr4);
+Tr2 = feedback (Lr2);
 
+% Frequency Range
 w = {1e-2, 1e1};
 
+% Bode Plot of Controller
+[mag, pha, w] = bode (K, w);
+[magr4, phar4, wr4] = bode (Kr4, w);
+[magr2, phar2, wr2] = bode (Kr2, w);
+
+mag = 20 * log10 (mag);
+magr4 = 20 * log10 (magr4);
+magr2 = 20 * log10 (magr2);
+
 figure (1)
-step (T, 100)
+subplot (2, 1, 1)
+semilogx (w, mag, wr4, magr4, wr2, magr2)
+axis ('tight')
+ylim (__axis_margin__ (ylim))
+grid ('on')
+title ('Bode Diagrams of K and Kr')
+ylabel ('Magnitude [dB]')
+
+subplot (2, 1, 2)
+semilogx (w, pha, wr4, phar4, wr2, phar2)
+axis ('tight')
+ylim (__axis_margin__ (ylim))
+grid ('on')
+xlabel ('Frequency [rad/s]')
+ylabel ('Phase [deg]')
+legend ('K (8 states)', 'Kr (4 states)', 'Kr (2 states)', 'location', 'southwest')
+    
+% Step Response of Closed Loop
+[y, t] = step (T, 100);
+[yr4, tr4] = step (Tr4, 100);
+[yr2, tr2] = step (Tr2, 100);
 
 figure (2)
-%bode (L)
-bode (K, w)
-
-figure (3)
-%step (Td, 100)
-step (Tr, 100)
-
-figure (4)
-%bode (Ld)
-bode (Kr, w)
-
-figure (5)
-%step (feedback (P*Kr), 100)
-
-
-
-[mag, pha, w] = bode (K, w);
-[magr, phar, wr] = bode (Kr, w);
-
-mag = 20 * log10 (mag);
-magr = 20 * log10 (magr);
-
-
-%figure (6)
-
-
-      xl_str = "Frequency [rad/s]";
-
-
-    subplot (2, 1, 1)
-    semilogx (w, mag, "b", wr, magr, "r")
-    axis ("tight")
-    ylim (__axis_margin__ (ylim))
-    grid ("on")
-    title ("Bode Diagrams of K and Kr")
-    ylabel ("Magnitude [dB]")
-
-    subplot (2, 1, 2)
-    semilogx (w, pha, "b", wr, phar, "r")
-    axis ("tight")
-    ylim (__axis_margin__ (ylim))
-    grid ("on")
-    xlabel (xl_str)
-    ylabel ("Phase [deg]")
-    legend ("K (8 states)", "Kr (4 states)", "location", "southwest")
-    
-    print -depsc2 madievski-bode.eps
-
-
-[y, t] = step (T, 100);
-[yr, tr] = step (Tr, 100);
-
-figure (6)
-plot (t, y, 'b', tr, yr, 'r')
+plot (t, y, tr4, yr4, tr2, yr2)
 grid ('on')
 title ('Step Response of Closed Loop')
 xlabel ('Time [s]')
 ylabel ('Output [-]')
-legend ('K (8 states)', 'Kr (4 states)', 'Location', 'SouthEast')
-
-print -depsc2 madievski-step.eps
-
+legend ('K (8 states)', 'Kr (4 states)', 'Kr (2 states)', 'Location', 'SouthEast')