工学技術

【Python】Python controlを使ったDCモータの回転制御シミュレーション2【PID制御の基礎】

スポンサーリンク

PID制御の基礎をPythonのライブラリの一種であるcontrolを使って勉強しましょう。

今回は、ミニ四駆などのおもちゃによく使われているDCモータの特性と回転制御をシミュレーションで確認します。

この記事を読めば、PID制御コントローラを用いたDCモータの制御モデル化とpythonを使った外乱応答のシミュレーションがわかります。

PID制御ありの外乱を含んだDCモータモデル

前回の記事では、DCモータに環境変化による抵抗力などのトルク外乱が入った場合を考えてみました。

単純にDCモータの端子間に電圧を印加するだけの場合、外乱トルクが加わると回転数が落ち込んでしまい、所望の回転数を維持することができませんでした。

そこで今回はPID制御を使って外乱トルクが加わっても回転数を維持するようにしたいと思います。

ブロック線図は以下のようになります。

PID制御ありのDCモータモデル

使用したpythonライブラリ

今回は以下のpythonライブラリを使用しました。

  • control
  • matplotlib
  • numpy
  • scipy
  • pandas

python controlでシミュレーションするために伝達関数を等価変換する

PID制御ありの外乱DCモータモデル(等価変換前)

矢印

PID制御ありの外乱DCモータモデル(等価変換後)

外乱トルクが入ったDCモータモデルのブロック線図を下図のように等価変換(簡単化)することができます。

PID制御ありのDCモータの回転制御シミュレーション

python controlを使ってPID制御ありのDCモータの外乱応答を確認する

回転数指令値を0.5s時点で1000rpm入力し、外乱トルクを5s時点で-5Nm入力する場合をシミュレーションしてみます。

0.5s時点で左上の回転数指令値が0rpm → 1000rpmに変化しています。

左下の青線が目標値応答伝達関数の出力で、1000rpmに立ち上がっていることがわかります。

5s時点で右上の外乱トルクが-5Nm入力されています。

右下図が目標値応答と外乱応答を足し合わせた最終的な出力になります。

外乱トルクが入力された直後は回転数が落ち込んでいますが、すぐにPID制御が働き、回転数指令値の1000rpmを維持することができていることがわかります。
SIM結果PID制御あり(外乱応答)

シミュレーションのpythonソースコード

今回入力データが『電圧目標値』と『外乱トルク』の2つを用意するため、csvファイルからデータを読み込んでいます。

Python controlを使ったPID制御ありのDCモータの回転制御シミュレーション(外乱応答)まとめ

今回はDCモータに外乱トルクが加わった場合にPID制御を用いて回転数を維持できることをシミュレーションで確認しました。

最後まで読んでいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました