最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

シミュレーション エラーのトラブルシューティング

トラブルシューティングのヒントと手法

Simscape™ シミュレーション中に、1 つまたは複数のエラー メッセージが表示され、完了前に停止する場合があります。この節では、一般的なエラーの種類とエラーの修正方法を説明します。エラーの特定と追跡については、前の節Simscape でのシミュレーションの仕組みも参照してください。

シミュレーションが失敗した場合、次の作業を行います。

  • モデル コンフィギュレーションを確認します。エラー メッセージにブロックのリストが含まれる場合は、まずそのブロックを確認します。また、次の項目についても確認します。

    • 接続エラー — モデルが物理システムとして有効な状態か確認します。たとえば、アクチュエータが相互に接続されていてそれぞれ反対の方向に動こうとしていないか、または参照ノードとの接続が誤っていて動作できなくなっていないか確認します。電気回路の場合、極性や接地を確認します。

    • 単位の誤り — Simscape 単位マネージャーでは物理単位を非常に柔軟に使用することができます。ただし、単位を正しく指定するよう十分な注意が必要です。特に、Simulink-PS Converter ブロックと PS-Simulink Converter ブロックの場合にはこの点に注意してください。回路の解析を行う場合、まずすべてのコンバーター ブロックを開き、単位が正しく指定されているか確認します。

  • 回路を簡略化します。回路が無駄に複雑であることが、シミュレーションのエラーの原因として最も多くなっています。

  • システムをサブシステムに分割し、各ユニットの動作が設計どおりであることを確認できるまで各ユニットのテストを繰り返します。

  • システムの構築時には、少しずつ複雑なものにしていきます。

MathWorks では、モデルの作成、シミュレーション、テストは段階的に行うことを推奨しています。まずシステムの簡単な理想化モデルを作成し、シミュレーションを実行して、設計どおりに動作することを確認します。その後、段階的にモデルをより現実的なものにし、摩擦損失、モーター シャフトのコンプライアンス、ハード ストップなどの実際に発生し得る現象を追加していきます。モデルのシミュレーションとテストは各段階で行います。サブシステムを使用してモデルの階層構造を把握し、モデル コンフィギュレーション全体のテストを行う前にサブシステムのシミュレーションとテストを個別に実行します。この手法により、モデルが高度に組織化され、トラブルシューティングも簡単になります。

システム構成エラー

Solver Configuration ブロックの欠落

トポロジ的に区別可能な各 Simscape ブロック線図では、Solver Configuration ブロックが 1 つだけ接続されている必要があります。Solver Configuration ブロックではグローバル環境情報が指定され、シミュレーションの開始前に、モデルで必要なソルバーのパラメーターが設定されます。

Solver Configuration ブロックがないことを示すエラー メッセージが表示された場合は、Simscape Utilities ライブラリを開き、回路上の任意の位置に Solver Configuration ブロックを追加します。

余分な Fluid Properties ブロックまたは Gas Properties ブロック

モデルに油圧要素がある場合、ブロック線図内のトポロジ的に区別可能な各油圧回路には Custom Hydraulic Fluid ブロック (または Simscape Fluids™ ブロック ライブラリで利用できる Hydraulic Fluid ブロック) が接続されている必要があります。これらのブロックは、油圧回路に接続しているすべてのブロックに対するグローバル パラメーターとして使用される流体特性を定義します。作動油ブロックがループに付加されていない場合、このループの油圧ブロックは既定の流体を使用します。ただし、ループ内に複数の作動油ブロックがあるとエラーが発生します。

同様に、熱流体回路内に複数の Thermal Liquid Settings (TL) ブロックがある場合や、二相流体回路内に複数の Two-Phase Fluid Properties (2P) ブロックがある場合、あるいは気体回路内に複数の Gas Properties (G) ブロックがある場合にもエラーが発生します。

ネットワークに付加されているドメイン特有のグローバル パラメーター ブロックが多すぎるというエラー メッセージが表示された場合は、余分な Hydraulic Fluid ブロック、Custom Hydraulic Fluid ブロック、Thermal Liquid Settings (TL) ブロック、Two-Phase Fluid Properties (2P) ブロック、または Gas Properties (G) ブロックを探して削除します。

参照ブロックの欠落

Simscape ライブラリにはドメイン特有の参照ブロックがあります。これらのブロックは所定の種類の保存端子に対する参照点を表します。たとえば、トポロジ的に区別可能な各電気回路には、少なくとも 1 つの Electrical Reference ブロック (接地を表す) がなければなりません。同様に、大気を参照しているブロックの油圧保存端子 (たとえば、油圧ポンプの吸引端子。また、バルブ、シリンダー、パイプラインの戻り端子が大気に直接接続していると考えられる場合は、これらの端子も該当します) はいずれも Hydraulic Reference ブロック (大気圧との接続を表す) に接続しなければなりません。フレームに厳重に留められている (接地されている) 機械並進端子はいずれも Mechanical Translational Reference ブロックに接続しなければなりません。この他にもさまざまな例があげられます。

参照ブロックつまりノードがないことを示すエラー メッセージが表示された場合は、システム構成を確認し、上記のルールに基づいて所定の参照ブロックを追加します。参照ノードがないことを示す診断メッセージには、参照ノードを必要とする特定のブロックと変数に関する情報が含まれています。これは、特に、複数のドメインがモデルに含まれている場合に役立ちます。モデル化のベスト プラクティスの詳細と例は、グラウンディングのルールを参照してください。

物理システム表現での基本的なエラー

Simscape モデリング環境では、物理システムは Kirchhoff の一般回路法則に従って物理ネットワークとして表されます。モデル コンフィギュレーションによってはこの法則に違反するものがあり、その場合不正となります。違反には大きく分けて次の 2 種類があります。

  • 並列に接続されているドメイン特有のアクロス変数のソース (電圧源、油圧源、速度源など)

  • 直列に接続されているドメイン特有のスルー変数のソース (電流源、流量源、力源、トルク源など)

このような構成は実際には不可能なため、理論的には正しくありません。モデルにこのような構成が含まれる場合、シミュレーションを実行するとソルバーはエラーを表示し、次の例のようにブロックのリストを表示します。

例-  次の図のモデルには、2 つの Ideal Translational Velocity Sources ブロックが並列に接続されています。このため独立した速度源のループが発生し、ソルバーは回路に対して一貫した方程式系を作成できなくなります。

モデルをシミュレーションしようとすると、ソルバーはエラー メッセージを表示します。このメッセージには Ideal Translational Velocity Source ブロックと Ideal Translational Velocity Source1 ブロックへのリンクがあります。この回路を修正するには、2 つの速度源を 1 つの Ideal Translational Velocity Source ブロックに置き換えるか、2 つの速度源の間に Translational Damper ブロックを追加します。

数値シミュレーションの問題

数値シミュレーションの問題は、特定の回路構成の結果か、パラメーターの不連続点の結果発生します。

従属動的状態

回路の構成によっては、従属動的状態、つまりいわゆる高インデックス微分代数方程式 (DAE) が発生します。Simscape ソルバーは、状態内で線形であり時間やシステムへの入力からは独立している動的状態間の従属関係を処理できます。たとえば、並列に接続されているコンデンサや直列に接続されているインダクターでは問題は発生しません。この他の従属動的状態の回路構成では、場合によってはシミュレーションの速度が低下したり、ソルバーの初期化が失敗してエラーが発生したりすることがあります。

動的状態に非線形代数関係が存在する場合、問題が発生することがあります。例として、2 つの慣性が非線形ギア拘束 (楕円ギアなど) により接続されている場合などがあげられます。シミュレーションが失敗した場合、Simscape ソルバーでは問題があるコンポーネントを特定し、当該のブロックと各ブロック内の方程式へのリンクが記載されたエラー メッセージを表示できることがあります。

パラメーターの不連続点

時間などの変数に依存する非線形パラメーターを使用している場合、パラメーターの不連続点が原因で数値シミュレーションの問題が発生することがあります。このような問題は通常、過渡的な初期化の段階でおのずと明らかになります (過渡的なシミュレーションの問題を参照してください)。

初期条件解決の失敗

すべてのシステム変数 (一部のシステム変数では初期条件が指定されています) を解決する初期条件解決が失敗する場合があります。これにはいくつかの原因が考えられます。

  • システム構成エラー。この場合、[シミュレーション診断] ウィンドウには通常、参照ノードの欠落やコンポーネントの方程式に関する警告などの具体的な追加のエラーメッセージが表示され、その後、該当コンポーネントのリストが指定されます。詳細は、システム構成エラーを参照してください。

  • 従属動的状態。この場合にも、[シミュレーション診断] ウィンドウに、コンポーネントの方程式に関する警告などの具体的な追加のエラー メッセージが表示され、その後、当該コンポーネントのリストが指定される場合があります。詳細は、従属動的状態を参照してください。

  • 残差の許容誤差が小さすぎて、シミュレーション開始時に代数拘束に対する一貫した解が得られない場合があります。この場合、Solver Configuration ブロックで [Consistency Tolerance] パラメーターの値を大きくしてみる (許容誤差を大きくする) ことができます。

[シミュレーション診断] ウィンドウに具体的なメッセージが他にあれば、まずそのメッセージに対処してから、シミュレーションを再実行します。トラブルシューティングのヒントと手法も参照してください。

過渡的なシミュレーションの問題

過渡的な初期化は、シミュレーション開始時 (初期条件の計算後) やその後の不連続点 (ハード ストップにより停止した場合など) などのイベントが発生した後に発生します。この処理では、すべての動的変数が固定され、代数変数と動的変数の微分が求められます。過渡的な初期化の目的は、次の段階である過渡的な解決のための一貫した初期条件を得ることです。

過渡的な初期化が収束しない

過渡的な初期化が収束しないことを示すエラーメッセージや、一貫した一連の初期条件を生成できないことを示すエラー メッセージが発生した場合、過渡的な初期化に関する問題が発生しています。これはパラメーターが連続していないことが原因として考えられます。モデルを確認して、不連続性の原因を特定してください。トラブルシューティングのヒントと手法も参照してください。

また、Solver Configuration ブロックで [Consistency Tolerance] パラメーターの値を小さくしてみる (許容誤差を小さくする) こともできます。

ステップ サイズ関連のエラー — 従属状態 — 高スティッフ

ステップ サイズ関連の一般的なエラー メッセージとして、最小ステップ サイズ条件に違反せずにステップ サイズを小さくすることが一定の回数連続して失敗したことを示すメッセージがあげられます。このエラー メッセージは、モデルの微分代数方程式 (DAE) を解く際に数値上の問題が発生していることを示しています。原因として、従属動的状態 (高インデックス DAE) やシステムの高スティッフがあげられます。以下のような解決方法があります。

  • ソルバーの許容誤差を小さくする ([コンフィギュレーション パラメーター] ダイアログ ボックスの [相対許容誤差] パラメーターの値を小さくする)。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスの [絶対許容誤差] パラメーターに [自動] 以外の値を指定する。このパラメーター値で実験する。

  • 残差の許容誤差を小さくする (Solver Configuration ブロックで [Consistency Tolerance] パラメーターの値を小さくする)。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスで [Number of consecutive min step size violations allowed] パラメーターの値を大きくする (エラー メッセージに含まれているステップ サイズの連続違反回数より大きい値に設定する)。

  • モデル コンフィギュレーションを確認して回路を単純化するか、回路に小さな寄生項を追加して、従属動的状態が発生しないようにする。詳細は、数値シミュレーションの問題を参照してください。