Python-Control の基礎的な使い方

以前 取り上げた Python-Control の基礎的な使い方についてメモ。 以下のような単純なフィードバック制御系を例に、制御系の特性を求めてみます。

150715.png

まず制御器、制御対象の伝達関数を定義し、feedback 関数でそれらをフィードバック接続します。 ここで、制御器は PID 制御器、制御対象は DC モータをモデルとしています。

import numpy as np
from control import matlab
from matplotlib import pylab as plt

# PID 制御器
Kp = 0.5
Ki = 0.01
Kd = 0.01
num = [Kd, Kp, Ki]
den = [1, 0]
K = matlab.tf(num, den)

# 制御対象
Kt = 1
J = 0.01
C = 0.1
num = [Kt]
den = [J, C, 0]
G = matlab.tf(num, den)

# フィードバックループ
sys = matlab.feedback(K*G, 1)

以上を定義すれば、後は各種関数で簡単に制御系の特性を求めることができます。

ステップ応答

t = np.linspace(0, 3, 1000)
yout, T = matlab.step(sys, t)
plt.plot(T, yout)
plt.axhline(1, color="b", linestyle="--")
plt.xlim(0, 3)
15071501.png

インパルス応答

yout, T = matlab.impulse(sys, t)
plt.plot(T, yout)
plt.axhline(0, color="b", linestyle="--")
plt.xlim(0, 3)
15071502.png

ナイキスト線図

matlab.nyquist(sys)
15071503.png

ボード線図

matlab.bode(sys)
15071504.png

根軌跡

matlab.rlocus(sys)
15071505.png

matlab.pole(sys)

ゲイン余裕・位相余裕

matlab.margin(sys)

コメント

Comments powered by Disqus
書籍更新情報
2017-04-18
Pythonによる科学技術計算 基礎編
固定版:1.5版、リフロー版:1.2版への更新が可能になりました。
サポートページはこちら
電子書籍