【Modelica】最小構成のMBD事例 第2章 その14【massモデル③】

【Modelica】最小構成のMBD事例 第2章 その14【massモデル③】 事例
【Modelica】最小構成のMBD事例 第2章 その14【massモデル③】

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

はじめに

constantForceモデルとmassモデルを組み合わせたシンプルなModelicaモデルをシミュレーションしてみる。

OpenModelica Connection Editorでのシミュレーション開始方法。

シミュレーション結果の確認方法
などを説明。

前回、結果を予測してあるので、予測と一致しているかをまずは確認する。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

シミュレーションモデルの確認

太郎くん
太郎くん

今回こそ実際にシミュレーションしてみるんだよね。

フクさん
フクさん

うん。
一応、モデルを再掲しておこう。

constantForce1、constantForce2、mass、-1N、2N、m=1kg
太郎くん
太郎くん

前回、シミュレーション結果の加速度を予測したけど、
\(\displaystyle \vec{a}=\frac{\vec{F}}{m}\)
\(\displaystyle \vec{a}=\frac{1}{1}\)
\(\vec{a}=1\)
で、予測は\(1[m/s^{2}]\)

フクさん
フクさん

本当にそうなるか確認してみよう。

シミュレーション方法

太郎くん
太郎くん

で、どうすればシミュレーションできるんだ?

フクさん
フクさん

OpenModelica Connection Editor上部の矢印みたいなアイコンをクリックすればOKだ。

モデルチェック、全てモデルチェック、モデルのインスタンス化、シミュレーションのセットアップ、シミュレート、変換デバガでシミュレート、アルゴリズムデバガでシミュレート、Simulate with animation、Run The Debugger
太郎くん
太郎くん

なんだ。
それだけか。
とりあえず押してみる。

太郎くん
太郎くん

ん?
なんかコンパイルみたいなのが入ってる???

フクさん
フクさん

その通り。
コンパイルが走ってる。

C:/Program Files/OpenModelica1.17.0-64bit/share/omc/scripts/Compile.bat masstest gcc mingw64 parallel 4 0 PATH = "C:\PROGRA~1\OPENMO~1.0-6\tools\msys\mingw64\bin;C:\PROGRA~1\OPENMO~1.0-6\tools\msys\mingw64\bin\..\..\usr\bin;" mingw32-make: Entering directory 'C:/Users/Username/AppData/Local/Temp/OPENMO~1/OMEdit/masstest' clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest.o masstest.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_functions.o masstest_functions.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_records.o masstest_records.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_01exo.o masstest_01exo.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_02nls.o masstest_02nls.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_03lsy.o masstest_03lsy.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_04set.o masstest_04set.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_05evt.o masstest_05evt.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_06inz.o masstest_06inz.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_07dly.o masstest_07dly.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_08bnd.o masstest_08bnd.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_09alg.o masstest_09alg.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_10asr.o masstest_10asr.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_11mix.o masstest_11mix.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_12jac.o masstest_12jac.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_13opt.o masstest_13opt.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_14lnz.o masstest_14lnz.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_15syn.o masstest_15syn.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_16dae.o masstest_16dae.c clang  -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -c -o masstest_17inl.o masstest_17inl.c clang -I. -o masstest.exe masstest.o masstest_functions.o masstest_records.o masstest_01exo.o masstest_02nls.o masstest_03lsy.o masstest_04set.o masstest_05evt.o masstest_06inz.o masstest_07dly.o masstest_08bnd.o masstest_09alg.o masstest_10asr.o masstest_11mix.o masstest_12jac.o masstest_13opt.o masstest_14lnz.o masstest_15syn.o masstest_16dae.o masstest_17inl.o -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -L"C:/Users/Username/OneDrive/Modelica/ElectricLinearValve"     -Os -falign-functions -mstackrealign -msse2 -mfpmath=sse     -I"C:/Program Files/OpenModelica1.17.0-64bit/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -DOMC_MODEL_PREFIX=masstest -DOMC_NUM_MIXED_SYSTEMS=0 -DOMC_NUM_LINEAR_SYSTEMS=0 -DOMC_NUM_NONLINEAR_SYSTEMS=0 -DOMC_NDELAY_EXPRESSIONS=0 -DOMC_NVAR_STRING=0  -L"C:/Program Files/OpenModelica1.17.0-64bit/lib//omc" -L"C:/Program Files/OpenModelica1.17.0-64bit/lib" -Wl,--stack,16777216,-rpath,"C:/Program Files/OpenModelica1.17.0-64bit/lib//omc" -Wl,-rpath,"C:/Program Files/OpenModelica1.17.0-64bit/lib"  -fopenmp -Wl,-Bstatic -lregex -ltre -lintl -liconv -lexpat -lomcgc -lpthread -loleaut32 -limagehlp -lhdf5 -lz -lszip -Wl,-Bdynamic -Wl,-Bdynamic -lSimulationRuntimeC -Wl,-Bdynamic -Wl,-Bdynamic -lomcgc -lregex -ltre -lintl -liconv -lexpat -static-libgcc -luuid -loleaut32 -lole32 -limagehlp -lws2_32 -llis -lsundials_nvecserial -lsundials_sunmatrixdense -lsundials_sunmatrixsparse -lsundials_sunlinsoldense -lsundials_sunlinsolklu -lsundials_sunlinsollapackdense -lsundials_sunlinsolspbcgs -lsundials_sunlinsolspfgmr -lsundials_sunlinsolspgmr -lsundials_sunlinsolsptfqmr -lsundials_sunnonlinsolnewton -lsundials_cvode -lsundials_cvodes -lsundials_idas -lsundials_kinsol -lumfpack -lklu -lcolamd -lbtf -lamd -lsuitesparseconfig -lipopt -lcoinmumps -lpthread -lm  -lgfortran -lquadmath -lmingw32 -lgcc_eh -lmoldname -lmingwex  -luser32 -lkernel32 -ladvapi32 -lshell32 -lopenblas -lcminpack -Wl,-Bdynamic -lwsock32 -lstdc++  mingw32-make: Leaving directory 'C:/Users/Username/AppData/Local/Temp/OPENMO~1/OMEdit/masstest' コンパイルプロセスが成功.
太郎くん
太郎くん

そういえば、シミュレーションする場合は、
一旦C言語のソースコードを出力して、それをコンパイル&実行するんだっけか。

シミュレーション結果

太郎くん
太郎くん

なんかシミュレーションが終わったと同時に空っぽのグラフが出てきた。

太郎くん
太郎くん

これ、なんか波形が出せるのだと思うのだけど、
どうすれば良いのかな?

フクさん
フクさん

右側に変数ブラウザってのがあって、
今回接続した、constantForce1、constantForce2、massが並んでると思う。

太郎くん
太郎くん

うん。並んでる。

フクさん
フクさん

この中のmassを開いて、「a」ってパラメータが加速度なんで
それの左にあるチェックボックスにチェックを入れると加速度がグラフに表示される。

Auto Scale、Fit in View、Save、Print、Grid、Detailed Grid、No Grid、Log X、Log Y、Setup、変数ブラウザ、masstest、constantForce1、constantForce2、mass、L、Length of component, from left flange to right flange (= flange_b.s - flange_a.s)、Absolute acceleration of component、der(Absolute position of center of component (s = flange_a.s + L/2 = flange_b.s - L/2))、der(Absolute velocity of component)、Mass of the sliding mass、Absolute position of center of component (s = flange_a.s + L/2 = flange_b.s - L/2)、Priority to use s and v as states、Absolute velocity of component
太郎くん
太郎くん

お、ちゃんと出てきた!
加速度は予測どおり\(1[m/s^2]\)だね。

フクさん
フクさん

うん。
これ以外にも様々なパラメータがあるから、
次回をそれを見て行こう。

まとめ

フクさん
フクさん

まとめだよ。

  • シミュレーションするモデルと前回の予測を再掲。
    • constantForce、massの組み合わせ。
    • \(1[m/s^2]\)の加速度。
  • シミュレーション開始方法。
    • OpenModelica Connection Editor上部の矢印アイコンをクリックするだけ。
  • シミュレーション結果確認。
    • 予測通りの結果が得られた。

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

コメント

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