はじめに
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()
の公式ドキュメントにはStateSpace
とTransferFunction
にしか使えないように書いてありますが,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()
についてはまた追記しようと思います.
なにか間違いがあれば教えていただけると喜びます.