バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
Python環境下の仮想HILSで収録データが無いことが問題になり、
さらに収録データフォーマットはMDFが望ましい。
MDFはASAM仕様ではあるが、Version3以前は非ASAM仕様でVersion4からがASAM仕様というややこしい位置づけ。
Version4が名実ともにASAM仕様であるため、これについて解説していく。
登場人物
博識フクロウのフクさん
![指差しフクロウ](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
Version3かVersion4か
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
で、MDFの想定Versionは聞いてきた?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
なんかVersion3、Version4のどっちでも良いみたいで、
今後は可能な限りVersion4に揃えるってこと言ってた。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
なるほど。
割と真っ当な判断をしている組織のようだな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(こんなんで組織評価がされてしまうのか・・・。世の中怖い・・・。)
MDFのデータ構造
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
Version4でOKっぽいで、今後はVersion4を前提とした話で進めていくね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
それでよろしくー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まぁ基本的にはASAMの公式サイトの以下を見ればおおよそわかる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
うーん、英語で書かれてるのか―。
まぁ機械翻訳に書ければ何書いているのかはわからんでもないけど、
なんかこう、もうちょっとざっくりとした概要説明が欲しいなぁ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
じゃー、ASAM公式で使われてる画像を拝借しつつ簡単に説明しよう。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まず、ファイル内のデータ構造は以下のようになっている。
![MDFのデータ構造、pysical order(example)、BOF、EOF、ID、HD、CN、CG、DG、DT、hierarchical order、header block(root)、data group、channel group、channel 1(e.g. time)、channel 2(e.g. signal A)、data block、contains records described by channeis of channel group、record、time、value A](https://www.simulationroom999.com/blog/wp-content/uploads/2022/02/02_MDFのデータ構造.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ファイル構造だから、実際にはリニアな配置になってるけど、
細かくブロックに分かれてててそれぞれがツリー構造で繋がってるって感じかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
その認識でOKだ。
HDことheader blockがrootとなって、
DGことdata groupがぶら下がり、
そこにCGことchannel groupがぶら下がり、
さらにCNことchannelがぶら下がる。
実際の収録データはDGにぶら下がってるDTことdata blockに時系列で格納される。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
CNは実際に計測する信号の事を指してるのだと思うのだけど
DGとCGが良く分からないな・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まずDGの方だが、
1DGに付き1DTの構成になる。
つまり、DT内に複数のCGと紐づいた収録データを一塊にしてる感じだな。
で、そうなると問題はCGの役割だが、
これはDT内の1レコードとCGの構成が一対になっている。
のだが、肝心のレコードの話をしていないのでたぶんピンと来ないんじゃないかな?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
(ピンと来ないどころか全く分からん)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まぁまずはレコードの話をしてそれからまたこの話に戻ってくるような説明としよう。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- MDFの説明はVersion4のみとする。
- ASAM仕様として公開されてるので妥当な判断。
- MDFのデータ構造について説明。
- 基本はASAM公式サイトのMDFで説明されている。
- それだけだととっかかりが無さ過ぎるので、簡単に説明する。
- MDF内部はHD,DG,CG,CN,DTがツリー構造を取っている。
バックナンバーはこちら。
コメント