バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回、ダミーFMUの実験ソースコードを書き起こした。
マルチFMUの時のコードをベースにしているので以下の修正を入れた程度。
- FMUModelCS2の一部をDummy_FMUModelCS2。
- do_stepをdo_dummyで上書き。
- 時刻同期ができてるかを確認できるよう一部printを入れている。
これを実際に動作さえてみて挙動を確認する。
登場人物
博識フクロウのフクさん

イラスト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
ダミーFMU実験の動作確認

太郎くん
準備はできたからさっそく動作させるよー。
real=0.100001,sim=0.100000
real=0.200001,sim=0.200000
real=0.300001,sim=0.300000
real=0.400349,sim=0.400000
real=0.500002,sim=0.500000
real=0.600001,sim=0.600000
real=0.700002,sim=0.700000
real=0.800001,sim=0.800000
real=0.900001,sim=0.900000
real=1.000001,sim=1.000000
real=1.100001,sim=1.100000
real=1.200001,sim=1.200000
real=1.300001,sim=1.300000
real=1.400001,sim=1.400000
real=1.500001,sim=1.500000
real=1.600001,sim=1.600000
real=1.700001,sim=1.700000
real=1.800003,sim=1.800000
real=1.900001,sim=1.900000
Master Algorithm options:
Algorithm : Jacobi (fixed-step)
Execution : Serial
Extrapolation Order : 0
Step-size : 0.001
Algebraic loop : True
Linear Correction : False
Statistics:
Number of global steps : 2000
Simulation interval : 0.0 - 2.0 seconds.
Elapsed simulation time : 1.9825845999999991 seconds.
0.017346 seconds spent in PID.
0.018027 seconds spent in Motor.
1.306145 seconds spent in Dummy.
0.270333 seconds spent saving simulation result.
結果確認

太郎くん
シミュレーション時間と実時間の同期はうまく行ったのでは?

フクさん
そうだね。
若干\(3ms\)ほどズレるタイミングもあるようだが、
おおよそOKと言えるだろう。

太郎くん
あとはシミュレーション波形がこっち。


太郎くん
うん。
ちゃんと狙った通り、Ramp Up、Ramp Downして台形状の指令値になってるね。

フクさん
これでstep毎の出力制御もダミーFMUでできることがわかった。

太郎くん
これはいろいろ実験ができそうでよいねー。

フクさん
そうだね。
簡単なアルゴリズムをPythonで作って試すってことができるから、
ちょっとした実験がお手軽にできそうだ。
まとめ

フクさん
まとめだよ。
- ダミーFMU実験の動作確認。
- タイミングによっては若干ズレるがシミュレーション時間と実時間の同期はOK。
- シミュレーション波形確認。
- Ramp Up、Ramp Downの台形状の波形が出ており、期待通りの指令値になっている。
- 上記によりダミーFMUによる実験がし易くなる。
- 簡単なアルゴリズムであればPythonで実施。
バックナンバーはこちら。
コメント