Main Content

BlockDiagnostic

個々のブロック線形化に関する診断情報

説明

Simulink® モデルを線形化する際、BlockDiagnostic オブジェクトを含む LinearizationAdvisor オブジェクトを作成することができます。各 BlockDiagnostic オブジェクトには、対応する Simulink ブロックの線形化に関する診断情報が含まれています。BlockDiagnostic オブジェクトのプロパティを調べることにより、ブロック線形化のトラブルシューティングを行えます。

作成

LinearizationAdvisor オブジェクトに含まれるブロック診断情報にアクセスするには、関数 getBlockInfo を使用します。この関数を使用すると、単一の BlockDiagnostic オブジェクト、または複数の BlockDiagnostic オブジェクトを取得できます。たとえば、以下を参照してください。

プロパティ

すべて展開する

ブロックが線形化パス上にあるかどうかを示すフラグ。次のいずれかとして指定します。

  • 'Yes' — ブロックが線形化パス上にある

  • 'No' — ブロックが線形化パス上にない

線形化パスは、線形化入力を線形化出力に接続します。Simulink モデルで線形化パスを表示するには、関数 highlight を使用します。

ブロックがモデルの線形化に数値的に影響するかどうかを示すフラグ。次のいずれかとして指定します。

  • 'Yes' — ブロックが線形化の結果に寄与する

  • 'No' — ブロックが線形化の結果に寄与しない

ブロックが線形化パス上にない場合、つまり IsOnPath'No' である場合、ContributesToLinearization'No' になります。

ブロック線形化に関する診断メッセージ。文字ベクトルの cell 配列として指定されます。これらのメッセージは、ブロック線形化に影響し得る潜在的な問題を示します。

HasDiagnostics'No' の場合、DiagnosticMessages は空の cell 配列です。

Simulink モデルのブロック パス。文字ベクトルとして指定します。

ブロックがその線形化に関する診断メッセージをもつかどうかを示すフラグ。次のいずれかとして指定します。

  • 'Yes' — ブロックに診断メッセージがある

  • 'No' — ブロックに診断メッセージがない

HasDiagnostics'Yes' の場合、DiagnosticMessages はメッセージを含む文字ベクトルの cell 配列です。

ブロックの線形化。状態空間モデルとして指定します。

線形化の方法。次のいずれかとして指定します。

  • 'Exact' — 定義された正確な線形化を使ってブロックが線形化されます。

  • 'Perturbation' —数値摂動を使ってブロックが線形化されます。

  • 'Block Substituted' — 指定されたカスタムの線形化を使ってブロックが線形化されます。

  • 'Simscape Network' — Simscape™ エンジンで定義された正確な線形化を使って Simscape ネットワークが線形化されます。LinearizationAdvisor オブジェクトは、Simscape ネットワークについてコンポーネントレベルの診断情報を提供しません。代わりに、単一の Solver Configuration ブロックに接続されている複数の Simscape コンポーネントの診断情報をまとめて提供します。

  • 'Not Supported' — 現在の構成ではブロックが線形化をサポートしません。たとえば、外部リセットのある Discrete Transfer Fcn ブロックでは線形化がサポートされません。

    この場合、ブロックの Linearization はゼロになります。トラブルシューティング情報の詳細については、DiagnosticMessages プロパティをチェックしてください。

ブロックが線形化される操作点。BlockOperatingPoint オブジェクトとして指定します。

使用法

個々のブロックの線形化の診断を調べることにより、Simulink モデルの線形化をトラブルシューティングすることができます。そのためには、getBlockInfo で返された BlockDiagnostic オブジェクトのプロパティを調べます。詳細については、コマンド ラインを使用した線形化の結果のトラブルシューティングを参照してください。

すべて折りたたむ

Simulink モデルを読み込みます。

mdl = 'scdpendulum';
load_system(mdl)

モデルを線形化して LinearizationAdvisor オブジェクトを取得します。

io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;

線形化で問題が生じる可能性のあるブロックを見つけます。

blocks = advise(advisor);

これらのブロックの診断を取得します。

diags = getBlockInfo(blocks)
diags = 
Linearization Diagnostics for the Blocks:

Block Info:
-----------
Index   BlockPath                                           Is On Path   Contributes To Linearization   Linearization Method   
1.      scdpendulum/pendulum/Saturation                     Yes          No                             Exact                  
2.      scdpendulum/angle_wrap/Trigonometric Function1      Yes          No                             Perturbation           
3.      scdpendulum/pendulum/Trigonometric Function         Yes          No                             Perturbation           

Simulink モデルを読み込みます。

mdl = 'scdpendulum';
load_system(mdl)

モデルを線形化して LinearizationAdvisor オブジェクトを取得します。

io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;

Saturation ブロックの診断情報を取得します。

satDiag = getBlockInfo(advisor,'scdpendulum/pendulum/Saturation')
satDiag = 
Linearization Diagnostics for scdpendulum/pendulum/Saturation with properties:

                      IsOnPath: 'Yes'
    ContributesToLinearization: 'No'
           LinearizationMethod: 'Exact'
                 Linearization: [1x1 ss]
                OperatingPoint: [1x1 linearize.advisor.BlockOperatingPoint]

一度に複数のブロックの診断情報を取得することもできます。モデルの sin ブロックの診断を取得します。

sinBlocks = {'scdpendulum/pendulum/Trigonometric Function';
             'scdpendulum/angle_wrap/Trigonometric Function1'};
         
sinDiag = getBlockInfo(advisor,sinBlocks)
sinDiag = 
Linearization Diagnostics for the Blocks:

Block Info:
-----------
Index   BlockPath                                           Is On Path   Contributes To Linearization   Linearization Method   
1.      scdpendulum/angle_wrap/Trigonometric Function1      Yes          No                             Perturbation           
2.      scdpendulum/pendulum/Trigonometric Function         Yes          No                             Perturbation           

バージョン履歴

R2017b で導入

すべて展開する