BlockDiagnostic
個々のブロック線形化に関する診断情報
説明
Simulink® モデルを線形化する際、BlockDiagnostic
オブジェクトを含む LinearizationAdvisor
オブジェクトを作成することができます。各 BlockDiagnostic
オブジェクトには、対応する Simulink ブロックの線形化に関する診断情報が含まれています。BlockDiagnostic
オブジェクトのプロパティを調べることにより、ブロック線形化のトラブルシューティングを行えます。
作成
LinearizationAdvisor
オブジェクトに含まれるブロック診断情報にアクセスするには、関数 getBlockInfo
を使用します。この関数を使用すると、単一の BlockDiagnostic
オブジェクト、または複数の BlockDiagnostic
オブジェクトを取得できます。たとえば、以下を参照してください。
プロパティ
IsOnPath
— ブロックが線形化パス上にあるかどうかを示すフラグ
'Yes'
| 'No'
ブロックが線形化パス上にあるかどうかを示すフラグ。次のいずれかとして指定します。
'Yes'
— ブロックが線形化パス上にある'No'
— ブロックが線形化パス上にない
線形化パスは、線形化入力を線形化出力に接続します。Simulink モデルで線形化パスを表示するには、関数 highlight
を使用します。
ContributesToLinearization
— ブロックがモデルの線形化に数値的に影響するかどうかを示すフラグ
'Yes'
| 'No'
ブロックがモデルの線形化に数値的に影響するかどうかを示すフラグ。次のいずれかとして指定します。
'Yes'
— ブロックが線形化の結果に寄与する'No'
— ブロックが線形化の結果に寄与しない
ブロックが線形化パス上にない場合、つまり IsOnPath
が 'No'
である場合、ContributesToLinearization
は 'No'
になります。
DiagnosticMessages
— 診断メッセージ
文字ベクトルの cell 配列
ブロック線形化に関する診断メッセージ。文字ベクトルの cell 配列として指定されます。これらのメッセージは、ブロック線形化に影響し得る潜在的な問題を示します。
HasDiagnostics
が 'No'
の場合、DiagnosticMessages
は空の cell 配列です。
BlockPath
— ブロック パス
文字ベクトル
Simulink モデルのブロック パス。文字ベクトルとして指定します。
HasDiagnostics
— ブロックに診断メッセージをあるかどうかを示すフラグ
'Yes'
| 'No'
ブロックがその線形化に関する診断メッセージをもつかどうかを示すフラグ。次のいずれかとして指定します。
'Yes'
— ブロックに診断メッセージがある'No'
— ブロックに診断メッセージがない
HasDiagnostics
が 'Yes'
の場合、DiagnosticMessages
はメッセージを含む文字ベクトルの cell 配列です。
Linearization
— ブロックの線形化
状態空間モデル
ブロックの線形化。状態空間モデルとして指定します。
LinearizationMethod
— 線形化の方法
'Exact'
| 'Perturbation'
| 'Block Substituted'
| 'Simscape Network'
| 'Not Supported'
線形化の方法。次のいずれかとして指定します。
'Exact'
— 定義された正確な線形化を使ってブロックが線形化されます。'Perturbation'
—数値摂動を使ってブロックが線形化されます。'Block Substituted'
— 指定されたカスタムの線形化を使ってブロックが線形化されます。'Simscape Network'
— Simscape™ エンジンで定義された正確な線形化を使って Simscape ネットワークが線形化されます。LinearizationAdvisor
オブジェクトは、Simscape ネットワークについてコンポーネントレベルの診断情報を提供しません。代わりに、単一の Solver Configuration ブロックに接続されている複数の Simscape コンポーネントの診断情報をまとめて提供します。'Not Supported'
— 現在の構成ではブロックが線形化をサポートしません。たとえば、外部リセットのある Discrete Transfer Fcn ブロックでは線形化がサポートされません。この場合、ブロックの
Linearization
はゼロになります。トラブルシューティング情報の詳細については、DiagnosticMessages
プロパティをチェックしてください。
OperatingPoint
— 操作点
BlockOperatingPoint
オブジェクト
ブロックが線形化される操作点。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 で導入R2018a: Solver Configuration ブロックによる単一のブロック診断に Simscape の状態と入力を結合
線形化アドバイザーを使用して線形化の問題のトラブルシューティングを行う場合、Simscape の状態と入力に関する診断情報が単一のブロック診断オブジェクトに結合されるようになりました。以前は状態と入力が別々の診断オブジェクトに返されていました。
コマンド ラインで Simscape ネットワークの診断情報を表示するには、まず線形化アドバイザー オブジェクト advisor
にクエリを行い 'simscape'
タイプのブロックを求めます。
qSS = linqueryIsBlockType('simscape');
advSS = find(advisor,qSS);
R2017b では、Simscape ネットワークの状態または入力情報を表示するには、advSS
にある診断情報のブロック パスで EVAL_KEY/STATE
または EVAL_KEY/INPUT
のテキストをそれぞれ検索していました。たとえば、状態情報をもつ診断を見つけるには、次を使用しました。
paths = getBlockPaths(advisor);
index = contains(paths,'EVAL_KEY/STATE');
diag = getBlockInfo(advSS,index);
その後、関連する操作点オブジェクト内の状態または入力の情報を表示しました。
diag(i).OperatingPoint
R2018a 以降は、Simscape ブロック診断オブジェクトの操作点から、ブロック パスを検索せずに、状態と入力の両方の情報に直接アクセスします。
advSS.BlockDiagnostics(i).OperatingPoint
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)