3

Simulink で別の問題があります。

実行中にシミュレーションを一時停止することはできますか? 「Unit Delay」を介していくつかのステップを構築した後、次のステップが完了する前にシミュレーションを一時停止したいと考えています (ユーザーが表示する値を表示するため)。たとえば、シミュレーションをクリックすると、1 つのステップに進み、手順が繰り返されます。最終的に、これには何らかのデバッグ機能が必要です。

これがどのように実現できるか、私はあまり確信が持てません。シミュレーションパラメータのどこかにあると思いますが、どこでどのように?

4

1 に答える 1

7

私が知っている3つの方法があります。

方法 1: シミュレーションをまったく一時停止しないでください。代わりに、適切な行でスコープを使用して、シミュレーションで何が起こったかを知るのに十分な情報を提供してください。

利点: 実行の順序やシミュレーションの一時停止によって複雑な結果が生じることはありません。

短所: 特にすべてのシミュレーション ステップが実行されるわけではない場合、頭の中でさまざまな範囲の行を "時間同期" するのは難しい場合があります。(これは、実際には散布図であるにもかかわらず、スコープ ブロック グラフがステップ関数として表示されるという事実によるものです。

方法 2: 組み込みの Simulink デバッガーを使用します。(期待しないでください)。使用しているモデルの [ツール] > [Simulink デバッガー] メニュー オプションからこれを開きます。このツールを使用すると、特定のブロックにブレークポイントを設定したり、一度に 1 つのブロックをステップ実行したり、2 つの組み合わせを実行したりできます。

利点: シミュレーションを細かく制御できます。

欠点: 実際には、このツールは使い方がわかりにくく、Matlab をクラッシュさせやすいと思います。また、実行順序にも注意してください。

方法 3: シミュレーションの実行順序の最初に埋め込み Matlab 関数を作成します。次に例を示します。

関数 y=func(x); y=x;

シミュレーションの開始時に信号線の 1 つにこの関数をドロップします (実行順序を強制するため)。次に、y=x; にデバッグ ポイントを置きます。ライン。これで、シミュレーションがこの行に到達するたびに、シミュレーションが一時停止され、Matlab エディターの [続行] ボタンをクリックするのを待ちます。

利点: 信頼性が高く、簡単です。

短所: 実行順序に注意してください。

実行順序:

Simulink での実行順序に慣れていない場合は、モデル メニューから [Format] > [Block Display] > [Sorted Order] をオンにすることをお勧めします。これにより、シミュレーションでブロックが実行される順序を何らかの方法で示す暗号化された数字/文字コードが各ブロックに配置されます。モデルとレイアウトによっては、これらの数字/文字コードが意味をなす場合とそうでない場合があります。このソート順表示を一般的に使用することはお勧めしません。代わりに、Simulink が並べ替え順序/実行順序を決定する方法を学び、理解することをお勧めします。

覚えておくべき重要なことは、デバッグ ポイント (Simulink デバッガーまたは組み込みの Matlab を使用した天気) が実行順序の一部であることです。これは、デバッグ ポイントに到達したときに、そのポイント以降のブロックの状態が更新されていないことを意味します。これは非常に理にかなっていますが、驚くかもしれませんが、ディスプレイとスコープは、実行の早い段階でブロックによって供給される信号線に接続されている場合でも、状態を更新する最後のブロックの一部であることが多いということです。これは、それらのディスプレイとスコープが (非アトミック) サブシステムの内部にあり、デバッグ ポイントがそのサブシステムの外部にある場合でも当てはまります。画面またはスコープに表示される値が、シミュレーションの最後のタイム ステップからのものである可能性がある状況に陥る可能性があります。

これをどのように回避しますか?ディスプレイやスコープを含むすべてのシミュレーションを Atomic Subsystem 内に配置します。次に、デバッグ ポイントをこのサブシステムの外に置きます。これにより、デバッグ ポイントに到達するたびに、すべてのブロック (ディスプレイとスコープを含む) の状態が一貫していることが保証されます。

これが意味をなさない場合は、私に知らせてください。

于 2011-02-07T15:58:54.967 に答える