Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Scope ブロックの一般的なタスク

シミュレーション結果を時間の経過に沿って可視化するには、Scope ブロックか Time Scope (DSP System Toolbox) ブロックを使用します。

複数の信号のスコープへの接続

複数の信号をスコープに接続するには、追加の信号を Scope ブロックにドラッグします。追加の端子が自動的に作成されます。

Animated GIF of automatically created input ports on a scope block

入力端子の数を指定するには、次を実行します。

  1. [Scope] ウィンドウを開きます。

  2. ツール バーから、[ファイル][入力端子の数][詳細] を選択します。

  3. 入力端子の数を最大 96 まで入力します。

非バーチャル バスおよびバス配列からの信号

非バーチャル バスおよびバス配列からの信号を Scope ブロックに接続できます。バス信号を表示するには、ノーマルまたはアクセラレータのシミュレーション モードを使用します。Scope ブロックに、各バス要素信号がバスに表示される順序で上から下に表示されます。入れ子にされたバス要素はフラットにされます。たとえば、このモデル内では、nestedBus 信号には constsubSignal および step 信号が要素として含まれています。subSignal サブバスには、chirp 信号と sine 信号がバス要素として含まれています。Scope ブロックでは、subSignal バスの 2 つの要素が const 信号と step 信号の間に表示されます。

Simulink model of a scope connected to the nestedBus, const, subSignal, chirp, sine, and step signals.

Scope window showing the four signals and their names in the Scope legend: nestedBus.const, nestedBus.subSignal.chirp, nestedBus.subSignal.sine, nestedBus.step.

Scope ブロックを使用したシミュレーション データの保存

この例では、Scope ブロックを使用して信号を MATLAB ワークスペースに保存する方法を説明します。Scope ブロックまたは Time Scope ブロックにこれらのステップを使用できます。Floating Scope またはスコープ ビューアーのデータを保存するには、フローティング スコープからのシミュレーション データの保存を参照してください。

vdp モデルを使用して、ワークスペースへのログ記録を有効にします。以下のコマンドに従うか、[Scope] ウィンドウで、[コンフィギュレーション プロパティ] ボタンをクリックして、[ログ] タブを開き、[ワークスペースにデータのログを作成] を有効にします。

open_system('vdp');
scopeConfig = get_param('vdp/Scope','ScopeConfiguration');
scopeConfig.DataLogging = true;
scopeConfig.DataLoggingSaveFormat = 'Dataset';
out = sim('vdp');

MATLAB コマンド ウィンドウで、out.ScopeData 構造体からのログ データを表示します。

x1_data = out.ScopeData{1}.Values.Data(:,1);
x1_time = out.ScopeData{1}.Values.Time;
plot(x1_time,x1_data)

実行中の表示の停止

この Simulink スナップショットを使用して、シミュレーションがバックグラウンドで実行している間にスコープの表示を停止します。

  1. スコープ ウィンドウを開いてシミュレーションを開始します。

  2. [シミュレーション][Simulink スナップショット] を選択します。

    左下のスコープ ウィンドウのステータスは [フリーズ] ですが、シミュレーションはバックグラウンドで引き続き実行されます。

  3. 停止された表示を操作します。たとえば、測定値を使用して、スコープ イメージをコピーしたり、ズーム インまたはズーム アウトを行います。

  4. 表示の静止を解除するには、[シミュレーション][Simulink スナップショット] を再度選択します。

スコープ イメージのコピー

この例では、vdp モデルを使用して、スコープ イメージをコピーして貼り付ける方法を説明します。

  1. Scope ブロックをモデルに追加します。

  2. 信号を Scope 端子に接続します。複数の信号のスコープへの接続を参照してください。たとえば、vdp モデルでは、信号 x1x2 をスコープに接続します。

  3. スコープ ウィンドウを開いて、シミュレーションを実行します。

    Scope window displaying the simulation results of the vdp model

  4. [ファイル][クリップボードにコピー] を選択します。

  5. イメージをドキュメントに貼り付けます。

    vdp scope visualization with a white background for printing

    既定では、[クリップボードにコピー] は、背景が白色で線が見やすい印刷対応バージョンのスコープを保存します。表示されているスコープ プロットを厳密に貼り付ける場合は、[ビュー][スタイル] を選択してから、[クリップボードへのコピーで色を保持] チェック ボックスを選択します。

信号の配列のプロット

この例では、スコープが信号の配列をプロットする方法を説明します。

この簡単なモデルでは、Sine Wave ブロックが Scope ブロックに接続されています。Sine Wave ブロックは、振幅が [10, 20; 30 40] の 4 つの信号を出力します。スコープには、配列内の各正弦波が行列の次数 (1,1)、(2,1)、(1,2)、(2,2) で別々に表示されます。

参照モデルのスコープ

この例では、参照モデルにおけるスコープの動作を説明します。参照モデルでスコープを使用するとき、シミュレーションを最上位モデルから開始したか、参照モデルのスコープから開始したかによって、スコープに表示される出力が変わります。

メモ

スコープ ウィンドウには、直近に開いた最上位モデルのシミュレーション結果が表示されます。Scope ブロックおよびビューアーの再生制御は、そのブロックまたはビューアーを含むモデルをシミュレートします。

この例では、sldemo_mdlref_counter モデルを、最上位モデルとして使用するとともに、sldemo_mdlref_basic モデルからの参照モデルとして使用します。

モデルを開きます。

openExample('simulink/FindMdlrefsFindReferencedModelsinModelReferenceHierarchyExample','supportingfile','sldemo_mdlref_basic')

CounterA ブロックをダブルクリックします。キャンバス上部の階層リンクからわかるとおり、sldemo_mdlref_counter モデルが参照モデルとして開きます。

sldemo_mdlref_counter model with the breadcrumb highlighted to show you are in the CounterA referenced model block from the sldemo_mdlref_basic model.

メインの [実行] ボタンを使用してシミュレーションを実行し、ScopeA スコープを開きます。スコープに、モデル全体のデータが可視化されます。

Scope window with model simulation results

特定の参照モデルを単独で可視化する場合は、そのモデルを最上位モデルとして開きます。この例では、CounterA ブロックを右クリックして [最上位モデルとして開く] を選択します。モデルが別のウィンドウで開き、階層リンクに参照モデルの名前だけが表示されます。

sldemo_mdlref_counter model with the breadcrumb highlighted to show you are in a non-referenced version of the model

Simulink ウィンドウまたはスコープ ウィンドウからシミュレーションを実行すると、スコープに別のモデルへの参照なしでモデルが可視化されます。この場合、モデルの入力は常にゼロになります。

Scope window showing a constant zero line

Enabled Subsystem 内のスコープ

Enabled Subsystem ブロック内に配置すると、スコープはシミュレーション モードによって異なった動作をします。

  • ノーマル モード — スコープはサブシステムが有効になったときにデータをプロットします。サブシステムが無効になると、表示のプロットにギャップが示されます。

    Sample scope window with gaps where the subsystem is disabled

  • エクスターナル モード、アクセラレータ モード、ラピッド モード — スコープはサブシステムが有効になったときにデータをプロットします。表示では、ギャップは直線で接続されます。

    Sample scope window with straight lines where the subsystem is disabled

Scope の x 軸の変更

この例では、[時間範囲] および [時間表示オフセット] パラメーターを使用して Scope ブロックの x 軸の値を変更する方法を示します。[時間範囲] パラメーターは、表示されるシミュレーション時間を変更し、x 軸ラベルをオフセットします。[時間表示オフセット] パラメーターは x 軸で使用されるラベルを変更します。

Time Scope ブロック、Floating Scope ブロック、またはスコープ ビューアーでこの手順を使用することもできます。

モデルを開いて、シミュレーションを実行し、元のスコープ出力を表示します。シミュレーションは 10 のタイム ステップで実行され、タイム ステップごとに 1 ずつ増えていきます。

model = 'ModifyScopeXAxis';
open_system(model);
sim(model);
open_system([model,'/Scope']);

表示される時間範囲の変更

[時間範囲] パラメーターを 2 に変更します。以下のコマンドを実行するか、[Scope] ウィンドウで、[コンフィギュレーション プロパティ] ボタンをクリックし、[時間] タブに移動します。

scopeConfig = get_param([model,'/Scope'],'ScopeConfiguration');
scopeConfig.TimeSpan = '2';
sim(model);
open_system([model,'/Scope']);

スコープの x 軸には最後の 2 つのタイム ステップのみ表示され、x 軸がオフセットされて 0 ~ 2 が示されています。ボタン ツール バーには、x 軸が 8 でオフセットされることが示されています。このオフセットは、[時間表示オフセット] の値とは異なります。

[時間範囲] パラメーターは、シミュレーションの開始時に信号の初期化またはその他の起動タスクを可視化しない場合に役立ちます。[Span x-axis] ボタンをクリックしても、シミュレーション全体の時間範囲を確認できます。

x 軸ラベルのオフセット

[時間表示オフセット] パラメーターを 5 に変更します。また、以下のコマンドを使用するか、[Scope] ウィンドウで、[コンフィギュレーション プロパティ] ボタンをクリックし、[時間] タブを開きます。

scopeConfig.TimeDisplayOffset = '5';
sim(model);
open_system([model,'/Scope']);

ここでは、2 の同じ時間範囲が [Scope] に表示されていますが、x 軸ラベルは 5 でオフセットされ、5 から始まり 7 で終了しています。[Span x-axis] ボタンをクリックしても、x 軸ラベルは 5 から始まります。

スコープ表示での信号単位の表示

信号単位は、Inport ブロックと Outport ブロックを使用してモデル コンポーネントの境界 (Subsystem ブロックと Model ブロック) で指定できます。Simulink モデルでの単位の指定を参照してください。Scope ブロックは Outport ブロックまたは Outport ブロックから派生する信号に接続できます。この例では、Out1 ブロックの [単位] プロパティが m/s に設定されています。

Sample model with units specified

スコープ表示での単位の表示

  1. [Scope] ウィンドウのツール バーで、[コンフィギュレーション プロパティ] ボタン を選択します。

  2. [コンフィギュレーション プロパティ] で次を行います。[Scope] ダイアログ ボックスで、[表示] タブを選択します。

  3. [Y ラベル] ボックスに、Y 軸のタイトルに続けて (%<SignalUnits>) を入力します。たとえば、次のように入力します。

    Velocity (%<SignalUnits>)
    
  4. [OK] または [適用] をクリックします。

    信号単位は、y 軸ラベルにメートル/秒 (m/s) として、[カーソルの測定] パネルにミリメートル/秒 (mm/s) として表示されます。

    Scope window with the units displayed in the cursor measurements and y-axis label.

Simulink ツールストリップから、[デバッグ][情報のオーバーレイ] の [単位] を選択することもできます。[Y ラベル] プロパティに (%<SignalUnits>) を入力する必要はありません。

プログラムによるスコープ表示での単位の表示

  1. スコープのプロパティを取得します。コマンド ウィンドウで次を入力します。

    load_system('my_model')
    s = get_param('my_model/Scope','ScopeConfiguration');
    
  2. y 軸ラベルを最初の表示に追加します。

    s.ActiveDisplay = 1
    s.YLabel = 'Velocity (%<SignalUnits>)';
    

モデル パラメーター ShowPortUnits'on' に設定することもできます。モデル内のすべてのスコープは、(%<SignalUnits>)[Y ラベル] プロパティにあるかないかに関係なく、表示領域に単位を示します。

load_system('my_model')
get_param('my_model','ShowPortUnits')
ans =
off
set_param('my_model', 'ShowPortUnits','on')
ans =
on

記録されたデータ オブジェクトからの単位の特定

シミュレーション データをスコープから [データセット] 形式で保存する場合、単位情報を timeseries オブジェクトの DataInfo フィールドで見つけることができます。

メモ

スコープがサポートする信号の単位は [データセット] ログ形式のみであり、古いログ形式の [配列][構造体][時間付き構造体] はサポートしていません。

  1. [Scope] ウィンドウのツール バーで、[コンフィギュレーション プロパティ] ボタン を選択します。

  2. [コンフィギュレーション プロパティ] ウィンドウで、[ログ] タブを選択します。

  3. [ワークスペースにデータのログを作成] チェック ボックスをオンにします。テキスト ボックスにシミュレーション データを保存する変数名を入力します。たとえば「ScopeData」と入力します。

  4. [Scope] ウィンドウのツール バーで、[実行] ボタン を選択します。

  5. コマンド ウィンドウで次を入力します。

    ScopeData.getElement(1).Values.DataInfo
    Package: tsdata
    Common Properties:
                 Units: m/s (Simulink.SimulationData.Unit)
         Interpolation: linear (tsdata.interpolation)
    

単位の異なる信号のスコープへの接続

スコープに複数の端子がある場合、Simulink® は各端子が 1 つの単位のみでデータを受け取るようにします。(たとえば Bus Creator ブロックを使用することで) 信号をさまざまな単位で結合しようとすると、Simulink はエラーを返します。

スコープに表示される単位は端子と表示領域の数に依存します。

  • 端子の数は表示領域の数と等しい — 1 つの端子は y 軸ラベルに示されるその端子信号の単位で 1 つの表示領域に割り当てられます。

  • 表示領域の数よりも多い — 1 つの端子は他の信号に割り当てられた最後の表示領域と共に、1 つの表示領域に割り当てられます。最後の y 軸ラベルにさまざまな単位がコンマ区切りリストとして表示されます。

表示領域の数とレイアウトの選択

  1. [Scope] ウィンドウで、[コンフィギュレーション プロパティ] ボタン を選択します。

  2. [コンフィギュレーション プロパティ] ダイアログ ボックスで、[メイン] タブを選択してから [レイアウト] ボタンを選択します。

  3. 必要な表示領域の数とレイアウトを選択します。

    1 行または 1 列に 4 つを超える表示領域を選択できます。レイアウト内をクリックしてマウス ポインターをドラッグし、最大 16 行 16 列までレイアウトを拡張します。

    Animated GIF of modifying the layout of the scope window

  4. クリックすると、選択したレイアウトが [Scope] ウィンドウに適用されます。

MATLAB デスクトップへの [Scope] ウィンドウのドックとアンドック

  1. [Scope] ウィンドウの右上で、[Scope をドックに入れる] ボタンをクリックします。

    [Scope] ウィンドウは MATLAB® デスクトップでコマンド ウィンドウの上に配置されます。

  2. [Scope アクションの表示] ボタンをクリックしてから、[Scope をドックから出す] をクリックします。

    Undock scope value in the dropdown menu

参考

| |

関連するトピック