主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

モデル内の代数ループの識別

金宝app®によってモデルに代数ループがあることが報告された場合,代数ループソルバーによってループを解くことができる可能性があります。金宝app仿真软件でループが解けない場合に,ループを削除する方法がいくつかあります。

このワークフローを使用して,代数ループを削除する方法を決定します。

モデル内の代数ループの強調表示

getAlgebraicLoopsを使用してモデル内の代数ループを識別し,それらの代数ループを仿金宝app真软件エディターで強調表示します。このアプローチを使用すると,次のことが可能になります。

  • モデルの階層構造の複数の階層を移動して代数ループを見つけることができます。

  • 真の代数ループと疑似代数ループを識別できます。

  • モデル内のすべてのループを同時に可視化できます。

  • 境界を越えて,モデルの内外に移動する必要はありません。

  • ループを順番に検出する必要はありません。また,ループを検出して解くたびに,モデルをコンパイルする必要はありません。したがって,ループをすばやく解くことができます。

特定のサブシステムではなく,モデル全体で代数ループの強調表示を実行します。

  1. モデルを開きます。

  2. [モデルコンフィギュレーションパラメーター]の[診断]ペインで,(代数ループ][なし]または[警告]に設定します。このパラメーターを[エラー]に設定すると,モデルはコンパイルされません。

  3. エラーなしでモデルをコンパイルします。代数ループを強調表示する前にモデルをコンパイルしなければなりません。

  4. MATLAB®コマンドプロンプトで,次のように入力します。

    金宝appSimulink.BlockDiagram.getAlgebraicLoops (bdroot)

関数getAlgebraicLoopsによって,サブシステム内の代数ループを含め,モデル内の代数ループが強調表示されます。また,各ループに関する情報を含む以下のレポートが作成されます。

  • 実線は真の代数ループを表します。

  • 点線は疑似代数ループを表します。

  • 代数変数が割り当てられたブロックの周りは赤で強調表示されます。

  • [ループID)を使用して,特定のループを含むシステムを識別できます。

ループの[表示]チェックボックスのオン/オフを切り替えてレポートをカスタマイズします。

モデル内の代数ループを識別したら,モデルを編集してそれらの代数ループを削除できます。強調表示レポートを閉じて,モデルを変更します。レポートを閉じないとモデルは編集できません。

金宝app仿真软件ではループの強調表示は保存されません。モデルを閉じるか,表示を終了すると,ループの強調表示は削除されます。

代数ループ診断の使用

金宝app仿真软件はシミュレーションの初期化時に代数ループを検出します。たとえば,ブロック線図を更新したときなどです。(代数ループ]の診断を設定して、モデル内で代数ループが検出されたらエラーまたは警告が報告されるようにします。

[モデルコンフィギュレーションパラメーター]の[診断]ペインで,(代数ループ]パラメーターを設定します。

  • 没有一个——模金宝app型は代数ループの解を出そうとしますが,解を出せなければエラーを報告します。

  • 警告——代数ループがあると警告が出ます。金宝app仿真软件は代数ループの解を出そうとしますが,解を出せなければエラーを報告します。

  • 错误——代数ループは初期化を停止します。金宝app仿真软件がループを解く前に,手動でループを確認します。

以下の例では,代数ループの診断を使用してsldemo_hydcylモデルで代数ループを強調表示する方法を示します。

  1. sldemo_hydcylモデルを開きます。

  2. [モデルコンフィギュレーションパラメーター]の[診断]ペインで,(代数ループ]パラメーターを错误に設定します。

  3. モデルをシミュレーションしてみます。

金宝app仿真软件が初期化中に代数ループを検出すると,シミュレーションは停止します。診断ビューアーにエラーメッセージが表示され,代数ループの一部になっているすべてのブロックがリストされます。モデルでは,赤く強調表示された部分は,ループを構成するブロックと信号を示します。

強調表示を削除するには,診断ビューアーを閉じます。

関連するトピック