Pythonで制御工学シミュレーション

この記事では、プログラミング言語「Python」を用いて、無料で簡単に制御工学シミュレーションを行う方法を紹介します。

【はじめに】Pythonとは

Pythonとは、欧米で人気なスクリプト言語で、以下の優れた特徴を持っています。

主な特徴
1 コードが短く、読みやすい
2 科学技術計算ライブラリが豊富(Matlab風ライブラリもある)
3 無料

制御シミュレーションには、Matlabがよく使われていますが、Pythonには無料というメリットがあります。
また、Pythonには制御工学シミュレーション以外にも様々なライブラリがあるため、拡張性が高いです。

Pythonとライブラリ「python-control」の環境構築方法については下記事で解説しています。

環境構築まとめ
Pythonの導入方法①
(Pythonパッケージ)
WinPython編Anaconda編Python(x, y)編,
Pythonの導入方法②
(公式インストーラ)
Python2.7編Python3.5編
ライブラリの導入方法 python-controlのインストール方法
Pythonの基礎はこちら Python入門 サンプル集
制御工学の基礎はこちら 【制御工学入門】古典~現代制御の基本原理

【python-control編】制御シミュレーション

Pythonには、制御工学シミュレーション用のライブラリ「python-control」があります。
このライブラリはMatlabの制御シミュレーションに関する機能をそのまま移植したようなライブラリです。
そのため、使い方がMatlabの関数とよく似ているので使用しやすいです。
今回は、「python-control」を使って制御工学シミュレーションを行っていきます。

古典制御
伝達関数 伝達関数モデルの作成
周波数応答 ボード線図(ゲイン位相)ナイキスト線図根軌跡
安定判別 システムの極(安定判別)ゲイン・位相余裕システムの零点
時間応答 インパルス応答ステップ応答
PID制御 P制御PD制御PID制御
現代制御
状態空間 状態空間モデルの作成
変換 状態→伝達(1自由度)■状態→伝達(2自由度機械) ■伝達関数→状態方程式
可制御・可観測性 可制御性の判別可観測性の判別
状態フィードバック ゲイン設計(極配置法)
最適レギュレータ リカッチ方程式の解リアプノフ方程式の解最適レギュレータオブザーバ(同一次元) ■オブザーバ(最小次元) ■最適サーボ制御

【SciPy編編】制御シミュレーション

古典制御
周波数応答 ボード線図
RLC回路のボード線図・位相線図
現代制御
状態空間 状態方程式状態方程式と伝達関数の相互変換
スライディングモード制御
切換超平面の設計
コントローラの設計
実行 極配置法
参考文献 非線形制御モデル化・実践(スライディングモード制御編)
関連記事