バックナンバーはこちら。
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モータモデルも大して改造じゃないんで、
ざっと見せておこう。
あ、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ブロックと同様にエイリアスは生成される。
- このエイリアスにアクセスする予定。
バックナンバーはこちら。
コメント