2

いくつかの異なるサンプルレートの離散状態のブロックと、連続状態を使用するいくつかのセクションを持つSimulinkxPCターゲットアプリケーションがあります。連続状態を維持するという私の意図は、より良い数値積分のためです。

問題の原因:1つのブロックが非常に高速(500 Hz)でデバイスを読み取っています。アプリケーションの残りの部分は、より遅いレート(たとえば、25または50 Hz)で実行できます。これは、最高のレートで実行するのはやり過ぎであり、プロセッサはアプリケーションサイクル全体を.002秒に圧縮できないためです。より速いレートの。だから私は両方のレートが必要です。ただし、連続状態は、アプリケーション全体のより高速な離散レートでSimulinkの定義により実行されます。これは、私が継続的な状態を持っているところならどこでも、25Hzで実行できるのに500Hzで実行することを余儀なくされていることを意味します。

xPCターゲットの連続状態をアプリケーションで最速ではないレートに強制する方法はありますか?または、代わりに、特定のブロックをアプリケーションの他の部分よりも速い速度で実行できるようにする方法はありますか?

4

3 に答える 3

2

あなたは間違った方法で連続ソルバーについて考えています-連続はそれが可能な限り速く実行されることを意味するだけではありません-それは方程式を解くために離散とは根本的に異なるアルゴリズムを使用します。このため、少なくともディスクリートソルバーと同じ速度で実行する必要があります。

Simulinkの使用から:

連続ソルバーは、数値積分を使用して、前のタイムステップの状態と状態の導関数から現在のタイムステップのモデルの連続状態を計算します。連続ソルバーは、モデルのブロックに依存して、各タイムステップでのモデルの離散状態の値を計算します。

数学者は、動的システムの連続状態を表す常微分方程式(ODE)を解くためのさまざまな数値積分手法を開発してきました。Simulinkは、固定ステップおよび可変ステップの連続ソルバーの広範なセットを提供し、それぞれが特定のODEソリューションメソッドを実装します(ソルバーを参照)。

離散ソルバーは、主に純粋な離散モデルを解くために存在します。モデルの次のシミュレーション時間ステップを計算しますが、それ以外は計算しません。それらは連続状態を計算せず、モデルの離散状態を更新するためにモデルのブロックに依存します。

つまり、結果として、最速の離散ソルバーよりもゆっくりと連続実行するのは十分ではありません。そうでない場合、定義上、連続ではありませんそれらを連続として指定している理由を再検討する必要があります。

連続ソルバーの速度を落として何を達成しようとしていますか?これはシミュレーションの時間/パフォーマンスの問題ですか?

-アダム

于 2008-09-04T05:55:28.803 に答える
0

これについての私の見解は、それができないということです。これにアプローチする1つの方法は、連続状態を離散状態(おそらく、中間レート、たとえば100 Hz)に置き換え、精度の低下に耐えられることを確認することです。

どういうわけか、ブロックを分離して、より速い速度で別々に実行することは可能かもしれませんが、私にはわかりません。

于 2008-09-04T05:46:17.467 に答える
0

コンピュータのようなデジタル プロセッサでは、真に連続的な計算は不可能です。

MATLAB/Simulink が「連続」で意味することは、「アプリケーションで離散化エラーが非常に小さくなるように、どの離散ステップ サイズが十分に小さいかを (動的に) 推測しようとする」ということです。

アプリケーションを知っていて、20ms (50Hz) で十分小さいことがわかっている場合は、ディスクリート - 50Hz を使用してください。

于 2009-10-15T17:39:17.063 に答える