【FMI/FMU】最小構成のMBD事例 第2章 その86【PyFMI③】

【FMI/FMU】最小構成のMBD事例 第2章 その86【PyFMI③】 事例
【FMI/FMU】最小構成のMBD事例 第2章 その86【PyFMI③】

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

はじめに

前回は、PyFMIの依存関係のヤバさが垣間見えた。
FMILibraryの64bit品、Assimuloが依存しているsolverの64bit品とか・・・。
一応condaでインストールすればうまく依存関係が解決できるのでconda推奨。

PyFMIはイントールできたということでまずは当然動作確認。
その動作確認をどのようにしていくか。
というお話。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

PyFMIの動作確認方法。

太郎くん
太郎くん

PyFMIはcondaのおかげであっさり終わったけど、
これ、どう使えばいいんだ?

フクさん
フクさん

まぁ動作確認も兼ねて確認していくとしよう。

フクさん
フクさん

とりあえず、以下の流れを想定している。

  • DCモータモデル改造とそのFMUをexport
  • FMUをロード
  • 信号を生成
  • 入力オブジェクトの生成
  • シミュレーション
  • シミュレーション結果の取得
  • シミュレーション結果のグラフ表示
太郎くん
太郎くん

割と手順が有るようには見れるが、
一個一個は大したことないの・・・か?

フクさん
フクさん

そうだね。
2つ目の「FMUロード」以降はPythonの話で完結している物だ。
Pythonのコードとしてどのように書くか。
って程度の話になると思う。

太郎くん
太郎くん

なるほど。
PyFMIとmatplotlibがあるからPythonで完結できるのか。

フクさん
フクさん

そういうことだねー。

DCモータモデル改造

フクさん
フクさん

DCモータモデルも大して改造じゃないんで、
ざっと見せておこう。

DCモータ、OpenModelica、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、Modelica.Blocks.Interfaces.RealInput
太郎くん
太郎くん

あ、PID制御器を挟まず、そのまま電圧制御するのね。

太郎くん
太郎くん

あれ?
そういえば、Outputブロックは以前やったけど、
voltageのところで入力っぽい感じになってるね?

フクさん
フクさん

そう。
まさに入力でInputブロックだ。
Outputブロックの反対の機能ではあるが、これもOutputブロックと同様にエイリアスが生成される。

太郎くん
太郎くん

エイリアスの話はここでやったねー。

太郎くん
太郎くん

じゃー、Inputブロックもエイリアスが生成されるから、
何かしらの入力をしたい場合は”voltage”ってエイリアス名でアクセスすればOKってわけか。

フクさん
フクさん

それでOKだ。

フクさん
フクさん

とりあえず、DCモータモデルはこの程度で、
そのままFMUでexportしてしまおう。

太郎くん
太郎くん

OpenModelicaでのFMU exportはここでやったから、
これの通りやればOKだね。

フクさん
フクさん

これでFMU側は準備ができた。

まとめ

フクさん
フクさん

まとめだよ。

  • PyFMIの動作確認方法を列挙。
    • 実験用のFMUを作って、それをPyFMIで制御しつつmatplotlibで波形表示する。って流れ。
  • DCモータモデル改造。
    • 改造と言ってもInputブロックを追加した程度。
    • InputブロックもOutputブロックと同様にエイリアスは生成される。
    • このエイリアスにアクセスする予定。

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

コメント

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