【Python】最小構成のMBD事例 第2章 その286【AsamMdf⑥】

【Python】最小構成のMBD事例 第2章 その286【AsamMdf⑥】 事例
【Python】最小構成のMBD事例 第2章 その286【AsamMdf⑥】

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

はじめに

前回は、MDFの生成方針とそれに伴ったMDF構成を決めた。
DG2つ、CN2つ&それぞれに物理値変換式を含む構成。

AsamMdfによるMDF生成手順も確認したので、今回からは実際に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

import処理

太郎くん
太郎くん

今回から実際にPythonでMDFの生成だね。

フクさん
フクさん

まずはimport。
numpyとasasmmdfモジュールをimportするんだけど、
asammdfモジュールの方はMDFとSignalをimportする。
以下の書き方になるね。

import numpy as np
from asammdf import MDF, Signal
太郎くん
太郎くん

numpyも使うんだ。

フクさん
フクさん

numpyは疑似シグナルを作成するためにimportする。
MDF生成としてmustなものではないが・・・まぁ大体必要になるだろう。

タイムスタンプ生成

フクさん
フクさん

次はタイムスタンプを生成しておく。
今回の構成だと10msサンプリングと100msサンプリングの2種類
期間としては10秒にしておこう。
numpyの等差数列で簡単に作れる。

term = 10
dt10ms = 0.01
dt100ms = 0.1
t10ms = np.arange(0,term,dt10ms)
t100ms = np.arange(0,term,dt100ms)
太郎くん
太郎くん

一撃かー。
これはnumpy様様だなー。
数列、ベクトル、行列使うときはもう必須ライブラリだね。

シグナル生成

フクさん
フクさん

次はシグナルの生成。
10msサンプリングと100msサンプリングがあるので分けて書いておこう。
まずは10msサンプリングの方を書くと以下になる。

■ シグナル生成

# 無変換のチャネル
sig_t10ms_sin = Signal(
    np.sin(t10ms),
    t10ms,
    name="t10ms_sin",
    unit="V",
    conversion=None,
    comment="t10ms_sin",
)
# y(t)=at+bの物理変換式のチャネル
conversion = {"a": 2, "b": -0.5}
sig_t10ms_Linear = Signal(
    t10ms,
    t10ms,
    name="t10ms_Linear",
    unit="rad",
    conversion=conversion,
    comment="t10ms_Linear",
)
# sin(t)の物理変換式のチャネル
conversion = {"formula": "sin(X)"}
sig_t10ms_LinearToSin = Signal(
    t10ms,
    t10ms,
    name="t10ms_LinearToSin",
    unit="rad/s",
    conversion=conversion,
    comment="t10ms_LinearToSin",
)
太郎くん
太郎くん

前回出したMDF構成のDataGroup1の方の構成だね。

フクさん
フクさん

Signalを生成するときに信号、タイムスタンプを引数にする。
オプションパラメータとして、以下がある。
name:チャネル名
unit:単位
conversion:物理変換式または係数
comment:チェンネルの説明

太郎くん
太郎くん

conversionのところが良く分からないな・・・。

フクさん
フクさん

conversionのところは、結構魔境なんだよね・・・。

太郎くん
太郎くん

ま、魔境!!!

太郎くん
太郎くん

(これはつつかない方が吉だ!!!)

フクさん
フクさん

と言って放って置くのも気持ち悪いんで次回詳しく説明しよう。

太郎くん
太郎くん

(いやだーーーー!!!)

まとめ

フクさん
フクさん

まとめだよ。

  • 今回からPythonによるMDF生成を開始。
  • まずはimport
    • asammdfモジュールのMDFとSignal。
    • 疑似データ生成用にnumpyも。
  • numpyでタイムスタンプ生成。
  • シグナルを生成。
    • 信号、タイムスタンプを引数にして生成。
    • これ以外のオプションもあるがconversionが魔境。

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

コメント

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