見出し画像

【EV3で制御工学】PID制御によるMモータの速度制御③

前回の記事の続きです。


PI制御のプログラム

前回、P制御では定常偏差が残ることを確認しました。では、これをなくすためにPI制御を導入しましょう。

P制御のプログラムにIの項を追加していきます。追加で必要な変数を用意しておきましょう。

  • sum_e … 偏差の累計($${\sum\limits_0^ke[l]}$$に相当するもの)(初期値:0としておく)

  • Ki … Iゲイン(初期値:適当な値に設定しましょう)

P制御のときと同じくファイルの削除を行います。右上にファイル名「PI」を入力しておき、「削除」モードにします。また、タイマーをリセットしておきます。

変数の設定、ファイルの削除、タイマーのリセット

これで下準備は完了です。制御部分を作っていきましょう。

P制御と同様に、ループを用意し、偏差の計算式$${e[k]=r[k]-y[k]}$$を書きます。ただし、測定値$${r[k]}$$は黄色の「モータ回転」ブロックの「現在のパワー」モードを用いて測定します。

偏差を計算する

次に、入力を計算していきます。まずはPの項($${P=K_pe[k]}$$)を書いていきます。計算結果をいったんPという変数に入れておきます。

Pの項の計算

次に、Iの項の計算で使う$${\sum\limits_0^ke[l]}$$を格納する変数sum_eをsum_e=sum_e+eという式で更新しておきます。そして、Iの項($${I=K_i\sum\limits_0^ke[l]}$$)を書いていきます。計算結果をいったんIという変数に入れておきます。

sum_eの更新とIの項の計算

PI制御はPの項とIの項の和を計算結果として入力します。モータを動かすのには、青色の「未調整のモータブロック」を用います。


P+Iを入力

最後に、時系列データをファイルの保存していきます。P制御のときと同じなので詳細な説明は省略します。ループの終了条件は「時間」としておきましょう(時間は適当に設定しましょう)。

データをファイルに保存

出来たら動かしてみましょう。

グラフ(簡易版)の作成

インテリジェントの同じプロジェクト内に「PI.rtf」というファイルができていると思います。このファイルをPCにアップロードしましょう。

アップロード出来たら「PI.rtf」を前回の記事で示した手順で「.xlsx」(Excelファイル)に変換します。あとはExcelで散布図のグラフを描くとモータの動作の様子をグラフで確認できるようになります。

最終的にはPythonを用いて次のようなきれいなグラフを作ります。

P制御とPI制御の実行結果

前回も言及しましたが、Mモータを速度制御するときは実質的に1次遅れ系とみなせます。そのため、P制御にIの項を追加してPI制御にすることで、定常偏差がなくなったことを確認できました。

まとめ

今回ははここまで。P制御の代わりにPI制御を導入することで定常偏差がなくなることを確認しました。④に続きます。

この記事が気に入ったらサポートをしてみませんか?