バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はASAM MDF仕様と同梱されてるサンプルMDFをAsamMdf付属Viewerに読み込ませてみた。
波形表示だけでなく、詳細データ表示も可能。
サンプルMDFはCANape、INCAが出力したもので、他のツールで出力したMDFを読み込める証明となった。
今回からは実際にAsamMdfでMDFを生成してみる。
登場人物
博識フクロウのフクさん

イラスト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
生成するMDFの方針

AsamMdf付属Viewerの動作確認もできたし、
次は実際にMDFを生成してみる感じかな?

そうだね。
まず、どんなMDFを生成するかを検討してみよう。

とりあぜず、適当な信号をぶっこんでみればいいんじゃない?

うーん、それだけだとちょっとMDFの仕様確認としてはイマイチかなぁ。

じゃー、どんなのがいいの?

そうだねー。
DGは複数、物理値変換もいろいろ入れてみたい。
よって、以下の構成かな。
生成するMDFの構成
- DataGroup1
- ChannelGroup1
- time(マスターチャネル、10msサンプリング)
- t10ms_sin(入力:\(x=sin(t)\)、物理値変換:\(y=x\))
- t10ms_Linear(入力:\(x=t\)、物理値変換:\(y=2x+0.5\))
- t10ms_Linear(入力:\(x=t\)、物理値変換:\(y=sin(x)\))
- ChannelGroup1
- DataGroup2
- ChannelGroup1
- time(マスターチャネル、100msサンプリング)
- t10ms_sin(入力:\(x=sin(t)\)、物理値変換:\(y=x\))
- t10ms_Linear(入力:\(x=t\)、物理値変換:\(y=5x-3\))
- t10ms_Linear(入力:\(x=t\)、物理値変換:\(y=cos(x)\))
- ChannelGroup1

物理値変換でsin、cosとかも指定できるんだね。

まぁ普通のECUは物理値変換で三角関数を使うことはほぼないだろうが、
MDF生成実験としては多少思い切ったことをしておいた方がよいだろう。

ふと思ったんだけど、
t10ms_sinとt10ms_Linearって、入力と物理値変換が入れ替わってるだけで
最終的な物理値って同じにならない?

その通り。
そこを狙った式構成にしてある。

なるほど。
これは面白い仕掛けかもね。
AsamMdfによるMDF生成手順

AsamMdfによるMDF生成手順は以下の流れになる。
- import
- タイムスタンプ生成
- シグナル生成
- DataGroupe用のリスト生成とシグナルの登録
- MDFモジュール生成とDataGroupeの登録
- MDF保存

まぁimportはpythonを使う上で当然の処理として、
最初にシグナルを作っておいてその後にMDFのデータ構造を作って行って最後にファイル保存ってことか。

その通り。
次回から一個ずつやっていこう。
まとめ

まとめだよ。
- 生成するMDFの方針としては複数のDG、特殊な物理値変換を入れる。
- 上記を元にMDF構成を決めた。
- DG2つ、CN3つ&それぞれに物理値変換式を含む。
- AsamMdfによるMDF生成手順を確認。
- 最初にシグナルを作っておいてその後にMDFのデータ構造を作って行って最後にファイル保存。
バックナンバーはこちら。
コメント