バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回で、OpenModelicaのFMU exportのオプション周りの設定は完了。
Windows、Linux環境でライブラリの依存関係の都合はあるが、
PlatformsはStaticを選んでおけばどちらの環境でもOK。
今回はOpenModelicaからの実際にFMUをexportし、少し中身を確認。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
OpenModelicaからFMUをexport
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
FMUのオプション関連は終わったから
ついにFMUのexportだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
やり方は簡単。
OpenModelicaConnectionEditorの左側にある、ライブラリブラウザの一番下に
今回作成したモデルがいる。
これを右クリック。
書き出し→FMU
を選択すればOKだ。
![OpenModelicaConnectionEditor、モデルブラウザ、クラスを開く、情報、Modelicaクラス新規作成、頬zン、モデルのインスタンス化、モデルチェック、シミュレート、変換デバガでシミュレート、アルゴリズムデバガでシミュレート、シミュレーションのセットアップ、複製、アンロード、書き出し、バインディングを更新、FMU、XML、Figaro](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/02_FMUeport.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
うん、しばらく応答無くなったからフリーズしたかと思ったけど、FMUが出力されたみたいだ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
モデルが複雑になったり、巨大になったりするともっと時間が掛かるかもねー。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
せめてプログレスバーみたいなのがあるといいんだけど、
まぁそこまで求めるのは酷かー。
exportされたFMUのmodelDescription.xml確認
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
ここで、FMU内部のmodelDescription.xmlを確認しておこう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
一応、拡張子をzipにして解凍はできた。
modelDescription.xmlもちゃんと中にあったよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
じゃ、今回、DCモータモデルについかしたOutputブロックのパラメータを確認しておこう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
とりあえず、該当するところを引っこ抜いてきた。
<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/>
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
あと、valueReferenceが同値のパラメータも居ると思うからそっちもよろしく。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
はいよ。
<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>
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
なるほど。
信号線としては繋がっているところがvalueReferenceとしては同値になるってことか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
そして今回は扱いや類Outputブロック側を指定して利用するって算段だ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
確かにそっちの方が楽そうだね。
“pid.addD.u1”
とか言われても、なんのこっちゃってなるもんね。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- OpenModelicaから無事FMUをexport。
- FMU内部のmodelDescription.xmlを参照。
- Outputブロック名のパラメータの存在を確認。
- 上記のvalueReferenceと同値のパラメータも確認。
- モデル上、同一の信号線上のパラメータが該当。
- 利用するのはOutputブロック側。
バックナンバーはこちら。
コメント