Main Content

Simscape モデルによる物理システムの表現

物理システムの表現

この節では、物理システムの数学表現の主要な特徴と、Simscape™ ソフトウェアによるこうした表現の実装方法について説明します。この概要は、次のような場合に役立ちます。

  • モデルの忠実度やシミュレーションのパフォーマンスを改善するためにこうした表現の詳細が必要である。

  • Simscape 言語を使用して独自のカスタム Simscape コンポーネントを作成している。

  • Simscape のモデル化やシミュレーションの失敗のトラブルシューティングが必要である。

数学的表現は物理シミュレーションの基礎です。シミュレーションの詳細は、Simscape でのシミュレーションの仕組みを参照してください。

微分システム、微分代数システム、代数システム

物理システムの数学表現には "常微分方程式" (ODE)、"代数方程式" またはその両方が含まれます。

  • ODE は "システム変数" の変化率を決定し、システム変数の時間微分の一部またはすべてを含みます。

  • 代数方程式はシステム変数間の機能的拘束を指定しますが、システム変数の時間微分は含みません。

  • 代数拘束がない場合、システムは微分システム (ODE) です。

  • ODE がない場合、システムは代数システムです。

  • ODE と代数拘束の両方がある場合、システムは複合の "微分代数" (DAE) システムです。

システム変数は、システム方程式における時間微分の有無によって、微分的または代数的となります。

剛性

求める解はゆっくり変化しているのに、許容誤差の範囲内で急速に変動する他の解がある場合、数学的な問題は "スティッフ" です。スティッフなシステムには、大きさの非常に異なったいくつかの固有の時間スケールがあります [1]

スティッフな物理システムには通常の意味で "スティッフ" な動作をするコンポーネントが 1 つまたは複数あります (大きいバネ定数をもつバネなど)。数学的に等価なものとして、擬似非圧縮性の流体や低い電気インダクタンスなどがあります。このようなシステムでは多くの場合、コンポーネントやモードの一部で高周波の振動が発生します。

イベントとゼロクロッシング

イベントとは、たとえばバルブの開放や急停止など、時間の経過に伴うシステムの状態やダイナミクスの不連続な変化です。Simscape 言語でイベントがどのように表現されるかの詳細については、Discrete Event Modelingを参照してください。

"ゼロクロッシング" は特定のイベント タイプで、数学関数の値の符号変化により表されます。可変ステップ ソルバーでは、ゼロクロッシング イベントが検出されると、ステップが小さくなります。ステップを小さくすると、ゼロクロッシングを引き起こすダイナミクスを正確に捉えるのに役立ちますが、シミュレーション速度は著しく低下します。ゼロクロッシングの検出と解析のさまざまな手法は、シミュレーションの速度と精度の適切なバランスをとるのに役立ちます。詳細については、Simscape モデルでのゼロクロッシングの管理を参照してください。

Simscape の表現の取り扱い

Simscape モデルは、1 つ以上の物理システムを物理ネットワークとして表す一連の方程式に相当します。

Simscape モデルでのゼロクロッシングの管理

モデルには、次のような複数のソースから生ずるゼロクロッシング条件が含まれます。

  • それぞれのブロック ライブラリからコピーされた Simscape ブロックと Simulink® ブロック

  • Simscape 言語でプログラムされたカスタム ブロック

Simulink ソフトウェアには、ゼロクロッシング イベントを管理するグローバルな手法があります。詳細については、ゼロクロッシング検出を参照してください。

ゼロクロッシング検出はブロック単位で無効にすることも、モデル全体でグローバルに無効にすることもできます。ゼロクロッシング検出を行うと、多くの場合シミュレーションの精度は改善しますが、シミュレーションの速度が低下する場合があります。

ヒント

ゼロクロッシングの正確な回数がモデルにおいて重要な場合は、ゼロクロッシング検出を有効のままにします。無効にした場合、シミュレーションの精度が大幅に低下する場合があります。

Simscape モデルでのゼロクロッシングの検出と最小化

汎用的な Simulink の手法に加え、Simscape ソフトウェアにはモデルのゼロクロッシングを検出し管理することができる固有のツールがあります。

  • シミュレーション前には、統計ビューアーを使用してモデル内で発生する可能性のあるゼロクロッシング信号を特定できます。通常これらの信号は、不連続点を含む演算子や関数 (比較演算子、関数 abs、関数 sqrt など) から生成されます。シミュレーション中には、これらの信号でゼロクロッシング イベントが生成されないこともあれば、1 つ以上の信号によって複数のゼロクロッシング イベントが生成されることもあります。詳細については、モデル統計の表示を参照してください。

  • モデルのシミュレーション データのログを記録しているときには、[シミュレーション統計のログ記録] オプションを選択できます。これにより、データ ログにシミュレーション中の実際のゼロクロッシング データが含められます。詳細については、シミュレーション統計のログ作成を参照してください。

    Simscape 結果エクスプローラーを使用すると、シミュレーション中に記録されたゼロクロッシング データにアクセスし、解析することができます。詳細については、「Simscape 結果エクスプローラー」を参照してください。

  • 関数 sscprintzcs は、シミュレーション中に検出されたゼロクロッシングに関する情報を、記録されたシミュレーション データに基づいて出力します。この関数を呼び出すには、シミュレーション統計データを含むシミュレーション ログ変数が現在のワークスペースになければなりません。詳細と例については、sscprintzcs を参照してください。

ゼロクロッシングの管理は、モデルをリアルタイム シミュレーション用に準備する場合に特に重要になります。このワークフローの詳細な例は、ゼロクロッシングの削減を参照してください。

Simscape 言語でのゼロクロッシング条件の有効化と無効化

Simscape 言語を使用して独自のカスタム ブロックのコードを記述する場合、不連続条件式の実装を切り替えることにより、モデルでのゼロクロッシング条件を作成するか、あるいは回避することができます。以下の方法があります。

  • 関係演算子を使用すると、ゼロクロッシング条件が作成されます。たとえば、演算子による関係式 a < b をプログラムすると、ゼロクロッシング条件が作成されます。

  • 関係演算子の関数を使用すると、ゼロクロッシング条件は作成されません。たとえば、関係演算子の関数 lt(a,b) をプログラムした場合、ゼロクロッシング条件は作成されません。特定の関数が Simscape 言語で使用されたときに不連続点が発生するかどうかの詳細については、equationsを参照してください。

メモ

イベントの叙述に lt(a,b) のような関係関数を使用すると、必ずゼロクロッシング条件が作成されます。イベントの叙述の詳細については、Discrete Event Modelingを参照してください。

参考文献

[1] Moler, C. B., Numerical Computing with MATLAB, Philadelphia, Society for Industrial and Applied Mathematics, 2004, chapter 7

[2] Horowitz, P., and Hill, W., The Art of Electronics, 2nd Ed., Cambridge, Cambridge University Press, 1989, chapter 2

[3] Brogan, W. L., Modern Control Theory, 2nd Ed., Englewood Cliffs, New Jersey, Prentice-Hall, 1985