【FMIライブラリ】最小構成のMBD事例 第2章 その74【DCモータ②】

【FMIライブラリ】最小構成のMBD事例 第2章 その74【DCモータ②】 事例
【FMIライブラリ】最小構成のMBD事例 第2章 その74【DCモータ②】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

「OpenModelicaで作ったFMUをFMILibraryで制御する」
までの、おおよそのプランを提示。

使用するモデルは以前動作確認したDCモータモデルだが、
PID制御器を付けてオープンループ制御からクローズループ制御にしたものにする予定。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

DCモータモデル変更

太郎くん
太郎くん

まずはDCモータモデルの変更からかな?

フクさん
フクさん

そうだね。
PID制御器を追加する。

太郎くん
太郎くん

PID制御を作ることになるのか・・・。
まぁ一応どういうものかは知ってはいるけど、
Modelicaで書くとなるとイメージ湧かないな・・・。

フクさん
フクさん

PID制御器は最初からライブラリとして用意されてるよ。

ModelicaライブラリのPID制御器

太郎くん
太郎くん

え?
そうなの?

太郎くん
太郎くん

だったら、それをそのまま繋げばOKじゃん!

フクさん
フクさん

そうだね。
まぁ実際に使うのはLimPIDというモデルになる。

太郎くん
太郎くん

Modelicaライブラリのどこにあるのかな?

フクさん
フクさん

ライブラリブラウザで
Modelica→Blocks→Continuous
で辿って行った先にLimPIDってのがあるんで、それを使う。

Modelica、Modelica.Blocks、Modelica.Blocks.Continuous、Modelica.Blocks.Continuous.LimPID

PID制御器のパラメータは?

太郎くん
太郎くん

PID制御器と言うと、各種パラメータを決める必要があると思うんだけど?

フクさん
フクさん

そうだね。
それに今回使用するPID制御器のパラメータは
\(P\)ゲイン、\(I\)ゲイン、\(D\)ゲインではなく、
\(K_p、T_i、T_d\)を指定するタイプだ。

太郎くん
太郎くん

\(T_i\)?
\(T_d\)?

フクさん
フクさん

まぁ通常のPID制御の式を変形して、
時間をパラメータとするようにしたPIDだな。
以下に一般的なPID制御の数式と時間パラメータに変更した式を併記しよう。

$$ C(s)=K_p + \frac{k_i}{s} + K_d s = K_p(1+\frac{1}{T_i s}+T_d s) $$

フクさん
フクさん

まぁ今回はPID制御のパラメータは本筋ではないので、
\(K_p=0.75\)
\(T_i=0.03\)
\(T_d=0.075\)
を設定しておこう。
そんなに大外れなパラメータにはならないはずだ。

太郎くん
太郎くん

そういうことならそれを設定しておこう。

出来上がったモデル

フクさん
フクさん

そして出来上がってモデルがこれになる。

Modelica.Blocks.Sources.Ramp、Modelica.Blocks.Continuous.LimPID、Modelica.Electrical.Analog.Sources.SignalVoltage、Modelica.Electrical.Analog.Sensors.CurrentSensor、Modelica.Electrical.Analog.Basic.Ground、Modelica.Electrical.Machines.BasicMachines.DCMachines.DC_PermanentMagnet、Modelica.Mechanics.Rotational.Sensors.SpeedSensor、Modelica.Electrical.Machines.Utilities.ParameterRecords.DcPermanentMagnetData、Modelica.Mechanics.Rotational.Components.Inertia、Modelica.Mechanics.Rotational.Sources.TorqueStep
太郎くん
太郎くん

RampとsignalVoltageの間にPID制御器が入った感じだねー。
あとは、電流センサ角速度センサも追加されてる感じか。

フクさん
フクさん

そうだね。
角速度センサは角速度フィードバックをするために追加。
電流センサは制御としては使わないが、モータの内部状態を見るには重要なパラメータなんで、
一応付けておいたって感じだ。

まとめ

フクさん
フクさん

まとめだよ。

  • 以前使ったDCモータモデルにPID制御器を付けた。
    • PID制御器はModelicaライブラリに最初から存在。
    • 実際にはLimPID。
    • パラメータはKp、Ki、KdではなくKp、Ti、Tdな点に注意。
  • とりあえず、クローズループ(PID)制御のDCモータモデルが出来た。(つもり)

バックナンバーはこちら。

コメント

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