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

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

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

はじめに

前回で、OpenModelicaのFMU exportのオプション周りの設定は完了。
Windows、Linux環境でライブラリの依存関係の都合はあるが、
PlatformsはStaticを選んでおけばどちらの環境でもOK。

今回はOpenModelicaからの実際にFMUをexportし、少し中身を確認。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

OpenModelicaからFMUをexport

太郎くん
太郎くん

FMUのオプション関連は終わったから
ついにFMUのexportだね。

フクさん
フクさん

やり方は簡単。
OpenModelicaConnectionEditorの左側にある、ライブラリブラウザの一番下に
今回作成したモデルがいる。
これを右クリック
書き出し→FMU
を選択すればOKだ。

OpenModelicaConnectionEditor、モデルブラウザ、クラスを開く、情報、Modelicaクラス新規作成、頬zン、モデルのインスタンス化、モデルチェック、シミュレート、変換デバガでシミュレート、アルゴリズムデバガでシミュレート、シミュレーションのセットアップ、複製、アンロード、書き出し、バインディングを更新、FMU、XML、Figaro
太郎くん
太郎くん

うん、しばらく応答無くなったからフリーズしたかと思ったけど、FMUが出力されたみたいだ。

フクさん
フクさん

モデルが複雑になったり、巨大になったりするともっと時間が掛かるかもねー。

太郎くん
太郎くん

せめてプログレスバーみたいなのがあるといいんだけど、
まぁそこまで求めるのは酷かー。

exportされたFMUのmodelDescription.xml確認

フクさん
フクさん

ここで、FMU内部のmodelDescription.xmlを確認しておこう。

太郎くん
太郎くん

一応、拡張子をzipにして解凍はできた。
modelDescription.xmlもちゃんと中にあったよ。

フクさん
フクさん

じゃ、今回、DCモータモデルについかしたOutputブロックのパラメータを確認しておこう。

太郎くん
太郎くん

とりあえず、該当するところを引っこ抜いてきた。

  <ScalarVariable
    name="target"
    valueReference="93"
    causality="output"
    >
    <Real/>
  </ScalarVariable>
  <ScalarVariable
    name="voltage"
    valueReference="94"
    causality="output"
    >
    <Real/>
  </ScalarVariable>
  <ScalarVariable
    name="current"
    valueReference="13"
    causality="output"
    initial="exact">
    <Real start="0.0"/>
  </ScalarVariable>
  <ScalarVariable
    name="speed"
    valueReference="91"
    causality="output"
    >
    <Real/>
フクさん
フクさん

あと、valueReferenceが同値のパラメータも居ると思うからそっちもよろしく。

太郎くん
太郎くん

はいよ。

  <ScalarVariable
    name="pid.addD.u1"
    valueReference="93"
    description="Connector of Real input signal 1"
    >
    <Real/>
  <ScalarVariable
    name="pid.addSat.u1"
    valueReference="94"
    description="Connector of Real input signal 1"
    >
    <Real/>
  </ScalarVariable>
  <ScalarVariable
    name="signalVoltage.n.i"
    valueReference="13"
    description="Current flowing into the pin"
    >
    <Real unit="A"/>
  </ScalarVariable>
  <ScalarVariable
    name="speedSensor.w"
    valueReference="91"
    description="Absolute angular velocity of flange as output signal"
    >
    <Real unit="rad/s"/>
  </ScalarVariable>
太郎くん
太郎くん

なるほど。
信号線としては繋がっているところがvalueReferenceとしては同値になるってことか。

フクさん
フクさん

そうだね。
そして今回は扱いや類Outputブロック側を指定して利用するって算段だ。

太郎くん
太郎くん

確かにそっちの方が楽そうだね。
“pid.addD.u1”
とか言われても、なんのこっちゃってなるもんね。

まとめ

フクさん
フクさん

まとめだよ。

  • OpenModelicaから無事FMUをexport。
  • FMU内部のmodelDescription.xmlを参照。
    • Outputブロック名のパラメータの存在を確認。
    • 上記のvalueReferenceと同値のパラメータも確認。
      • モデル上、同一の信号線上のパラメータが該当。
      • 利用するのはOutputブロック側。

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

コメント

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