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

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

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

はじめに

PID制御器を付けてオープンループ制御からクローズループ制御にしたDCモータモデルは作った。

ただ、まだ動作確認していないので、
一発動かして正常に動いていそうかだけだも確認しておきたい。
本筋はFMILibraryで制御できるかなので細かい精度は求めていないが。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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制御がちゃんと機能しているかは確認しないとね。

太郎くん
太郎くん

じゃー、早速シミュレーション!

ramp、Connector of Real output signal、signalVoltage、Voltage between pin p and n (= p.v - n.v) as input signal、speedSensor、Absolute angular velocity of flange as output signal
フクさん
フクさん

ふむ。
ちゃんと角速度制御は出来てるようだな。

太郎くん
太郎くん

じゃー、あとはこれをFMUにexportしれば良いのかな?

フクさん
フクさん

いんや、もうちょいこのモデルを弄る

太郎くん
太郎くん

(これ以上ややこしくないでよー)

Outputブロック

フクさん
フクさん

FMUにしたあとに比較的簡単にパラメータを引き出せるよう、
Outputブロックを追加しておく。

太郎くん
太郎くん

Outputブロック?

フクさん
フクさん

まぁ本来の用途はモデルを上位から利用する際の出力を定義するものなんだけど、
FMU利用に於いては、信号のエイリアスとして機能する。

太郎くん
太郎くん

エイリアス?

フクさん
フクさん

別名って意味だね。

フクさん
フクさん

例えば、モータ電流を参照したいとした場合、
signalVoltageの内部で定義されてるiを参照する必要がある。
この場合、
“signalVoltage.i”
って文字列で取得することになる。

太郎くん
太郎くん

あ、わかったぞ!
エイリアスを置いておくと、その指定した名称で同じ情報がとりだせるってことか!!

フクさん
フクさん

そうそう。
今回追加した電流センサーの先にcurrentってOutputブロックを設置しておけば、
全く同じ情報が”current”って文字列で取得可能となる。
これはモデルを変えたとしても、Outputブロックの名称が同一なら同じように取得できる。
ってことになる。

太郎くん
太郎くん

確かに、そっちの方が便利そうだ。
早速は位置していこう。

Outputブロック配置

太郎くん
太郎くん

とりあえず、Outputブロックを配置したぞ。

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、Modelica.Blocks.Interfaces.RealOutput
太郎くん
太郎くん

rampによる目標値をtarget
PID制御器による指令電圧値をvoltage
電流センサで取れる電流をcurrent
角速度センサで取れる角速度をspeed
にしてみた。

フクさん
フクさん

いいんじゃない。
シンプルだし分かり易い。

太郎くん
太郎くん

あとはこれをFMUにexportだねー。

まとめ

フクさん
フクさん

まとめだよ。

  • クローズループ制御にしたDCモータモデルの動作確認を実施。
    • ちゃんと動いてるっぽい。
  • Outputブロック設置
    • 各種信号にエイリアスを振るために設置。
      • 目標値をtarget。
      • 指令電圧値をvoltage。
      • 電流センサで取れる電流をcurrent。
      • 角速度センサで取れる角速度をspeed。

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

コメント

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