Simulink API (5) 2種類のブロックプロパティとSimulinkモデルの動き その1
2種類のブロックプロパティとは
今回は、”Simulinkブロックパラメータ”の説明をしつつ、Simulinkモデリングの基本・重要な考え方を2回に分けて述べたいと思います。(文章力大事だね。。。)
Simulinkのブロックプロパティの値を取得する方法としてget_param関数があります。
例えば、図のGainブロックのゲイン値を取得したい場合、次のようになります。
gainValue = get_param(gcbh,'Gain')
gainValue =
'5'
このプログラム自体は、どのブロックがどういう名前のプロパティを持っているか?がわかっていれば簡単なので、これ以上深堀りしません。
では、同じ図のGainブロックの出力信号のデータ型は同じget_paramを使ってどの様に取得すれば良いでしょうか?
portType = get_param(gcbh,'CompiledPortDataTypes')
portType =
0×0 empty struct array with fields:
Inport
Outport
Enable
Trigger
State
LConn
RConn
Ifaction
Reset
はい、間違いです。何も得られませんでした。
Q : Gainブロックの出力信号のデータ型に設定したプロパティ値は何でしょうか?
であれば、次のコマンドで正解ですが、
get_param(gcbh,'OutDataTypeStr')
ans =
'Inherit: Same as input'
「Gainブロックの出力信号のデータ型は」と問をたてているところがポイントです。
Simulinkは「シミュレーション実行が可能な」ブロックダイアグラムで手軽に実機レスなシミュレーション環境を構築できます。Simulinkブロックは、このシミュレーション実行可能なブロックライブラリで、プロパティ種別として2つのタイプがあります。
- 静的なプロパティ
- コンパイル型プロパティ
1. 静的なプロパティ
静的なプロパティとは、シミュレーション実行に依らず、一意に定まるプロパティです。
2. コンパイル型プロパティ
コンパイル型プロパティとは、シミュレーション実行直前にresolveされるプロパティです。
データ型、単位、次元、サンプル時間などのプロパティが属します。
では、先程間違えたコマンドの前に「シミュレーション直前」の状態を作ってからプロパティを取得してみましょう。
手順1. コンパイル状態(シミュレーション直前状態)を作り、モデルをロックさせます。
feval(bdroot(gcs),[],[],[],'compile');
Simulinkのキャンバスがグレーになり、モデルの状態が"Compiled"となります。
データ型も更新されGainブロックの出力データ型はdoubleだった表示がint16になります。
手順2. コンパイル型のプロパティを取得します
portType = get_param(gcbh,'CompiledPortDataTypes')
portType =
struct with fields:
Inport: {'int16'}
Outport: {'int16'}
Enable: []
Trigger: []
State: []
LConn: []
RConn: []
Ifaction: []
Reset: []
手順3. コンパイル状態を解除します
feval(bdroot(gcs),[],[],[],'term');
はい、出来ました!一件落着。。。
「Simulinkってシミュレーション実行できる」っていうのが大切なんですよね。
Simulink APIを使ってプログラムを作成するときにも、Simulinkモデルは生き物のように扱わないと痛い目にあいます。
次回、その2へ続きます。
修正1:
Gainブロックの出力信号のデータ型に設定したプロパティ値のコマンドが抜けておりましたので、追加しました。
Author And Source
この問題について(Simulink API (5) 2種類のブロックプロパティとSimulinkモデルの動き その1), 我々は、より多くの情報をここで見つけました https://qiita.com/stozaki/items/ecc2fd157ea7c97a50d1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .