Simulink シミュレーション エンジンがどのように機能するかを理解したいと思います。離散イベント シミュレーション メカニズムを使用していますか (連続時間はどのように処理されますか?)。静的サイクルベースのコード生成に依存していますか? または ?
2 に答える
最初のサイクルの前に、ブロックの実行順序を決定します (他のブロックからの入力を必要としないものから始めます)。
各サイクルで、入力とブロックのコードに基づいて各ブロックの出力を計算します。各ブロックのコードは静的であり、モデルをまとめる前にほとんど存在していました。(ブロックオプションが実際にコードを変更するのか、実行時のみに評価されるのか、反復ごとにわからない。)
シミュレーション ステップが可変の場合、各サイクルよりも、主にモデルの変数の変化速度に基づいて次のステップのサイズが計算されます。変化が速いほど、ステップ サイズを小さくする必要があるため、一時的に高い導関数が必要以上に長く続くとは想定されません。(この計算の詳細はわかりません。おそらく他の誰かが光を当てることができますか?) したがって、「連続」シミュレーション、または可変ステップは、Simulink がサイクルごとに十分に小さいステップ サイズについて知識に基づいた推測を行うことを意味するだけです。時間の量子化誤差を許容レベルに保つため。コンピュータのプロセッサなど、完全にデジタル化されたハードウェアでは、真に連続的なシミュレーションは文字通り不可能です。
私は確かに専門家ではありませんが、答えはおそらく「場合による」でしょう。
Simulink は確かにいくつかの目的で数値積分を使用しますが、一部の積分器では最終的に離散時間ステップになります。他の積分器では、シミュレーションの実行中に時間ステップを変更できます。これは、「硬い」方程式セットをシミュレートする場合に特に重要です。