【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という変数に入れておきます。
次に、Iの項の計算で使う$${\sum\limits_0^ke[l]}$$を格納する変数sum_eをsum_e=sum_e+eという式で更新しておきます。そして、Iの項($${I=K_i\sum\limits_0^ke[l]}$$)を書いていきます。計算結果をいったんIという変数に入れておきます。
PI制御はPの項とIの項の和を計算結果として入力します。モータを動かすのには、青色の「未調整のモータブロック」を用います。
最後に、時系列データをファイルの保存していきます。P制御のときと同じなので詳細な説明は省略します。ループの終了条件は「時間」としておきましょう(時間は適当に設定しましょう)。
出来たら動かしてみましょう。
グラフ(簡易版)の作成
インテリジェントの同じプロジェクト内に「PI.rtf」というファイルができていると思います。このファイルをPCにアップロードしましょう。
アップロード出来たら「PI.rtf」を前回の記事で示した手順で「.xlsx」(Excelファイル)に変換します。あとはExcelで散布図のグラフを描くとモータの動作の様子をグラフで確認できるようになります。
最終的にはPythonを用いて次のようなきれいなグラフを作ります。
前回も言及しましたが、Mモータを速度制御するときは実質的に1次遅れ系とみなせます。そのため、P制御にIの項を追加してPI制御にすることで、定常偏差がなくなったことを確認できました。
まとめ
今回ははここまで。P制御の代わりにPI制御を導入することで定常偏差がなくなることを確認しました。④に続きます。
この記事が気に入ったらサポートをしてみませんか?