|
1 # Updated(2-8-07) |
|
2 # 9.13 |
|
3 |
|
4 import os, sys |
|
5 sys.path += [os.getcwdu() + os.sep + ".." + os.sep + "python"] |
|
6 |
|
7 import scipy as sp |
|
8 from scipy import signal |
|
9 from myc2d import myc2d |
|
10 from dscr import dscr |
|
11 from zpowk import zpowk |
|
12 from desired import desired |
|
13 from pp_im2 import pp_im2 |
|
14 |
|
15 num = 200 |
|
16 den = sp.convolve([0.05, 1], [0.05, 1]) |
|
17 den = sp.convolve([10, 1], den) |
|
18 G = signal.lti(num,den) |
|
19 Ts = 0.025 |
|
20 num = G.num |
|
21 den = G.den |
|
22 B, A, k = myc2d(G, Ts) |
|
23 zk, dzk = zpowk(k) |
|
24 |
|
25 # Transient specifications |
|
26 a = 0.9 |
|
27 rise = 0.24 |
|
28 epsilon = 0.05 |
|
29 phi = desired(Ts, rise, epsilon) |
|
30 |
|
31 # Controller design |
|
32 Delta = sp.array([1, -1]) # internal model of step is present |
|
33 Rc, Sc, Tc, gamm = pp_im2(B, A, k, phi, Delta, a) |
|
34 |
|
35 # margin calculation |
|
36 Lnum = sp.convolve(Sc, sp.convolve(B,zk)) |
|
37 Lden = sp.convolve(Rc, A) |
|
38 L = signal.lti(Lnum, Lden) |
|
39 L = dscr(L, Ts) |
|
40 Gm = g_margin(L) |
|
41 Pm = p_margin(L) |
|
42 |
|
43 num1 = 100 |
|
44 den1 = [10, 1] |
|
45 Gd = signal.lti(num1, den1) |
|
46 C, D, k1 = myc2d(Gd, Ts) |
|
47 zk, dzk = zpowk(k) |
|
48 C = sp.convolve(C, zk) |
|
49 |
|
50 # simulation parameters g_s_cl2 |
|
51 N = 1 |
|
52 st = 1 # desired change in setpoint |
|
53 st1 = 0 # magnitude of disturbance |
|
54 t_init = 0 # simulation start time |
|
55 t_final = 1.5 # simulation end time |
|
56 |
|
57 |