最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

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

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

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

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

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

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

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

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

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

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

この例では、Scope ブロックを使用して信号を MATLAB ワークスペースに保存する方法を説明します。

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

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

MATLAB コマンド ウィンドウで、SimulationOutput オブジェクトからのログ データを表示します。

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. スコープ ウィンドウを開いて、シミュレーションを実行します。

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

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

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

信号の配列のプロット

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

この簡単なモデルでは、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 モデルからの参照モデルとして使用します。

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

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

スコープの [実行] ボタンを使用してシミュレーションを再実行すると、スコープには、参照モデルが単独で開かれているかのようなデータのみが可視化されます。Scope ブロックおよびビューアーの再生制御は、そのブロックまたはビューアーを含むモデルをシミュレートします。この場合、参照モデルの入力は、最上位モデルがないので、常にゼロになります。

メモ

スコープから [実行] をクリックした場合、モデルがバックグラウンドで実行されていることがモデルに表示されません。シミュレーション ステータスについては、スコープのステータス バーを確認してください。

Enabled Subsystem 内のスコープ

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

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

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

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

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

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

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

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

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

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

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

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

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

シミュレーション データをスコープから [データセット] 形式で保存する場合、単位情報を時系列オブジェクトの 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 列までレイアウトを拡張します。

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

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

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

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

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

参考

| |

関連するトピック