2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python Controlのシステム結合を図付き解説

Last updated at Posted at 2022-06-05

はじめに

Python Controlは制御工学に便利なライブラリですが,ドキュメントに図が無いこともあってしばしば使い方を忘れるので,メモを兼ねて図付きで解説していきます.
今回は,システムの結合について解説します.

バージョン

  • Python 3.10.4
  • Python Control 0.9.2

準備

import control

解説

feedback()

いわゆるフィードバックです.$r$から$y$のシステム$S$について,

P = ...  # 任意のioシステム
K = ...  # 任意のioシステム
S = control.feedback(P, K)
# もしくは
S = P.feedback(K)

のように書きます.control.feedback(P, K, sign=g)と書くと,ネガティブフィードバックだけでなくポジティブフィードバックやゲイン付きのフィードバックができます.signのデフォルトは-1です.

feedback()の公式ドキュメントにはStateSpaceTransferFunctionにしか使えないように書いてありますが,NonlinearIOSystemなどにも使えるようです(NonlinearIOSystemの公式ドキュメント).以降の関数でも同様です.

SISOの伝達関数を使っているとき,$S=\frac{P}{1-gPK}$となるのでS = P/(1-g*P*K)と書いてもいいのですが,feedback()を使った方が数値的に安定します.

series()

直列結合です.$r$から$y$のシステム$S$について,

S_1, S_2, ..., S_n = ...  # 任意のioシステム
S = control.series(S_n, ..., S_2, S_1)
# もしくは
S = S_1 * S_2 * ... * S_n

のように書きます.

parallel()

並列結合です.$r$から$y$のシステム$S$について,

S_1, S_2, ..., S_n = ...  # 任意のioシステム
S = control.parallel(S_n, ..., S_2, S_1)
# もしくは
S = S_1 + S_2 + ... + S_n

のように書きます.

おわりに

中途半端ですが,とりあえずここで終わりにします.interconnect()についてはまた追記しようと思います.
なにか間違いがあれば教えていただけると喜びます.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?