【FMU】最小構成のMBD事例 第2章 その40【FMI⑪】

【FMU】最小構成のMBD事例 第2章 その40【FMI⑪】 事例
【FMU】最小構成のMBD事例 第2章 その40【FMI⑪】

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

はじめに

前回はFMUのユーザ視点に於いての位置づけを確認し、
これを元に仕様の性質から予測される利用手順を列挙してみた。
やはり、modelDescription.xmlの中身を確認しないと具体的な見え方は分かりにくい。

よって、今回はmodelDescription.xmlの中身についてさらっと確認してみる。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

modelDescription.xmlの中身

フクさん
フクさん

じゃ、早速modelDescription.xmlの一部を抜粋。

 <!-- Index of variable = "254" -->
  <ScalarVariable
    name="dcpm.ia"
    valueReference="9"
    description="Armature current"
    variability="continuous"
    causality="local"
    >
    <Real unit="A"/>
  </ScalarVariable>
  <!-- Index of variable = "255" -->
  <ScalarVariable
    name="dcpm.ie.n.v"
    valueReference="13"
    description="Potential at the pin"
    variability="continuous"
    causality="local"
    >
    <Real unit="V"/>
  </ScalarVariable>
太郎くん
太郎くん

おー。
いきなりだな・・・。

フクさん
フクさん

とりあえず、DCモータの電流と電圧のところを引っこ抜いてきた感じだ。

各種パラメータ

太郎くん
太郎くん

パラメータとしては以下になるのかな?

  • name
  • valueReference
  • description
  • variability
  • causality
  • Real unit
フクさん
フクさん

そうだね。

太郎くん
太郎くん

name、description、Real unitはその名の通り、
名称、詳細、単位っては分かるけど、
それ以外の
valueReference、variability、causality
が分からないな・・・。

valueReference

フクさん
フクさん

valueReferenceはインターフェースに割り当てられたインデックスのようなものだな。
実際のシグナルの読み書きをする際は、このvalueReferenceを元に実施するようだ。
まぁnameを元にvalueReferenceを引いてきたり、
valueReferenceからnameを逆引きしたりとかはあると思うけど。

太郎くん
太郎くん

さらっと言ったけど、
結構重要なパラメータっぽいね。

フクさん
フクさん

そうだね。
プラットフォームの内部的にはこれを起点にFMU内部とやり取りしてるはずだからね。

仕様書上のvalueReferenceの説明

フクさん
フクさん

一応、FMI仕様も確認しておこう。

A handle of the variable to efficiently identify the variable valuein the model interface. This handle is a secret of the toolthat generated the C functions;it is not required to be unique.The only guarantee is that valueReferenceis sufficient to identify the respective variable valuein the call of the C functions. This implies that it is unique for a particular base data type (Real, Integer/Enumeration, Boolean, String) with exception of variables that have identical values (such variables are also called “alias” variables).Thisattribute is “required”.

FMI-Specification-2.0.2.pdf(https://github.com/modelica/fmi-standard/releases/download/v2.0.2/FMI-Specification-2.0.2.pdf)の2.2.7Definition of Model Variables(ModelVariables)より

↓日本語訳

モデル・インターフェースで変数の値を効率的に特定するための変数のハンドル。このハンドルは、C関数を生成したツール依存であり、一意である必要はない。唯一の保証は、C関数の呼び出しでそれぞれの変数値を識別するのに十分なvalueReferenceであること。これは、同一の値を持つ変数(このような変数は「エイリアス」変数とも呼ばれます)を除き、特定の基本データ型(Real、Integer/Enumeration、Boolean、String)に対して一意であることを意味しています。

太郎くん
太郎くん

つまり、

  • 変数をハンドルするための値。
  • 特に何が何番という決まりはない。
  • 原則、同じ値が有ってはいけない。
  • エイリアス変数ってのがあってこれは同じで良い。
  • 基本データ型はReal、Integer/Enumeration、Boolean、String

ってことか。

フクさん
フクさん

正解!

太郎くん
太郎くん

エイリアスが何?ってのはあるけど。

フクさん
フクさん

まぁ今の時点では同じシグナルなんだけど、別名が付いてるものって程度の認識で良いよ。

太郎くん
太郎くん

名前的にもそんな感じだよねー。

まとめ

フクさん
フクさん

まとめだよ。

  • modelDescription.xmlの中身を確認。
    • name、valueReference、description、variability、causality、Real unitが存在。
  • valueReferenceについて仕様確認。
    • 変数ハンドル用で数値の衝突は禁止。
    • ただし、エイリアスはその限りではない。

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

コメント

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