Octave で見る古典制御
□ 2次系の過渡応答
2次系
y''(t) + 2ζω y'(t) + ω^2 y(t) = x(t)
で ζ = 0.2, ω = 1, x(t) = 1 (単位ステップ入力)の場合の過渡応答を求める.
y1' = y2
y2' = -2*0.2*y2 - y1 + 1
octave: > function ydot = f(y, t)
ydot(1) = y(2);
ydot(2) = -2*0.2*y(2) - y(1) + 1;
endfunction
octave: > y0 = [0; 0]
octave: > t = linspace(0, 14, 1000);
octave: > y = lsode("f", y0, t);
octave: > grid "on"
octave: > plot(t, y(:, 1))
octave: > closeplot
□ ベクトル軌跡(ナイキスト線図)
伝達関数が
1
G(s) = -----------------
(1+s)(1+2s)(1+3s)
で与えられる制御系のベクトル軌跡を描く.
octave: > function g = G(s)
g = 1 ./ ((1 .+ s).*(1 .+ 2 .* s).*(1 .+ 3 .* s));
endfunction
octave: > w = logspace(-2, 4, 300);
octave: > s = G(j.*w);
octave: > grid "on"
octave: > plot(real(s), imag(s))
octave: > closeplot
□ ボード線図
伝達関数が
(1+3s)
G(s) = ------------
(1+s)(1+2s)
で与えられる制御系のボード線図を描く.
octave: > function g = G(s)
g = (1 .+ 3.* s) ./ ((1 .+ s).*(1 .+ 2 .* s));
endfunction
octave: > w = logspace(-2, 1, 100);
octave: > s = G(j.*w);
octave: > grid "on"
ゲイン線図
octave: > semilogx(w, 20.*log10(abs(s)))
位相線図
octave: > semilogx(w, 180.*angle(s)/pi)
位相が 180(-180)度を越えるとグラフが不連続になることがあるので注意が
必要である.
octave: > closeplot
□ 安定性の判別
特性方程式が
4s^3 + 6s^2 + 6s + 2 = 0
で与えられる制御系の安定判別を行う.
octave: > p = [4 6 6 2]
octave: > r = roots(p)
r の実部が全て負なので,制御系は安定である.
特性方程式が
s^4 + s^3 + 6s^2 + 6s + 2 = 0
で与えられる制御系の安定判別を行う.
octave: > p = [1 1 6 6 2]
octave: > r = roots(p)
r の実部に正の値を取るものがあるので,制御系は不安定である.
□ 根軌跡
一巡伝達関数が
K
G(s)H(s) = ------------
s(s+1)(s+2)
で与えられる制御系の根軌跡を描く.
特性方程式は
s^3 + 3s^2 + 2s + K = 0
で与えられる.
octave: > function r = f(k)
p = [1 3 2 k];
r = roots(p);
endfunction
octave: > k = linspace(0, 30, 60);
octave: > [nr, nc] = size(k);
octave: > r = f(k(1));
octave: > for i = 2:nc
r = [r;f(k(i))];
endfor
octave: > plot(real(r), imag(r), 'x')
octave: > closeplot
Octave
naniwa@rbt.his.u-fukui.ac.jp