9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Simulink API (5) 2種類のブロックプロパティとSimulinkモデルの動き その1

Last updated at Posted at 2020-01-15

2種類のブロックプロパティとは

今回は、”Simulinkブロックパラメータ”の説明をしつつ、Simulinkモデリングの基本・重要な考え方を2回に分けて述べたいと思います。(文章力大事だね。。。)

Simulinkのブロックプロパティの値を取得する方法としてget_param関数があります。
例えば、図のGainブロックのゲイン値を取得したい場合、次のようになります。
API6.png

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. コンパイル型プロパティ

1. 静的なプロパティ

静的なプロパティとは、シミュレーション実行に依らず、一意に定まるプロパティです。

2. コンパイル型プロパティ

コンパイル型プロパティとは、シミュレーション実行直前にresolveされるプロパティです。
データ型、単位、次元、サンプル時間などのプロパティが属します。
では、先程間違えたコマンドの前に「シミュレーション直前」の状態を作ってからプロパティを取得してみましょう。

手順1. コンパイル状態(シミュレーション直前状態)を作り、モデルをロックさせます。
feval(bdroot(gcs),[],[],[],'compile');

Simulinkのキャンバスがグレーになり、モデルの状態が"Compiled"となります。
データ型も更新されGainブロックの出力データ型はdoubleだった表示がint16になります。
API7.png

手順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ブロックの出力信号のデータ型に設定したプロパティ値のコマンドが抜けておりましたので、追加しました。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?